Настройка IPFW в FreeBSD 7.3 для входящих и исходящих VPN — часть2

демон на страже FreeBSD

По многочисленным просьбам трудящихся, я даже и не догадывался что это так актуально, выкладываю конфиг для IPFW (rc.firewall) FreeBSD 7.3, rc.config, и добавки для перекомпиляции ядра. Естественно ядро надо пересобрать (это скучно, и как это делать, расписано на каждом углу).

Для защиты от перебора паролей SSH — устанавливаем bruteblock, ставим из портов:

# cd /usr/ports/security/bruteblock && make install clean
Добавляем в  /etc/syslog.conf:

!*
auth.info;authpriv.info |exec /usr/local/sbin/bruteblock -f /usr/local/etc/bruteblock/ssh.conf

Не забудьте перезапустить  syslogd.
Далее необходимо добавить несколько строк в rc.conf, и в rc.firewall, а также отредактировать /usr/local/etc/bruteblock/ssh.conf (про это тоже много написано)

Добавляем в конфиг rc.conf:

firewall_enable=»YES»
firewall_type=»/etc/rc.firewall»
firewall_logging=»YES»
natd_enable=»YES»
natd_interface=»rl0″
bruteblockd_enable=»YES»
bruteblockd_table=»1″
bruteblockd_flags=»-s 5″

В ядро добавляем:

# IPFW
options  IPFIREWALL
options  IPFIREWALL_VERBOSE
options  IPFIREWALL_VERBOSE_LIMIT=5
options  IPFIREWALL_FORWARD
options  IPDIVERT
options  DUMMYNET
options  IPFIREWALL_DEFAULT_TO_ACCEPT

# PF
device  pf
device  pflog
device  pfsync

# ALTQ
options  ALTQ
options  ALTQ_CBQ
options  ALTQ_RED
options  ALTQ_RIO
options  ALTQ_HFSC
options  ALTQ_PRIQ
options  ALTQ_CDNR
options  ALTQ_NOPCC

# NETGRAPH
options  LIBALIAS
options  NETGRAPH
options  NETGRAPH_ETHER
options  NETGRAPH_SOCKET
options  NETGRAPH_TEE
options  NETGRAPH_MPPC_ENCRYPTION
options  NETGRAPH_IFACE
options  NETGRAPH_PPP
options  NETGRAPH_PPTPGRE
options  NETGRAPH_PPPOE
options  NETGRAPH_BPF
options  NETGRAPH_KSOCKET
options  NETGRAPH_TCPMSS
options  NETGRAPH_VJC
options  NETGRAPH_ONE2MANY
options  NETGRAPH_RFC1490
options  NETGRAPH_TTY
options  NETGRAPH_UI
options  NETGRAPH_SPLIT
options  NETGRAPH_GIF
options  NETGRAPH_IP_INPUT
options  NETGRAPH_L2TP
options  NETGRAPH_NETFLOW
options  NETGRAPH_NAT
options  NETGRAPH_BRIDGE

Конфиг rc.firewall:

#!/bin/sh

FwCMD=»/sbin/ipfw»
# Внешний сетевой интерфейс
LanOut=»rl0″
# Внутренний сетевой интерфейс
LanIn=»rl1″
# Внешний IP /IP дан для примера/
IpOut=»214.300.221.10″
# Внутренний IP
IpIn=»192.10.1.10″
# Маска внутренней подсети 255.255.255.0
NetMask=»24″
# Внутренняя сеть /IP дан для примера/
NetIn=»192.10.1.0″
# Интерфейс при поднятии входящего VPN соединения 1, 2, 3, 4 и т.д.
LanVPN=»ng*»
# Запрещаем доступ к нашим сетям с этих IP /IP дан для примера/
BadIP= «195.168.2.5,  122.12.0.1»

${FwCMD} -f flush
${FwCMD} -f pipe flush
${FwCMD} -f queue flush

# Get address from tablee 1 & block they for bruteblock
${FwCMD} add 50 deny ip from table\(1\) to any

# Deny IP to Me ( bad ip)
${FwCMD} add 80 deny ip from ${BadIP}

# Counter in, out
${FwCMD} add 100 count ip from any to any in via ${LanOut}
${FwCMD} add 200 count ip from any to any out via ${LanOut}

