кстати, интерсная идея насчет заценики правил... вот я вчера наконец-то сделал свой список... правда, есть недостатки, которые, надеюсь, поправить смогу:
1. по ssh я не могу выйти в мир
2. у юзера впн соединение наружу не пашет (идет коннект к серваку, но авторизация подвисает и обламывается)
3. сомнение берет насчет разрешения протоколов, приходится исходящие разрешать с роутера...
4. nmap говорит, что все порты открыты (сканировали снаружи)
вообщем, список буду грейдить. Стандартный роутер, который как раз чаще всего и нужен новичкам типа меня... Покритикуйте меня
Хочется ещё сделать защиту от скана и плохих пакетов. Также реализовать защиту от дос-атак... Но это уже после выходных.
#!/bin/sh
out_ip="внешний адрес"
out_iface="fxp0"
vpn_ip="впн адрес"
vpn_iface="tun0"
local_ip="внутренний адрес"
localnet="внутреняя сеть"
local_iface="fxp1"
localback_ip="127.0.0.0/8"
localback_iface="lo0"
#### flush rules ####
/sbin/ipfw -f flush
#### allow localback ####
/sbin/ipfw add 00005 pass all from any to any via ${localback_iface}
/sbin/ipfw add 00006 deny all from any to ${localback_ip}
#### antispoofing ####
/sbin/ipfw add 00007 deny all from ${localback_ip} to any via ${out_iface}
/sbin/ipfw add 00008 deny all from 192.0.0.0 to any via ${out_iface}
/sbin/ipfw add 00009 deny all from 10.0.0.0 to any via ${out_iface}
/sbin/ipfw add 00010 deny all from 172.0.0.0 to any via ${out_iface}
будет у меня впн... но потом
#### allow vpn ####
/sbin/ipfw add 00039 deny all from ${localnet} to ${vpn_ip} via ${local_iface}
Думаю в локалке нет хакеров, хотя тут надо делать ужесточение правил...
#### allow localnet ####
/sbin/ipfw add 00050 pass all from ${localnet} to any via ${local_iface}
/sbin/ipfw add 00051 pass all from any to ${localnet} via ${local_iface}
нат с редиректом на прокси, ну чтобы сайты смотреть и обрезать лишнее
#### allow nat ####
/sbin/ipfw add 00060 fwd 127.0.0.1,8888 tcp from ${localnet} to any 80 via ${out_iface}
/sbin/ipfw add 00061 divert natd all from ${localnet} to not ${localnet} via ${out_iface}
/sbin/ipfw add 00062 divert natd all from any to ${out_ip} via ${out_iface}
ПИНГУ ВЕЧНАЯ СВОБОДА!!!
#### eternal freedom for ping

####
/sbin/ipfw add 00070 pass ICMP from any to any
разрешаю протоколы....
#### allow FTP ####
/sbin/ipfw add 00096 pass tcp from me 1025-65535 to any 20 via ${out_iface}
/sbin/ipfw add 00097 pass tcp from any 20 to me 1025-65535 via ${out_iface}
/sbin/ipfw add 00098 pass tcp from me 1025-65535 to any 21 via ${out_iface}
/sbin/ipfw add 00099 pass tcp from any 21 to me 1025-65535 via ${out_iface}
/sbin/ipfw add 00100 pass tcp from ${localnet} 1025-65535 to any 20 via ${out_iface}
/sbin/ipfw add 00101 pass tcp from any 20 to ${localnet} 1025-65535 via ${out_iface}
/sbin/ipfw add 00102 pass tcp from ${localnet} 1025-65535 to any 21 via ${out_iface}
/sbin/ipfw add 00103 pass tcp from any 21 to ${localnet} 1025-65535 via ${out_iface}
#### allow SSH ####
/sbin/ipfw add 00118 pass tcp from me 1025-65535 to any 22 via ${out_iface}
/sbin/ipfw add 00119 pass tcp from any 22 to me 1025-65535 via ${out_iface} established
/sbin/ipfw add 00120 pass tcp from ${localnet} 1025-65535 to any 22
/sbin/ipfw add 00121 pass tcp from any 22 to ${localnet} 1025-65535
#### allow SMTP ####
/sbin/ipfw add 00150 pass tcp from me 1025-65535 to any 25 via ${out_iface}
/sbin/ipfw add 00151 pass tcp from ${localnet} 1025-65535 to any 25 via ${out_iface}
/sbin/ipfw add 00152 pass tcp from any 25 to ${localnet} 1025-65535 via ${out_iface} established
#### allow DNS ####
/sbin/ipfw add 00200 pass udp from me 1025-65535 to any 53 out via ${out_iface}
/sbin/ipfw add 00201 pass udp from any 53 to me 1025-65535 in via ${out_iface}
/sbin/ipfw add 00202 pass udp from any 53 to ${localnet} 1025-65535 in via ${out_iface}
#### allow HTTP ####
/sbin/ipfw add 00250 pass tcp from me 1025-65535 to any 80 via ${out_iface}
/sbin/ipfw add 00251 pass tcp from any 80 to me 1025-65535 via ${out_iface} established
/sbin/ipfw add 00253 pass tcp from any 80 to ${localnet} 1025-65535 via ${out_iface} established
#### POP3 ####
/sbin/ipfw add 300 pass tcp from me 1025-65535 to any 110 via ${out_iface}
/sbin/ipfw add 300 pass tcp from ${localnet} 1025-65535 to any 110 via ${out_iface}
/sbin/ipfw add 301 pass tcp from any 110 to ${localnet} 1025-65535 via ${out_iface}
#/sbin/ipfw add 00300 pass tcp from ${localnet} 1025-65535 to any 110 out via ${out_iface}
#/sbin/ipfw add 00301 pass tcp from any 110 to ${localnet} 1025-65535 in via ${out_iface}
#### HTTPS ####
/sbin/ipfw add 00350 pass tcp from me 1025-65535 to any 443 via ${out_iface}
/sbin/ipfw add 00350 pass tcp from ${localnet} 1025-65535 to any 443 via ${out_iface}
/sbin/ipfw add 00351 pass tcp from any 443 to ${localnet} 1025-65535 via ${out_iface} established
Это счетчик..
#### COUNTER ####
#/sbin/ipfw add count tcp from any to <client_ip> in via ${out_iface}
#/sbin/ipfw add count tcp from <client_ip> to any out via ${out_iface}
это тоже на уровне эксперимента
#### security ####
#/sbin/ipfw add 65000 pass tcp from me 1025-65535 to any 1025-65535 via ${out_iface}
#/sbin/ipfw add 65501 pass tcp from any 1025-65535 to ${localnet} 1025-65535 via ${out_iface} established
#yanki, go home
/sbin/ipfw add 65534 deny all from any to any
эта секця нужна для того, чтобы вернуться к старым настройкам файрвола и при неверных правилах, чтобы не пришлось с монитором и клавой бежать к роутеру... Если в две минуты работает нормально, то можно комментировать..
###############
###############
#sleep 120
#/sbin/ipfw -f flush
#/bin/sh /etc/rc.firewall