Делаем FreeBSD безопасной Сергей Можайский aka techniX Xakep, номер #069, стр. 069-116-3 По окончании работы с зашифрованным разделом размонтируем устройство и отключим шифрованный диск: # umount /dev/ad4s1c.bde # gbde detach /dev/ad4s1c IP-протоколы Теперь займемся защитой от атак, связанных с недостатками протокола TCP/IP. Начнем с фильтрации SYNFIN-пакетов. Это TCP-пакеты с одновременно установленными флагами начала и завершения соединения, пользы от них практически никакой, зато они часто используются при хакерских атаках. Одновременно займемся ICMP-протоколом и включим в ядро еще парочку полезных опций: // ох уж эти SYNFIN-пакеты options TCP_DROP_SYNFIN // ограничиваем количество ICMP-ответов, что помогает при защите от DoS атак options ICMP_BANDLIM // генерируем случайный идентификатор IP-пакетов options RANDOM_IP_ID // блокируем RST-пакеты options TCP_RESTRICT_RST Но этого еще недостаточно, добавляем в /etc/rc.conf: // отбрасываем SYNFIN-пакеты tcp_drop_synfin="YES" // отключаем прием и отправку переадресовывающих ICMP-пакетов icmp_drop_redirect="YES" // в системном журнале регистрируем переадресовывающие ICMP-пакеты icmp_log_redirect="YES" // предотвращаем springboarding и smurf-атаки icmp_bmcastecho="NO" Далее прописываем в /etc/sysctl.conf строчки net.inet.tcp.blackhole=2 net.inet.udp.blackhole=1 С помощью этих переменных мы превращаем нашу систему в так называемую "черную дыру". Отныне она не будет реагировать на пакеты, поступающие на закрытые порты, и они будут просто пропадать. Этот прием позволяет защититься от флуда и от скрытого сканирования портов. Огненная стена Естественно, без фильтрации сетевого трафика нам не обойтись. Встроенный файрвол ipfw позволит нам фильтровать пакеты по заданным критериям и вести учет. Для того чтобы включить файрвол, нужно добавить в ядро вот эти опции: options IPFIREWALL options IPFIREWALL_VERBOSE После чего добавить в /etc/rc.conf строки firewall_enable="YES" firewall_type="open" Однако тип файрвола "open" подходит для чего угодно, но только не для защищенного сервера. Поэтому для более надежной защиты можно выбрать одну из стандартных конфигураций: // защита только сервера firewall_type="client" // защита сервера и локальной сети firewall_type="simple" или же написать свой файл с правилами файрвола. Немного разберемся с созданием правил. Общий формат правила ipfw такой: <действие> <протокол> from <откуда> to <куда> <дополнительные условия> В качестве выполняемого действия файрвол может разрешить (allow, pass, accept, permit) прохождение пакета или запретить (deny, drop, reject) его, а также посчитать (count), перенаправить по нужному адресу (fwd, forward) или другой программе (divert). Протоколы могут быть ip или all (для всех протоколов стека TCP/IP), а также tcp, udp, icmp и т.п. Формат поля источника (from) и приемника (to) пакета может быть записан в различных формах: доменное имя, ip-адрес, подсеть в формате IP:MASK (192.168.1.0:255.255.255.0) или IP/LENGTH (192.168.1.0/24), а также в виде специального слова any (любой адрес) или me (все адреса локальной машины). Для tcp и udp протокола после адреса источника или приемника можно через пробел указать еще и порт. И, наконец, из дополнительных условий самыми полезными являются направление пакета (in или out - входящий и исходящий соответственно), интерфейс, через который будет проходить пакет (например, via fxp0), и даже идентификатор пользователя (uid) или группы (gid), для которых это правило будет работать. Теперь не составит труда разобраться, что правило |