${FwCMD} add 300 check-state
${FwCMD} add 310 allow ip from any to any via lo0
${FwCMD} add 320 deny ip from any to 127.0.0.0/8
${FwCMD} add 330 deny ip from 127.0.0.0/8 to any

${FwCMD} add 340 deny ip from any to 10.0.0.0/8 in via ${LanOut}
${FwCMD} add 350 deny ip from any to 172.16.0.0/12 in via ${LanOut}
${FwCMD} add 360 deny ip from any to 192.168.0.0/16 in via ${LanOut}
${FwCMD} add 370 deny ip from any to 0.0.0.0/8 in via ${LanOut}
${FwCMD} add 380 deny ip from any to 169.254.0.0/16 in via ${LanOut}
${FwCMD} add 390 deny ip from any to 240.0.0.0/4 in via ${LanOut}
${FwCMD} add 400 deny icmp from any to any frag
${FwCMD} add 410 deny log icmp from any to 255.255.255.255 in via ${LanOut}
${FwCMD} add 420 deny log icmp from any to 255.255.255.255 out via ${LanOut}

# VPN
${FwCMD} add 450 allow ip from any to any in via ${LanVPN}
${FwCMD} add 500 divert natd gre from any to any via ${LanOut}

${FwCMD} add 510 divert natd tcp from any to any dst-port 1723 out via ${LanOut}
${FwCMD} add 520 divert natd tcp from any 1723 to any in via ${LanOut}

${FwCMD} add 530 allow tcp from any to me 1723 in via ${LanOut}
${FwCMD} add 540 allow gre from any to any

${FwCMD} add 550 fwd 127.0.0.1,3128 tcp from ${NetIn}/${NetMask} to any 80 via ${LanOut}
#${FwCMD} add 560 fwd ${IpIn},2121 tcp from ${NetIn}/${NetMask} to any 21 via ${LanOut}

${FwCMD} add 570 divert natd ip from ${NetIn}/${NetMask} to any out via ${LanOut}
${FwCMD} add 580 divert natd ip from any to ${IpOut} in via ${LanOut}

${FwCMD} add 620 deny ip from 10.0.0.0/8 to any out via ${LanOut}
${FwCMD} add 630 deny ip from 172.16.0.0/12 to any out via ${LanOut}
${FwCMD} add 640 deny ip from 192.168.0.0/16 to any out via ${LanOut}
${FwCMD} add 650 deny ip from 0.0.0.0/8 to any out via ${LanOut}
${FwCMD} add 660 deny ip from 169.254.0.0/16 to any out via ${LanOut}
${FwCMD} add 670 deny ip from 192.254.0.0/24 to any out via ${LanOut}
${FwCMD} add 680 deny ip from 224.0.0.0/4 to any out via ${LanOut}
${FwCMD} add 690 deny ip from 240.0.0.0/4 to any out via ${LanOut}

${FwCMD} add 700 allow tcp from any to any established

${FwCMD} add 750 allow ip from ${IpOut} to any out xmit ${LanOut}

${FwCMD} add 760 allow udp from any 53 to any via ${LanOut}
${FwCMD} add 770 allow udp from any to any 123 via ${LanOut}
# DNS server
#${FwCMD} add 780 allow udp from any to any 53 via ${LanOut}
${FwCMD} add 800 allow icmp from any to any icmptypes 0,8,11
# For SSH
${FwCMD} add 810 allow tcp from any to ${IpOut} 22 via ${LanOut}
# For Web-server
#${FwCMD} add 820 allow tcp from any to ${IpOut} 80 via ${LanOut}
#${FwCMD} add 830 allow tcp from any to ${IpOut} 143 via ${LanOut}
# For Post-server
#${FwCMD} add 840 allow tcp from any to ${IpOut} 110 via ${LanOut}
#${FwCMD} add 850 allow tcp from any to ${IpOut} 995 via ${LanOut}

${FwCMD} add 900 allow ip from any to any via ${LanIn}

${FwCMD} add 990 deny ip from any to any

Лучше всё переписывать руками, а не копировать. Кавычки отображаются ужасно.

Будут ещё вопросы спрашивайте.