Михаил Флёнов - Linux глазами хакера
- Название:Linux глазами хакера
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2005
- Город:Санкт-Петербург
- ISBN:5-94157-635-8
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Михаил Флёнов - Linux глазами хакера краткое содержание
Рассмотрены вопросы настройки ОС Linux на максимальную производительность и безопасность. Описаны потенциальные уязвимости и рекомендации по предотвращению возможных атак. Дается подробное описание настройки прав доступа и конфигурирования сетевого экрана. Показано, как действовать при атаке или взломе системы, чтобы максимально быстро восстановить ее работоспособность и предотвратить потерю данных.
Для пользователей, администраторов и специалистов по безопасности
Linux глазами хакера - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Уровень может быть один из следующих:
□ * — протоколировать все сообщения системы;
□ 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.
# /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"
Здесь в кавычках указываются параметры. Чтобы добавить ключ -r
, измените строку следующим образом:
SYSLOGD_OPTIONS="-m 0 -r"
Если файл /etc/sysconfig/syslogсуществует, то в нем будет такая же строка, и вам достаточно внести изменения туда, и не надо будет трогать сценарий запуска /etc/rc.d/init.d/syslog.
Использование выделенного сервера для сохранения сообщений из журналов позволяет как скрыть записи, так и сделать их доступными для всеобщего просмотра. Дело в том, что сообщения передаются по сети в незашифрованном виде. Это не проблема, если вы отделены от Интернета сетевым экраном и злоумышленник не смог проникнуть внутрь сети. Но если ему удалось взломать хотя бы один компьютер в защищенной сети, то хакер может установить программу прослушивания и увидеть все сообщения в журналах.
Вопрос решается достаточно просто, если зашифровать трафик, направив его через туннель SSL. Самый простой вариант — выполнить следующие действия:
□ на сервере, отправляющем сообщения, в конфигурационном файле прописываем пересылку сообщений на локальный компьютер:
*.* @localhost
□ все сообщения будут передаваться на локальный компьютер, т.е. самому себе на 514 порт UDP. Чтобы все работало верно, сервер не должен находиться в режиме приема сообщений, т.е. запущен без ключа -r
. Иначе порт 514 будет занят, а нам это не нужно;
□ на 514 порту локального компьютера запускаем stunnel
-клиент:
stunnel -c -d 127.0.0.1:514 -r loagserver:1050
Все сообщения, полученные на этот порт, будут шифроваться и передаваться на порт 1050 компьютера loagserver
. В вашем случае вместо имени loagserver
нужно указать адрес вашего сервера;
□ на компьютере loagserver
создаем stunnel
-сервер:
stunnel -d 1050 -r 127.0.0.1:514
После этих действий stunnel
-сервер будет получать зашифрованные сообщения на 1050 порт и в расшифрованном виде направлять их на порт 514. На сервере loagserver
сервис syslogd
должен быть запущен с ключом -r
для приема сообщений на 514 порту.
Теперь все сообщения будут передаваться по сети в зашифрованном виде.
12.5.7. logrotate
Чтобы файлы журнала слишком сильно не раздувались, в Linux включена утилита logrotate
. Рассмотрим принцип ее работы на примере журнала /var/log/messages:
Интервал:
Закладка: