Общие Методы Повышения Безопасности Сервера RHEL, CentOS, Fedora

В данном разделе даны рекомендации которые помогут повысить уровень безопасности сервера.

Борьба с руткитами в системе

Rootkit Hunter

Для выявления аномалий в работе сервера я рекомендую установить rkhunter (Root Kit Hunter).

Данная программа позволяет:

  1. Обнаруживать rootkit и backdoor в системе.
  2. Сравнивает контрольные суммы исполняемых системных файлов со своей базой.
  3. Проверяет наличие новых пользователей в системе.
  4. Проверяет наличие устаревшего ПО установленного с системе.
  5. Проверяет права файлов на наличие аномалий.

При первом запуске в системе программа сообщит, что не имеет БД пользователей и создаст ее. При повторном запуске программа будет сравнивать имеющихся пользователей с этой базой.

Запуск

rkhunter -c

полностью проверит систему.

По умолчанию при установке rkhunter прописывает себя в cron на ежедневный запуск с отправкой результатов работы пользователю root.

Т.к. постоянно выходят новые операционные системы и обновления программного обеспечения, то программе необходимо обновлять информацию о наиболее свежих версиях ПО и MD5 суммах. Для обновления базы запустите:

rkhunter --update

Внимание! Проверьте, что ваш межсетевой экран разрешает соединения на 80 порт к списку серверов из файла /var/rkhunter/db/mirrors.dat.

Общие Методы Повышения Безопасности Сервера RHEL, CentOS, Fedora - rkhunter

Chkrootkit

Существует еще одна программа осуществляющая обнаружения троянов в системе – chkrootkit.

Возможностей для проверки у данной программы поменьше, но я рекомендую использовать две эти программы в комплексе.

После установки просто выполните команду:

# chkrootkit

Общие Методы Повышения Безопасности Сервера RHEL, CentOS, Fedora - 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. При данном подходе вы получаете следующие преимущества:

Простота установки:

# rpm -ihv <пакет>

Простота обновления пакета

# rpm -Uhv <пакет>

Легко получить информацию о принадлежности файла к какому-либо пакету:

# rpm -qf <пакет>

Легко получить информацию о пакете:

# rpm -qi <пакет>
# rpm -q <пакет>

Легко обновлять пакеты на серверах, где не установлено необходимых библиотек для компиляции.

Можно быстро обновить пакет на нескольких серверах, без необходимости компиляции на каждом из них.

Простота удаления пакета:

# rpm -e <пакет>

Вывести полный список установленных пакетов:

# rpm -qa

Посмотреть список файлов в пакете:

# 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-сервер, на который ваши сервера будут посылать сообщения обо всех важных событиях.

Автоматизируйте процесс создания резервных копий важных данных (БД, файлы конфигурации, пользовательские данные).

Автор: Денис Фролов

Статьи по Теме

Категории
Поиск