Эта статья описывает определенные шаги, которые должен предпринять админ для конфигурирования рабочей станции на основе FreeBSD 4.x. В общем говоря все это применимо и для сервера, но явно недостаточно — в случае сервера необходимо предпринять ряд дополнительных мер.
Основа
Известно, что FreeBSD одна из самых безопасных операционных систем, однако и для ее окончательного укрепления необходимо поработать ручками, не полагаясь на дефолтовые установки.
Прежде всего после установки ОС необходимо отключит все сервисы, которые не нужны. Допустим, что вам нужен лишь FTP и SSHD для работы в локальной сети. Для отключения всех сервисов подредактируйте /etc/rc.conf, примерно так как показано в этом файле.
Выключили? Замечательно. Теперь беремся за /etc/inetd.conf и разкомментируем там ftp. Все остальные службы в файле конфигурации должны быть закрыты до тех пор, пока они вам не понадобятся. Идем дальше: в /usr/local/etc/rc.d/. В этом (или из этого) месте httpd, rpcd и другие демоны инициализируются, так что делайте chmod -x всему тому, что вам не нужно. Или проще удалите/переместите удалите их если они вам не нужны. Перегружайте машину и выполняйте sockstat -l4. Примерно должно вылезти следующее:
root sshd 432 4 tcp4 *:22 *:*
root lpd 72 7 tcp4 *:515 *:*
root syslogd 60 5 udp4 *:514 *:*
root inetd 445 4 tcp4 *:21 *:*
Если видите что-то лишнее — возвращайтесь в /usr/local/etc/rc.d/ и убивайте все, что под руку попадется.
Пользователи
Если вы единственный, кто пользуется компьютером, то вам нужно всего два пользователя для работы кроме рута. Первый для доступа по ftp (передача данных по ftp не шифруется, а потому может быть перехвачена), с минимальными правами и не включенный wheel group (группа с group-id = 0, разрешающая root доступ пользователям на машине, вне ее невозможно применить команду su root даже зная пароль). Второй пользователь будет использоваться только для SSH, он может входить в wheel group и потому пароль нельзя передавать по незащищенным протоколам типа ftp, telnet, pop и т.д. Для пущей надежности подредактируйте /etc/ftpusers. Если у вас на машине больше одного человека, то для каждого из них должна соблюдаться аналогичная политика обеспечения безопасности.
Файрвол
Файрволы обычно используются не только для защиты машины от внешних проникновений, но и для предотвращения DoS и DDoS атак. FreeBSD поставляется с уже готовой программой ipfw, довольно гибкой и мощной. Я расскажу вам о том, как настроить ipfw для работы с модемным соединением, которое наиболее часто встречается в домах.
Прежде всего вам с ядро надо добавить следующие строки (о подобных изменениях мы уже много раз писали)
options IPFIREWALL
options IPFW2 # Для FreeBSD < 4.7 используйте IPFW вместо IPFW2
options IPFIREWALL_VERBOSE # Пишем логи о каждом "загубленном" пакете.
options IPFIREWALL_VERBOSE_LIMIT=100 # Защищает лог от массы повторяющихся сообщений
options IPDIVERT # Разрешаются divert sockets.Эта опция добавляет к FireWall еще возможность некоторые IP-пакеты "заворачивать" на дополнительную обработку в прикладные программы (основные проверки делаются в ядре). С помощью этого механизма вы можете писать свои программы, которые смогут выполнить более сложную фильтрацию пакетов или даже их преобразование (NAT, тунель IP в IP, и т.п.).
options TCP_DROP_SYNFIN # Игнорируем все ТСР пакеты с SYN и FIN, что затрудняет удаленное определение версии ОС. В случае работы веб-сервера такое игнорирование не рекомендуется.
Компилим ядро и перед перезагрузкой в /etc/rc.conf добавляем:
firewall_enable="YES"
firewall_script="/etc/firewall/ifpw.rules" # где хранятся правила для файрвола
natd_enable="YES"
natd_interface="tun0" # или eth0 если вы лезете в Инет через локалку
natd_flags="-dynamic"
ppp_nat="NO" # выключаем network address translation
Дальше правим сами правила, как сказано выше в /etc/firewall/ создаем ifpw.rules и пишем туда примерно следующее. Вот и все, перезагружаем компьютер. Для проверки, после ребута, наберите ipfw show — должны появится те правила поведения файрвола, что вы ввели раньше. Если вы захотите выключить файрвол — ipfw -f flush. Для добавления новых команд на лету — ipfw add Rule_Number Rule.
Тестируем
Конечно же необходимо проверить как работает ваша только возведенная защита. Вам понадобится кто-то во внешней сети, попросите его протестить ваш компьютер каким-либо сканером, например тем же nmap, примерно так:
nmap -v -O -sS your.host.com
Если все случилось правильно, то он должен увидеть только те порты, что вы разрешили.
-=Jul=- (xakep.ru)