Чтение онлайн

ЖАНРЫ

Linux глазами хакера

Флёнов Михаил Евгеньевич

Шрифт:

□ 

authprith
— об использовании привилегированного доступа;

□ 

mail
— от почтовых программ;

□ 

cron
— от планировщиков задач
cron
и
at
;

□ 

daemon
— генерируются сервисами;

□ 

user
— от пользовательских программ;

□ 

uucp
— UUCP-сообщения (Unix To Unix Copy, копирование с Unix на Unix). В настоящее время практически не используется;

□ 

news
из новостей;

□ 

lpr
— поступает с принтеров.

Уровень может быть один из следующих:

□ * — протоколировать все сообщения системы;

□ debug — отладочная информация;

□ info — информационные сообщения;

□ notice — уведомления;

□ warn — предупреждения;

□ err — ошибки;

□ crit — критические сообщения;

□ alert — требуется немедленное вмешательство;

□ emerg — авария, дальнейшая работа невозможна.

В журнал попадают сообщения указанного уровня и выше. Например, установка значения

err
определяет, что в журнал будут попадать сообщения уровней err, crit и emerg.

Чем больше ошибок вы сохраняете, тем выше нагрузка на жесткий диск, да и расход ресурсов увеличивается. Для большей эффективности функционирования системы раздел /var, на котором хранятся журналы, лучше всего перенести на отдельный винчестер. Таким образом, запись в журналы и работа ОС сможет происходить параллельно. Но вы должны быть уверенными, что раздел /var содержит достаточное количество дискового пространства.

Я уже говорил, что в своих системах убираю журналы из расположения по умолчанию, что усложняет хакеру жизнь. Но этого недостаточно. Опытный взломщик просмотрит конфигурационный файл /etc/syslog.conf и найдет новое расположение журналов.

Но мы можем поступить еще умнее, и для этого достаточно штатных средств ОС Linux. В моей системе в сервисе cron установлено задание, по которому каждый час делается резервная копия директории /var. Таким образом, если хакер подчистит журнал, я легко смогу определить его по резервной копии.

Если у вас есть возможность установить в сети еще один Linux-сервер, то можно все сообщения журнала отправлять на специально выделенный компьютер, что будет еще более выгодным. Чтобы хакер смог подправить журнал, ему придется взламывать еще один сервер. А если он используется только для протоколирования и никаких лишних портов на нем не открыто, то взлом может оказаться слишком затруднительным.

Для сброса содержимого журнала по сети в файле /etc/services должна быть доступна строка:

syslog 514/udp

После этого открываем файл /etc/syslog.conf и добавляем следующую строку:

сообщения @адрес

Первый параметр указывает, какие сообщения нужно отправлять на сервер. Если вы хотите пересылать всю информацию, то в качестве этого параметра указывается

*.*
, если только критические, — то
*.crit
.

Второй параметр — это адрес сервера, на который будут отправляться сообщения журналов. Если вы хотите, чтобы все сообщения отправлялись на сервер Iog.myserver.com, то добавьте строку:

*.* @log.myserver.com

Но тут есть одна проблема — для определения IP-адреса необходим DNS. При загрузке системы сервис syslogd стартует раньше DNS, поэтому определение адреса окажется невозможным.

Чтобы решить эту задачу, соответствие IP-адреса и имени сервера можно прописать в файл /etc/hosts.

И последнее, на сервере служба syslogd должна быть запущена с ключом

– r
, который позволяет получать сообщения по сети и сохранять их в журнале. Для этого нужно изменить сценарий запуска сервиса. Напоминаю, что все сценарии хранятся в директории /etc/rc.d/init.d/, и для syslogd это файл syslog, основное содержимое которого можно увидеть в листинге 12.4.

Листинг 12.4. Содержимое файла /etc/rc.d/initd/syslog

# /bin/bash

. /etc/init.d/functions

[ -f /sbin/syslogd ] || exit 0

[ -f /sbin/klogd ] || exit 0

# Source config

# Загрузка конфигурационного файла

if [ -f /etc/sysconfig/syslog ] ; then

 . /etc/sysconfig/syslog

else

 SYSLOGD_OPTIONS="-m 0"

 KLOGD_OPTIONS="-2"

fi

RETVAL=0

umask 077

start {

 echo -n $"Starting system logger: "

 daemon syslogd $SYSLOGD_OPTIONS

 RETVAL=$?

 echo

 echo -n $"Starting kernel logger: "

 daemon klogd $KLOGD_OPTIONS

 echo

 [ $RETVAL -eq 0 ] && touch /var/lock/subsys/syslog

 return $RETVAL

}

stop {

 # Команды остановки сервиса

}

rhstatus {

 # Команды вывода состояния

}

restart {

 stop

 start

}

...

...

Самое интересное спрятано в следующих строчках:

if [ -f /etc/sysconfig/syslog ] ; then

 . /etc/sysconfig/syslog

else

 SYSLOGD_OPTIONS="-m 0"

 KLOGD_OPTIONS="-2"

fi

Здесь происходит проверка. Если файл /etc/sysconfig/syslog существует, то используются опции загрузки из этого файла, иначе явно задаются в строке:

SYSLOGD_OPTIONS="-m 0"

Поделиться с друзьями: