Оригинал: «20 Linux Server Hardening Security Tips»
Автор: Vivek Gite
Дата публикации: 30 октября 2009 г.
Перевод: Н.Ромоданов
Дата перевода: ноябрь 2009 г.
Поддержание безопасности Linux сервера на высоком уровне важно для сохранения от рук взломщиков (хакеров) ваших данных, интеллектуальной собственности и экономии времени. Системный администратор отвечает за безопасность компьютера с Linux. В этой первой статье из серии, посвященной безопасности серверов Linux, приводится 20 советов по повышению безопасности Linux сервера, установленного с настройками, заданными по умолчанию.
№ 1: Шифруйте передаваемые данные
Все данные, передаваемые через сеть, открыты для мониторинга. По мере возможности зашифровывайте передаваемые данные с использованием пароля или ключей / сертификатов.
- Для передачи данных используйте scp / ssh (rsync) / sftp. Вы можете также с помощью специальных средств sshfs и fuse смонтировать в своем домашнем директории файловую систему для доступа к удаленному серверу.
- GnuPG, позволяющая зашифровывать и подписывать ваши данные и передаваемую информацию, имеет универсальную систему управления ключами, а также модули доступа для всех видов директорий, использующих открытые ключи.
- Fugu является графической оболочкой приложения Secure File Transfer (SFTP — защищенного протокола передачи файлов), работающего из командной строки. SFTP аналогичен FTP, но, в отличие от FTP, вся сессия зашифрована, что означает, что пароли не передаются в виде простой текстовой строки и, таким образом, менее уязвимы от перехвата третьей стороной. Еще одна возможность — FileZilla, кроссплатформенный клиент, который поддерживает протоколы FTP, FTP поверх SSL/TLS (FTPS) и SSH File Transfer Protocol (SFTP).
- OpenVPN является недорогой легковесной сетью VPN с использованием SSL.
- Конфигурирование и установка протокола SSL (Secure Server Layer) Https на сервере Lighttpd.
№ 1.1. Избегайте использовать FTP, Telnet и Rlogin / Rsh
В большинстве вариантов конфигурации сетей, можно в той же самой сети с помощью сниффера пакетов (packet sniffer) перехватывать имена пользователей, пароли, команды FTP / Telnet / RSH и пересылаемые файлы. Общим решением проблемы является использование OpenSSH , SFTP или FTPS (FTP поверх SSL), которые добавляют к FTP либо SSL, либо шифрование TLS. Для того, чтобы удалить NIS, rsh и другие устаревшие сервисы, наберите следующую команду:
# yum erase inetd xinetd ypserv tftp-server telnet-server rsh-serve
№ 2: Минимизируйте количество установленных приложений для минимизации числа уязвимостей
Вам действительно нужны все виды установленных веб сервисов? Избегайте устанавливать ненужные приложения с тем, чтобы избежать уязвимостей, имеющихся в этих приложениях. Воспользуйтесь менеджером пакетов RPM, таким как as yum, либо apt-get and/or dpkg to review, для просмотра всего набора установленных в системе программ. Удалите все ненужные пакеты.
# yum list installed # yum list packageName # yum remove packageName
или
# dpkg --list # dpkg --info packageName # apt-get remove packageName
№ 3: Один сетевой сервис на каждую ситстему или экземпляр виртуальной машины
Запускайте различные сетевые сервисы на отдельных серверах или отдельных экземплярах виртуальной машины. Это снизит количество сервисов, которые могут подвергнуться опасности. Например, если атакующий успешно попадает внутрь сервиса Apache , он также сможет получить доступ ко всему серверу, в том числе и к дугим сервисам, таким как MySQL, почтовый сервер и т.п. Описание установки виртуальной машины смотрите по следующим ссылкам:
- Установка и настройка пакета виртуализации XEN под on CentOS Linux 5
- Как настроить пакет OpenVZ под RHEL / CentOS Linux
№ 4: Поддерживайте ядро Linux и программы в обновленном состоянии
Применение всех патчей безопасности — важная часть работы по поддержанию сервера Linux. В Linux есть все необходимые средства для поддержания вашей системы всегда в обновленном состоянии и для легкого перехода к следующим версиям. Все обновления, касающиеся безопасности, должны изучаться и устанавливаться сразу, как для этого появится возможность. Для того, чтобы установить все обновления, касающиеся безопасности, опять воспользуйтесь менеджером пакетов RPM, таким как yum или apt-get и/или dpkg:
# yum update
или
# apt-get update && apt-get upgrade
Вы можете сконфигурировать Red hat / CentOS / Fedora Linux так, что yum будет посылать вам по e-mail напоминание о том, что есть обновление. Другая возможность – выполнять все обновления, относящиеся к безопасности, как задания для cron. Под Debian / Ubuntu Linux Вы можете использовать apticron для отсылки напоминаний, касающихся безопасности.
№ 5: Используйте расширения Linux, повышающие безопасность
Linux поставляется с различными патчами по безопасности, которые можно использовать с тем, чтобы защитится от неверно работающих или подвергнувшихся атаке программ. Если можно, то используйте SELinux и другие расширения Linux, повышающие безопасность, в которых уже есть средства ограничения при работе с сетью и другие программы. Например, в SELinux имеется большое количество политик безопасности, которые реализованы в ядре SELinux.
№ 5.1: SELinux
Я настоятельно рекомендую использовать SELinux, в котором имеются гибкие средства принудительного управления доступом (Mandatory Access Control — MAC). Когда используются стандартные средства избирательного управления доступом (Discretionary Access Control — DAC), то все приложения или процессы, работающие как пользователи (т.е. имеющие идентификатор пользователя UID или суперпользователя SUID), имеют пользовательские права для работы с объектами, такими как файлы, сокеты и другие процессы. Запуск ядра с MAC защищает систему от вредоносных или поврежденных приложений, которые могут нарушить работу системы или полностью вывести ее из строя. Смотрите официальную документацию Redhat, в которой описывается конфигурирование SELinux.
№ 6: Политика пользовательских паролей и сильные пароли
Используйте команды useradd / usermod для того, чтобы создавать и работать с регистрационными записями пользователей. Удостоверьтесь в том, Вы используете политику применения хороших и сильных паролей. Например, длина хорошего пароля должна быть не менее 8 символов и в нем должны присутствовать заглавные и прописные буквы, цифры, специальные символы и т.п. Самое главное — подобрать пароль, который Вы можете запомнить. Используйте такие инструментальные средства, как «John the ripper«, для поиска на вашем сервере слабых пользовательских паролей. Используйте pam_cracklib.so to для того, чтобы поверять силу используемых паролей.
№ 6.1: Продолжительность действия паролей
С помощью команды chage можно изменить параметры, определяющие, через какое количество дней надо менять пароль и дату последнего изменения пароля. Эта информация используется системой для определения срока, когда пользователь должен поменять свой пароль. В файле /etc/login.defs определяются конкретные данные, используемые при работе с теневыми паролями, в том числе и продолжительность действия паролей. Для того, чтобы отменить срок действия пароля (сделать его бессрочным – прим.пер.), введите следующее:
chage -M 99999 userName
Для того, чтобы получить информацию о времени окончания действия пароля, введите следующее:
chage -l userName
Наконец, Вы можете в файле /etc/shadow file отредактировать следующие поля:
{userName}:{password}:{lastpasswdchanged}:{Minimum_days}:{Maximum_days}:{Warn}:{Inactive}:{Expire}:
Где
- Minimum_days: Минимальное количество дней, между сменой паролей, т.е. количество дней, которое должно пройти прежде, чем пользователю будет разрешено сменить свой пароль.
- Maximum_days: Максимальное количество дней, в течение которых пароль будет действовать (после этого пользователь будет обязан поменять свой пароль).
- Warn : Количество дней перед датой окончания пароля, когда пользователь будет получать предупреждения о необходимости смены пароля. .
- Expire : Количество дней, начиная с 1 января 1070 г., после которого регистрационную запись пользователя нельзя будет использовать, т.е. момент, когда вход в систему станет невозможным.
Я рекомендую использовать команду chage вместо редактирования файла /etc/shadow вручную:
# chage -M 60 -m 7 -W 7 userName
Рекомендуемые ссылки:
- Linux: Требуйте, чтобы пользователи меняли свои пароли после первого входа в систему.
- Включение/отключение в Linux срока действия пароля
- Блокирование пользовательского пароля
- Поиск беспарольных учетных записей и их блокирование
- Используйте в Linux группы для повышения безопасности
№ 6.2: Запретите использование старых паролей
В Linux Вы можете запретить пользователям использовать старые пароли. Можно воспользоваться параметром remember модуля pam_unix для того, чтобы указать, какое количество предыдущих паролей нельзя использовать повторно.
№ 6.3: Блокируйте регистрационные записи пользователей после попыток неудачного доступа
В Linux Вы можете использовать команду faillog с тем, чтобы просмотреть записи faillog (о попытках неудачного доступа в систему – прим. пер.), либо чтобы установить предел на число попыток неудач доступа. Команда faillog выдает отформатированное содержимое записей о неудачах, взятых из файла var/log/faillog database / log. Файл можно также использовать для поддержки работы счетчиков неудач и органичить их количество. Для того, чтобы увидеть список попыток неудачного доступа, введите следующее:
faillog
Для того, чтобы разблокировать учетную запись, заблокированную после попыток неудачного доступа, запустите:
faillog -r -u userName
Заметьте, что для блокирования и разблокирования учетных записей Вы можете воспользоваться командой passwd:
# lock account блокирование учетной записи passwd -l userName # unlocak account разблокирование учетной записи passwd -u userName
№ 6.4: Как проверить отсутствие «пустых» паролей
Наберите следующую команду:
# awk -F: '($2 == "") {print}' /etc/shadow
Заблокируйте все учетные записи с «пустым» паролем:
# passwd -l accountName
№ 6.5: Удостоверьтесь, что нет регистрационных записей, отличных от Root, имеющих UID, установленный в 0
Только учетная запись пользователя root имеет UID 0 с полными правами доступа в систему. Для того, чтобы увидеть все учетные записи, у которых UID установлен в 0, наберите следующую команду:
# awk -F: '($3 == "0") {print}' /etc/passwd
Вы должны увидеть только одну следующую строку:
root:x:0:0:root:/root:/bin/bash
Если Вы увидите еще строки, то удалите такие учетные записи, либо удостоверьтесь, что для этих учетных записей разрешено использовать UID 0.
№ 7: Запретите прямой доступ в систему с правами root
Никогда не входите в систему как пользователь root. Для выполнения команд уровня root, если это потребуется, вам следует пользоваться командой sudo. Команда sudo существенно повышает безопасность системы и не требует раздавать пароль root другим пользователям и администраторам. Команда sudo также предоставляет простые средства для аудита и отслеживания событий.
№ 8: Защитите сервер от физического к нему доступа
Вы должны защитить консоли Linux серверов от физического доступа к системе. Сконфигурируйте BIOS и запретите загружаться с таких внешних устройств, как DVDs / CDs / USB. Установите пароль BIOS и пароль загрузки grub с тем, чтобы защитить эти настройки. Все системные блоки должны быть сосредоточены в специально отведенном для этого помещении и персонал прежде, чем получить доступ к вашему серверу, должен пройти в службе безопасности определенную проверку. Смотрите также:
№ 9: Отключите ненужные сервисы
Отключите все ненужные сервисы и демоны (сервисы, запускающиеся в фоновом режиме). Вам нужно будет удалить все ненужные сервисы, запускаемые при старте системы. Для того, чтобы получить список всех сервисов, запускаемых на уровне запуска 3 (run level # 3) во время загрузки системы, наберите следующую команду:
# chkconfig --list | grep '3:on'
Чтобы отключить сервис, введите:
# service serviceName stop # chkconfig serviceName off
№ 9.1: Определите, какие сетевые порты прослушиваются
Для того, чтобы получить список всех открытых портов и связанных с ними программ, используйте следующую команду:
netstat -tulpn
или
nmap -sT -O localhost nmap -sT -O server.example.com
Используйте iptables для того, чтобы закрыть открытые порты, либо с помощью команд service и команды chkconfig, указанной ранее, остановите все ненужные сетевые сервисы.
№ 9.2: Смотрите также следующие ссылки
- Команда в Redhat Enterprise / CentOS Linux, аналогичная команде update-rc.d.
- Ubuntu / Debian Linux: Запуск/оставновка системных сервисов с помощью средств конфигурирования сервисов.
- Использование команды netstat для получения подробной информации об IP, с которого выполнено подключение.
№ 10: Удалите X Windows
X Windows на сервере не нужен. Так что нет необходимости запускать X Windows на вашем специализированном почтовом или веб (Apache) сервере. Для того, чтобы повысить безопасность и улучшить работоспособность системы, Вы можете отключить и удалить X Windows. Отредактируйте файл /etc/inittab и установите уровень запуска (run level) равным 3. Наконец, удалите систему X Windows, для этого введите следующую команду:
# yum groupremove "X Window System"
№ 11: Сконфигурируйте Iptables и используйте TCPWrapper-ы
Iptables является пользовательским приложением, которое позволит вам сконфигурировать брандмауэр (Netfilter), имеющийся в ядре Linux. Используйте брандмауэр для фильтрации и пропуска только нужного трафика. Также используйте TTCPWrapper-ы — кросс-хостинговые сетевые системы ACL (листы контроля доступа), применяемые для фильтрации доступа из сети в Интернет. С помощью Iptables Вы сможете предотвратить многие атаки вида «denial of service» (отказ в обслуживании):
- Распределение трафика с помощью Lighttpd: ограничение числа соединений с одного IP (ограничение скорости).
- How to: Как с помощью Iptables в Linux блокировать типичные атаки.
- psad: Обнаружение и блокирование в Linux в режиме реального времени атак сканирования портов.
№ 12: Обезопасьте доступ к файлу ядра Linux /etc/sysctl.conf
Для конфигурирования параметров ядра во время его работы используется файл /etc/sysctl.conf. Linux во время загрузки использует настройки, считываемые из файла /etc/sysctl.conf. Пример файла /etc/sysctl.conf:
# Turn on execshield kernel.exec-shield=1 kernel.randomize_va_space=1 # Enable IP spoofing protection net.ipv4.conf.all.rp_filter=1 # Disable IP source routing net.ipv4.conf.all.accept_source_route=0 # Ignoring broadcasts request net.ipv4.icmp_echo_ignore_broadcasts=1 net.ipv4.icmp_ignore_bogus_error_messages=1 # Make sure spoofed packets get logged net.ipv4.conf.all.log_martians = 1
№ 13: Используйте различные дисковые разделы
Размещение файлов операционной системы отдельно от пользовательских файлов может, как результат, улучшить работу системы и повысить ее безопасность. Удостоверьтесь в том, что следующие файловые системы смонтированы на отдельных разделах диска:
- /usr
- /home
- /var and /var/tmp
- /tmp
Создайте отдельные разделы для корневых директорий серверов Apache и FTP. Отредактируйте файл /etc/fstab и не забудьте добавить следующее конфигурационные параметры:
- noexec – не разрешается исполнять бинарные файлы (предотвращается исполнение бинарных файлов, но разрешается исполнять скрипты).
- nodev — не разрешается указывать посимвольные и специальные устройства (предотвращается использование файлов устройств, таких как zero, sda и т.д).
- nosuid – не разрешается иметь доступ для SUID/SGID (предотвращается изменение битов идентификатора пользователя и идентификатора группы).
Пример монтирования /etc/fstab раздела /dev/sda5 (корневой директорий сервера ftp), для которого ограничен пользовательский доступ:
/dev/sda5 /ftpdata ext3 defaults,nosuid,nodev,noexec 1 2
№ 13.1: Квоты дискового пространства
Убедитесь в том, что задание дисковых квот допустимо для всех пользователей. Для того чтобы можно было задавать квоты дискового пространства, выполните следующие шаги:
- Разрешите определять квоты для каждой файловой системы – для этого измените файл /etc/fstab.
- Перемонтируйте файловую систему (системы).
- Создайте файлы базы данных квот и сгенерируйте таблицу использования диска.
- Назначьте политики квот.
- Подробности смотрите в руководстве «Задание квот дискового пространства» (implementing disk quotas).
№ 14: Отключите IPv6
Версия 6 протокола Интернет (IPv6), которая заменяет версию 4 (IPv4), представляет собой новый слой организации протокола TCP/IP, что дает массу преимуществ. В настоящее время нет хороших инструментальных средств, с помощью которых можно было бы проверить безопасность системы, работающей через сеть по протоколу IPv6. В большинстве дистрибутивов Linux протокол IPv6 по умолчанию включен. Взломщики могут воспользоваться и перенаправить трафик по IPv6, поскольку большинство администраторов не осуществляют его мониторинг. Если конфигурация сети не требует использования протокола IPv6, то отключите его, в противном случае сконфигурируйте брандмауэр Linux для работы с IPv6:
- Отключение протокола IPv6 в RedHat / Centos.
- Отключение протокола IPv6 в Debian / Ubuntu и других дистрибутивах Linux.
- Linux IPv6 Howto: Глава 19. Безопасность.
- Здесь описано конфигурирование брандмауэра Linux для IPv6 и приведены скрипты.
№ 15: Уберите все ненужные бинарные файлы SUID и SGID
Если установлены права доступа SUID/SGID и файл, согласно SUID/SGID, исполняемый, то его можно использовать неправильно и это может быть причиной неверной работы системы или проблем с безопасностью. Любой локальный или удаленный пользователь может использовать такой файл. Поэтому нужно знать обо всех таких файлах. Используйте команду find следующим образом:
See all set user id files: find / -perm +4000 # See all group id files find / -perm +2000 # Or combine both in a single command find / ( -perm -4000 -o -perm -2000 ) -print find / -path -prune -o -type f -perm +6000 -ls
Вам нужно изучить каждое сообщение о таком файле. Подробности смотрите в страницах man page для темы reported file.
№15.1: Файлы без ограничения на запись
Любой может модифицировать такие файлы, в результате чего могут возникнуть проблемы с безопасностью. Используйте следующую команду для того, чтобы найти такие файлы и взять их на заметку:
find /dir -xdev -type d ( -perm -0002 -a ! -perm -1000 ) -print
Вам нужно изучить каждое сообщение о таких файлах и либо правильно установить пользователя и группу, либо удалить файл.
№ 15.2: Файлы, не имеющие владельца
Файлы, у которых нет владельца и которые не принадлежат ни одной из групп, могут быть причиной проблем с безопасностью. Найдите файлы, которые не принадлежат существующими пользователям и существующим группам, с помощью следующей команды:
find /dir -xdev ( -nouser -o -nogroup ) -print
Вам нужно изучить каждое сообщение о таких файлах и либо правильно установить пользователя и группу, либо удалить файл.
№ 16: Используйте централизованный сервис идентификации
Без централизованной системы авторизации, идентификационные данные о пользователе могут стать противоречивыми и это может привести к устареванию полномочий и появлению забытых регистрационных записей, которые следует удалять в первую очередь. Централизованная служба аутентификации позволит вам осуществлять под Linux / UNIX централизованное обслуживание всех регистрационных записей и идентификационные данных. Вы сможете обеспечивать синхронизацию идентификационных данных между серверами. Не используйте для централизованной идентификации сервис NIS. Используйте OpenLDAP для клиентов и серверов.
№ 16.1: Kerberos
Пакет Kerberos используется как идентификационный сервис доверенной третьей стороны, который выполняет проверку подлинности с помощью криптографического шифрования общедоступных данных, причем с учетом того, что пакеты, передаваемые по небезопасной сети, могут быть прочитаны, модифицированы или в них может быть что-либо добавлено. В пакете Kerberos используется криптография с симметричными ключами и для этого пакета нужен центр раздачи ключей. С помощью пакета Kerberos Вы сможете более безопасно и с большим контролем осуществлять удаленный вход в систему, выполнять удаленное копирование и копирование файлов с одной системы на другую, а также решать другие задачи, высокорискованные с точки зрения безопасности. Таким образом, если пользователи регистрируются в сетевых сервисах, обслуживаемых пакетом Kerberos, то будут пресечены несанкционированные попытки пользователей собирать пароли с помощью мониторинга сетевого трафика. Смотрите описание настройки и использования пакета Kerberos.
№ 17: Протоколирование и аудит
Для того, чтобы собирать сведения о попытках взлома системы и проникновения в нее, вам нужно настроить протоколирование и аудит. По умолчанию системный журнал syslog сохраняет свои данные в директории /var/log/. Полезно также все разузнать о неверном конфигурировании программ, которое может открыть вашу систему для различных атак. Смотрите следующие ссылки, касающиеся протоколирования:
- Местонахождение журнальных файлов в системе в Linux .
- Как перенаправлять журнальные файлы на удаленный хост.
- Как циклически сменять журнальные файлы.
- Страницы описаний man pages для syslogd, syslog.conf и logrotate.
№ 17.1: Использование Logwatch / Logcheck для отслеживания подозрительных записей в системном журнале
Читайте свои журналы с помощью logwatch или logcheck. Эти инструменты облегчат вам анализ журналов. Вы будете получать по почте подробные отчеты о необычных записях, обнаруженных в системном журнале syslog. Пример отчета по syslog:
################### Logwatch 7.3 (03/24/06) #################### Processing Initiated: Fri Oct 30 04:02:03 2009 Date Range Processed: yesterday ( 2009-Oct-29 ) Period is day. Detail Level of Output: 0 Type of Output: unformatted Logfiles for Host: www-52.nixcraft.net.in ################################################################## --------------------- Named Begin ------------------------ **Unmatched Entries** general: info: zone XXXXXX.com/IN: Transfer started.: 3 Time(s) general: info: zone XXXXXX.com/IN: refresh: retry limit for master ttttttttttttttttttt#53 exceeded (source ::#0): 3 Time(s) general: info: zone XXXXXX.com/IN: Transfer started.: 4 Time(s) general: info: zone XXXXXX.com/IN: refresh: retry limit for master ttttttttttttttttttt#53 exceeded (source ::#0): 4 Time(s) ---------------------- Named End ------------------------- --------------------- iptables firewall Begin ------------------------ Logged 87 packets on interface eth0 From 58.y.xxx.ww - 1 packet to tcp(8080) From 59.www.zzz.yyy - 1 packet to tcp(22) From 60.32.nnn.yyy - 2 packets to tcp(45633) From 222.xxx.ttt.zz - 5 packets to tcp(8000,8080,8800) ---------------------- iptables firewall End ------------------------- --------------------- SSHD Begin ------------------------ Users logging in through sshd: root: 123.xxx.ttt.zzz: 6 times ---------------------- SSHD End ------------------------- --------------------- Disk Space Begin ------------------------ Filesystem Size Used Avail Use% Mounted on /dev/sda3 450G 185G 241G 44% / /dev/sda1 99M 35M 60M 37% /boot ---------------------- Disk Space End ------------------------- ###################### Logwatch End #########################
Замечание: Результат вывода приведен с сокращениями.
№ 17.2: Системный аудит с помощью auditd
Демон auditd предназначен для выполнения аудита системы. Его назначение – записывать на диск информацию о результатах аудита. Этот демон во время пуска системы считывает правила выполнения аудита из файла /etc/audit.rules. Вы можете открыть файл /etc/audit.rules и сделать в нем изменения, например, указать другое местоположение журнального файла аудита, либо поменять другие настройки. С помощью демона auditd Вы сможете узнать о следующем:
- о событиях, происшедших во время запуска и завершения работы системы (перезагрузки, остановки системы);.
- о дате и времени, когда это событие произошло;
- ответственности пользователя за происшедшее событие (например, попытке доступа к файлу /path/to/topsecret.dat);
- о типе события (редактирование, доступ, удаление, запись, модификация файла или выполнение других команд);
- оказалось ли событие успешным или неудачным;
- посмотреть записи о событиях, которые меняли дату и время;
- разузнать, кто сделал изменения, которые меняли сетевые настройки системы;
- посмотреть записи о событиях, которые меняли информацию о пользователе / группе;
- можно увидеть, кто делал изменения в файле, и т.п.
Смотрите краткое руководство, в котором объясняется, как настроить и использовать сервис auditd.
№ 18: Обеспечьте безопасность сервера OpenSSH
Для удаленного доступа в систему и удаленной передачи файлов рекомендуется использовать протокол SSH. Однако протокол ssh открыт для многих атак. О том, как повысить безопасность сервера OpenSSH, смотрите в статье:
№ 19: Установите и используйте систему обнаружения вторжений
Система обнаружения сетевого вторжения (network intrusion detection system — NIDS) — это система обнаружения вторжения, которая с помощью мониторинга сетевого трафика пытается зафиксировать злонамеренную активность, такую как атаки вида «denial of service» (отказ в обслуживании), сканирование портов и даже попытки проникновения в компьютер.
Хороший практический подход – прежде, чем система будет подключена к сети в режиме эксплуатации, развернуть любую интегрированную программную систему проверки. Если возможно, то прежде, чем система будет подключена какой-либо сети, установите пакет AIDE. AIDE является кросс-хостинговой системой обнаружения вторжения (host-based intrusion detection system — HIDS). Она может осуществлять мониторинг и анализ процессов, происходящих внутри самих компьютерных систем.
Snort является программой, предназначенной для обнаружения вторжений, которая может выполнять протоколирование на уровне сетевых пакетов и в режиме реального времени делать анализ трафика в IP сетях.
№ 20: Защитите файлы, директории и почтовые ящики
В Linux предлагаются различные варианты защиты против несанкционированного доступа к данным. Использование прав доступа к файлу и методика MAC (Mandatory Access Control — принудительное управление доступом) предотвращают несанкционированный доступ к данным. Однако, права доступа, устанавливаемые Linux, бесполезны, если атакующий имеет физический доступ к компьютеру и может перенести жесткий диск компьютера на другую систему с тем, чтобы скопировать и проанализировать интересующие его данные. Вы можете легко защитить в Linux файлы и дисковые разделы с помощью следующих инструментальных средств:
- Для того, чтобы зашифровывать и расшифровывать файлы с использованием пароля, используйте команду gpg.
- Защита файлов по паролю с помощью openssl и других инструментальных средств в системах Linux или UNIX.
- Смотрите по ссылке encrypting directories описание, как шифровать директории с помощью ecryptfs.
- TrueCrypt – бесплатная программа с открытым кодом, предназначенная для шифрования диска в системах Windows 7/Vista/XP, Mac OS X и Linux.
- Howto: Шифрование диска и дисковых разделов в Linux для мобильных устройств.
- Как настроить в Linux шифрованный раздел свопинга.
№ 20.1: Обеспечьте безопасность почтовых серверов
Вы можете использовать на сервере и на клиенте сертификаты SSL и ключи gpg с тем, чтобы обезопасить переписку по электронной почте:
- Безопасность сервера Dovecot IMAPS / POP3S под Linux с помощью конфигурирования SSL.
- Установка и настройка сертификата SSL для сервера Postfix SMTP (почтового сервера) под Linux.
- Установка и настройка сертификата SSL для почтового сервера Courier IMAP.
- Конфигурирование средств шифрования Sendmail SSL для посылки и приема электронной почты.
- Enigmail: Шифрованная электронная почта в клиенте Mozilla Thunderbird.
Другие рекомендации:
- Backups Невозможно переоценить, насколько важно делать резервную копию вашей системы Linux. Правильное резервирование, выполняемое удаленно, позволит вам восстановить сервер, например, после его взлома. Также рекомендуется использовать традиционные в UNIX операции резервирования — dump and restore.
- How to: Поиск руткитов.
- Howto: Использование патча ExecShield для защиты от переполнения буфера.
- Подпишитесь на почтовую рассылку или RSS по безопасности , предлагаемую на сайтах Redhat или Debian.
Рекомендуемые ссылки:
- Red Hat Enterprise Linux — Руководство по безопасности.
- Хорошая коллекция рецептов по обеспечению безопасности, предназначенная для начинающих администраторов.
- Snort 2.1 Intrusion Detection, Second Edition — Хорошее введение в систему обнаружения вторжения Snort, используемую под Linux.
- Hardening Linux — Защита Linux – описываются многие риски, возникающие на работающих Linux хостах в Linux приложениях, и приводятся практические примеры и методы минимизации этих рисков.
- Безопасность Linux HOWTO.
В следующей части данной серии будет обсуждаться, как повысить безопасность конкретных приложений (например, Proxy, Mail, LAMP, баз данных), а также несколько других инструментальных средств обеспечения безопасности.