Ключевые слова:rootkit, security, rhel, redhat, linux, (найти похожие документы)
From: Фролов Денис
Date: Mon, 23 Oct 2010 17:02:14 +0000 (UTC)
Subject: Общие методы повышения безопасности сервера в RHEL, CentOS, Fedora
Оригинал: http://www.redhat-club.org/Articles/DenisFrolov/SecurityUp
Борьба с руткитами в системе
Rootkit Hunter
Для выявления аномалий в работе сервера я рекомендую установить ПО
rkhunter (Root Kit Hunter) скачать его можно с сервера
http://www.rootkit.nl/ либо
http://download.fedora.redhat.com/pub/fedora/linux/extras/5/SRPMS/
Данная программа позволяет:
1. Обнаруживать rootkit и backdoor в системе.
2. Сравнивает контрольные суммы исполняемых системных файлов со своей
базой.
3. Проверяет наличие новых пользователей в системе.
4. Проверяет наличие устаревшего ПО установленного с системе.
5. Проверяет права файлов на наличие аномалий.
При первом запуске в системе программа сообщит, что не имеет БД
пользователей и создаст ее. При повторном запуске программа будет
сравнивать имеющихся пользователей с этой базой.
Запуск
rkhunter -c
полностью проверит систему.
По умолчанию при установке rkhunter прописывает себя в cron на
ежедневный запуск с отправкой результатов работы пользователю root.
Т.к. постоянно выходят новые ОС и обновления ПО то программе необходимо
обновлять информацию о наиболее свежих версиях ПО и MD5 суммах. Для
обновления базы запустите
rkhunter --update
Внимание! Проверьте, что ваш [25]FireWall разрешает соединения на 80
порт к списку серверов из файла /var/rkhunter/db/mirrors.dat
Chkrootkit
Существует еще одна программа осуществляющая обнаружения троянов в
системе.
Она называется chkrootkit загрузить ее можно с
http://www.chkrootkit.org/ либо с
http://download.fedora.redhat.com/pub/fedora/linux/extras/5/SRPMS/
Возможностей для проверки у данной программы поменьше, но я рекомендую
использовать две эти программы в комплексе.
После установки просто выполните команду:
chkrootkit
Удаление "лишних" пользователей.
По умолчанию для работы большинства служб с системе создаются учетные
записи пользователей под которыми данные службы будут функционировать.
Например если вы не используете службу NTP удалите соответствующего
пользователя и группу.
userdel ntp
groupdel ntp
Вот примерный список пользователей и групп, который обязательно следует
проверить на предмет использования в вашей системе, в случае если
данные пользователи не используются их следует удалить:
adm
news
operator
games
gopher
rpc
rpcuser
pcap
amanda
webalizer
named
dovecot
mailman
postfix
squid
ntp
ftp
Изменение прав на стартовые скрипты
По умолчанию на файлы в каталоге /etc/rc.d/init.d стоят права 755, что
позволяет любому пользователю читать стартовые скрипты приложений.
Рекомендуется выставить права на файлы в данном каталоге 700:
cd /etc/rc.d/init.d
chmod 700 *
Контроль SUID
Для ежедневного контроля за появлением подозрительных файлов с
установленным SUID битом используйте sxid.
После установки отредактируйте файл /etc/sxid.conf:
SEARCH="/" # Задаем корневой каталог в котором будет производиться поиск
EXCLUDE="/proc /mnt /cdrom /floppy" # Исключать следующие каталоги из проверки
EMAIL="root" # Уведомления о событиях будут отправляться пользователю root
ALWAYS_NOTIFY="no" # Посылать уведомления если изменений не обнаружено
LOG_FILE="/var/log/sxid.log" # Где будет храниться файл журнала событий
KEEP_LOGS="5" # Задает количество файлов ротаций логов
ALWAYS_ROTATE="no" # Всегда заменять файл логов ,даже если изменений не произошло
FORBIDDEN="/home /tmp" # Указывает каталоги в которых не должно содержаться SUID-ных файлов
ENFORCE="no" # Удалять SUID-ный бит с файлов в каталогах где он запрещен
LISTALL="no" # При указании YES посылает полный отчет в соответствии с изменениями
IGNORE_DIRS="/home" # Игнорирует SUID-ный бит на перечисленных каталогах
MAIL_PROG="/bin/mail" # Указывает почтовую программу для отправки уведомлений
Контроль целостности
Внедрите систему контроля целостности файлов, например AIDE.
Файл конфигурации находится в /etc/aide.conf Указывает каталог в
котором будет храниться база контрольных сумм
@@define DBDIR /var/lib/aide
Задаем в каком файле будет храниться информация о контрольных суммах,
времени модификации защищаемых файлах и каталогах
database=file::@@{DBDIR}/aide.db.gz
В данном файле будет храниться информация о файлах при запуске процесса
инициализации aide--init
database_out=file:@@{DBDIR}/aide.db.new.gz
Работать со сжатым форматом файлов
gzip_dbout=yes
Задаем уровень детализации
verbose=5
Указываем файл в который будет сохраняться информация о сканировании
report_url=file;/var/log/aide.log
Также выводить информацию на экран
report_url=stdout
Создаем шаблон
NORMAL=R+b+sha1
Проверяем каталог /boot по алгоритму описанному с помощью шаблона NORMAL
/boot NORMAL
Можно также указать какие проверки проводить в каталоге с помощью
предопределенных проверок
/etc p+i+u+g
Можно исключить отдельные файлы из области проверки
!/etc/mtab
После правки файла конфигурации вам необходимо создать базу защищаемых
файлов.
Выполните
aide --init
Инициализация базы может занять много времени.
Для последующей проверки выполняйте:
aide --check
Установка пакетов программ
Я рекомендую устанавливать пакеты из rpm. При данном подходе вы
получаете следующие преимущества:
1. Простота установки. rpm -ihv <пакет>
2. Простота обновления пакета. rpm -Uhv <пакет>
3. Легко получить информацию о принадлежности файла к какому-либо
пакету. rpm -qf <пакет>
4. Легко получить информацию о пакете rpm -qi <пакет> и rpm -q <пакет>
5. Легко обновлять пакеты на серверах, где не установлено необходимых
библиотек для компиляции.
6. Можно быстро обновить пакет на нескольких серверах, без
необходимости компиляции на каждом из них.
7. Простота удаления пакета. rpm -e <пакет>
8. Вывести полный список установленных пакетов. rpm -qa
9. Посмотреть список файлов в пакете. rpm -ql <пакет>
Такая гибкость в деле управления пакетами позволяет проводить
первоначальный контроль целостности системы (rpm -V <пакет>).
Наиболее часто противники rpm говорят о такой проблеме: "Пакет
скомпилированн без необходимых мне параметров." Существует достаточно
простое решение данной проблемы:
1. Возьмите src.rpm - это исходные тексты пакета со spec файлом и патчами.
2. Установите его rpm -i <пакет>.src.rpm
3. Зайдите в каталог /usr/src/redhat/SPECS/ и подправьте опции с
которыми собирается пакет в файле <пакет>.spec.
4. Затем выполните rpmbuild -ba <пакет>.spec и пакет будет пересобран
с необходимыми вам опциями. После сборки <пакет>.rpm будет
находиться в каталоге /usr/src/redhat/RPMS/.
Параметры TCP/IP
Для затруднения идентификации используемой ОС необходимо внести
следующие изменения в файл /etc/sysctl.conf
Игнорируем бродкастовые ICMP пакеты
net.ipv4.icmp_echo_ignore_broadcasts = 1
Блокируем TCP SYN атаки
net.ipv4.tcp_syncookies = 1
Блокируем ICMP редиректы
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
Отключаем UpTime
net.ipv4.tcp_timestamps = 0
Меняем TTL (Time to live) с 64 на 128
net.ipv4.ip_default_ttl = 128
Скорость генерации ICMP
net.ipv4.icmp_ratelimit = 70
Для вступления изменений в силу перезагрузите компьютер либо выполните sysctl -p.
Вывод
Если вы хотите использовать активную защиту используйте систему
portsentry либо psad которые помогают блокировать ip адрес
злоумышленника осуществляющего сканирование вашей системы.
Периодически сами осуществляйте сканирование своего сервера системами
nmap,nessus,xspider для обнаружения уязвимостей в вашей системе, а
также для того чтобы проверить эффективность вашей системы обнаружения
вторжений.
Обязательно установите syslog сервер на который ваши сервера будут
посылать сообщения о всех важных событиях.
Автоматизируйте процесс создания резервных копий важных данных (БД,
файлы конфигурации, пользовательские данные).
Стоит также прочитать документацию
http://www.rhd.ru/docs/manuals/enterprise/RHEL-4-Manual/
Может распространяться свободно при указании авторства.