Настройка шлюза freebsd 9, и так начнём, по умолчанию после установки FreeBSD 9 в системе используется
ядро GENERIC пересобираем ядро добавив туда:
options IPFIREWALL
options IPFIREWALL_FORWARD
options IPFIREWALL_VERBOSE
options IPFIREWALL_DEFAULT_TO_ACCEPT
options DUMMYNET
options IPDIVERT
(это конфигурация ipfw при которой он по умолчанию разрешает прохождение любого трафика, в случае если вы работаете с компьютером через ssh очень полезно.)
cd /usr/src/sys/i386/conf
Если каталог /usr/src/sys отсутствует в вашей системе (или этот каталог пуст), то это значит, что исходные тексты не были установлены.
Наиболее простой способ установить их -- запустить sysinstall как пользователь root, выбрать Configure, >> Distributions, >> src, и после всего -- All. Далее, проверьте наличие символической ссылки /sys/, и, если потребуется, создайте её: # ln -s /usr/src/sys/ /sys/
cp GENERIC MYKERNEL
ee MYKERNEL
cd /usr/src
make buildkernel KERNCONF=MYKERNEL
make installkernel KERNCONF=MYKERNEL
далее, смотрим все доступные интерфейсы в системе
#ifconfig -a
Мои интерфейсы xl0 в нее включен линк от провайдера (интернет) rl0 смотрит в локальную сеть (включен в свич)
( у вас могут быть другие в зависимости от драйверов которые использует ваше оборудование)
Для начала настроим интернет на сервере.
ifconfig xl0 4.4.4.5 netmask 255.255.255.252 – присваиваем ip адрес внешнему интерфейсу(ip адрес пишем свой)
#ifconfig rl0 192.168.1.1 netmask 255.255.255.0 – эта адрес шлюза для нашей сети.
#route add default 4.4.4.4 – назначаем жлюз по умолчанию туда будут отправляться все пакеты.(шлюз пишем свой)
также прописываем адреса имен (dns)
#echo “nameserver 8.8.8.8 > /etc/resolv.conf
Проверяем работает ли интернет
#ping google.com
Интернет работает.
Чтобы после перезагрузки эти настройки поднялись автоматически нужно добавить их в rc.conf, также добавим в этот файл все то что понадобиться нам для решения нашей задачи.
/etc/rc.conf – главный конфигурационный файл FreeBSD поэтому редактируйте его внимательно.
# ee /etc/rc.conf
добавляем такие строчки
defaultrouter="4.4.4.4"
ifconfig_xl0="inet 4.4.4.5 netmask 255.255.255.252"
ifconfig_rl0="inet 192.168.1.1 netmask 255.255.255"
firewall_enable="YES"
firewall_type="/etc/ipfw-nat" # если что то не вышло просто открываем "OPEN"
gateway_enable="YES" #- это значение определяет наш компьютер как роутер.
natd_enable="YES" #– это запускает сервер преобразования сетевых адресов (чтобы адреса нашей локальной сети были представлены в интернете реальным ip адресом)
сохраняем.
Модуль ipfw_nat позволяет обойтись без демона natd.
Если вы выбрали ipfw_nat, то вместо строк загрузки natd нужно добавить две следующие строки:
firewall_nat_enable="YES"
firewall nat interface="xl0"
Теперь Нам необходимо настроить firewall
Дальше создание файла конфигурации для нашего пакетного фильтра. Для этого создадим указанный выше файл и внесём в него следующие строки:
# ee /etc/ipfw-nat
add 1 allow ip from any to any via rl0
nat 1 config log if sk0 reset same_ports
add 2 nat 1 ip from any to any via sk0
#Этого было бы достаточно что бы просто работал NAT. Дальше немного добавим безопасности.
# Разрешаем весь трафик по внутреннему интерфейсу (петле)
add allow ip from any to any via lo0
# Блокируем попытки lo0 куда-то лезть и откуда-то лезть на lo0
add deny ip from any to 127.0.0.0/8
add deny ip from 127.0.0.0/8 to any
# Блокируем частные сети на внешнем интерфейсе
add deny ip from any to 10.0.0.0/8 in via sk0
add deny ip from any to 172.16.0.0/12 in via sk0
add deny ip from any to 0.0.0.0/8 in via sk0
# Блокируем автоконфигуреную частную сеть
add deny ip from any to 169.254.0.0/16 in via sk0
# Блокируем мультикастовые рассылки
add deny ip from any to 240.0.0.0/4 in via sk0
# Блокируем фрагментированные icmp
add deny icmp from any to any frag
# Блокируем широковещательные icmp на внешнем интерфейсе
add deny log icmp from any to 255.255.255.255 in via sk0
add deny log icmp from any to 255.255.255.255 out via sk0
# отправляем всех на прозрачный squid
add fwd 127.0.0.1,3128 tcp from 192.168.7.0/24 to any 80 via sk0
# пропускаем траффик через трансляцию сетевых адресов (NAT)
nat 1 config log if sk0 reset same_ports
add nat 1 ip from any to any via sk0
# Блокируем траффик к частным сетям через внешний интерфейс
add deny ip from 10.0.0.0/8 to any out via sk0
add deny ip from 172.16.0.0/12 to any out via sk0
add deny ip from 0.0.0.0/8 to any out via sk0
# Блокируем автоконфигуреную частную сеть
add deny ip from 169.254.0.0/16 to any out via sk0
# Блокируем мультикастовые рассылки
add deny ip from 224.0.0.0/4 to any out via sk0
add deny ip from 240.0.0.0/4 to any out via sk0
# разрешаем все установленные соединения
add allow tcp from any to any established
# разрешаем весь исходящий траффик
add allow ip from me to any out xmit sk0
# разрешаем DNS снаружи
add allow udp from any 53 to any via sk0
# разрешаем DNS входящий снаружи - если на этой машине работает named
# и держит какую-то зону.
add allow udp from any to any 53 via sk0
# разрешаем некоторые типы ICMP траффика - эхо-запрос, эхо-ответ и время жизни пакета истекло
add allow icmp from any to any icmptypes 0,8,11
# открываем снаружи порты (WEB, SMTP, SSH, IMAP соответственно)
add allow tcp from any to me 80 via sk0
add allow tcp from any to me 25 via sk0
add allow tcp from any to me 22 via sk0
add allow tcp from any to me 143 via sk0
# разрешаем весь tcp трафик внутри локалки (на внутреннем интерфейсе)
add allow tcp from any to any via rl0
# разрешаем весь udp траффик внутри локалки (на внутреннем интерфейсе)
add allow udp from any to any via rl0
# разрешаем весь icmp траффик внутри локалки (на внутреннем интерфейсе)
add allow icmp from any to any via rl0
# запрещаем всё и всем.
add deny ip from any to any
Применить изменения можно перезапустив фаервол:
# /etc/rc.d/ipfw restart
net.inet.ip.fw.enable: 1 -> 0
net.inet6.ip6.fw.enable: 1 -> 0
Flushed all rules.
00100 allow ip from any to any via lo0
00200 deny ip from any to 127.0.0.0/8
00300 deny ip from 127.0.0.0/8 to any
00400 deny ip from any to ::1
00500 deny ip from ::1 to any
00600 allow ipv6-icmp from :: to ff02::/16
00700 allow ipv6-icmp from fe80::/10 to fe80::/10
00800 allow ipv6-icmp from fe80::/10 to ff02::/16
00900 allow ipv6-icmp from any to any ip6 icmp6types 1
01000 allow ipv6-icmp from any to any ip6 icmp6types 2,135,136
01100 allow ip from any to any via lo0
01200 deny ip from any to 127.0.0.0/8
01300 deny ip from 127.0.0.0/8 to any
01400 deny ip from any to 10.0.0.0/8 in via sk0
01500 deny ip from any to 172.16.0.0/12 in via sk0
01600 deny ip from any to 0.0.0.0/8 in via sk0
01700 deny ip from any to 169.254.0.0/16 in via sk0
01800 deny ip from any to 240.0.0.0/4 in via sk0
01900 deny icmp from any to any frag
02000 deny log logamount 100 icmp from any to 255.255.255.255 in via sk0
02100 deny log logamount 100 icmp from any to 255.255.255.255 out via sk0
ipfw nat 1 config if sk0 log same_ports reset
02200 nat 1 ip from any to any via sk0
02300 deny ip from 10.0.0.0/8 to any out via sk0
02400 deny ip from 172.16.0.0/12 to any out via sk0
02500 deny ip from 0.0.0.0/8 to any out via sk0
02600 deny ip from 169.254.0.0/16 to any out via sk0
02700 deny ip from 224.0.0.0/4 to any out via sk0
02800 deny ip from 240.0.0.0/4 to any out via sk0
02900 allow tcp from any to any established
03000 allow ip from 192.168.4.57 to any out xmit sk0
03100 allow udp from any 53 to any via sk0
03200 allow udp from any to any dst-port 53 via sk0
03300 allow icmp from any to any icmptypes 0,8,11
03400 deny tcp from any to 192.168.4.57 dst-port 80 via sk0
03500 allow tcp from any to 192.168.4.57 dst-port 25 via sk0
03600 allow tcp from any to 192.168.4.57 dst-port 22 via sk0
03700 allow tcp from any to 192.168.4.57 dst-port 143 via sk0
03800 allow tcp from any to any via rl0
03900 allow udp from any to any via rl0
04000 allow icmp from any to any via rl0
04100 deny ip from any to any
Firewall rules loaded
Коментувати