Настраиваем встроенный фаервол ipfw FreeBSD 10.3
Перед каждым администратор сервера наступает момент, когда нужно озаботиться о его защите.
Именно для этого, можно использовать ipfw.
Сначала нужно загрузить модуль ipfw в ядро.
1 |
echo 'ipfw_load="YES"' >> /boot/loader.conf |
Добавить следующие строки в rc.conf
1 2 3 4 |
echo 'firewall_enable="YES"' >> /etc/rc.conf echo 'firewall_type="client"' >> /etc/rc.conf echo 'firewall_script="/etc/ipfw.rules"' >> /etc/rc.conf echo 'firewall_logging="YES' >> /etc/rc.conf |
Важно! Если Вы находитесь после настройки фаервола Вы потеряете к нему доступ, потому что в правилах будет запрет всего
1 |
65535 deny ip from any to any |
Создадим файл с правилами.
1 2 3 |
touch /etc/ipfw.rules # и открываем для редактирования nano /etc/ipfw.rules |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
#Сбросить все правила, перед загрузкой новых ipfw -q -f flush #Префикс для создания новых правил cmd='ipfw -q add' #Наш интерфейс “в мир” pif='re0' #Разрешаем весь трафик по loopback $cmd 00010 allow all from any to any via lo0 #Разрешить SSH-соединение $cmd 00020 allow tcp from any to me 22 in via $pif #Разрешить WEB-соединение $cmd 00030 allow tcp from any to me 80 in via $pif $cmd 00040 allow tcp from any to me 443 in via $pif #Закрываем доступ “снаружи” к некоторым сервисам, в этом случае – к MySQL $cmd 00050 deny log all from any to me 3306 via $pif #Разрешаем определенный ICMP-трафик из мира к нам $cmd 0060 allow icmp from any to me in via $pif icmptype 3,8,12 #Разрешаем определенный ICMP-трафик от нас в мир $cmd 00070 allow icmp from me to any out via $pif icmptype 0,3,4,11,12 #Запрещаем прочий ICMP-трафик $cmd 00080 deny log icmp from any to me in via $pif icmptype 5,9,10,13,15,17 #Запрещаем фрагментированные ICMP-пакеты $cmd 00090 deny log icmp from any to any frag #Запрещаем трафик с IP-адресами локальных сетей RFC 1918 $cmd 00100 deny log all from 10.0.0.0/8 to any in via $pif $cmd 001100 deny log all from 172.16.0.0/12 to any in via $pif $cmd 001200 deny log all from 192.68.0.0/16 to any in via $pif $cmd 001300 deny log all from 0.0.0.0/8 to any in via $pif #Запрещаем передачу identd/auth пакетов $cmd 001400 deny log tcp from any to me 113 in via $pif #В конце – разрешаем весь остальной трафик $cmd 10000 allow all from any to any |
Перезагрузим сервер.
Мне ipfw нравится куда больше iptables. Но вы же можете использовать любой, какой вам нравится больше.