Ну вот я и добрался до фаервола. Ядро скомпилировано со всеми соответствующими опциями для ipfw и nat. Сразу разобраться с правилами не получилось, подскажите - а сущетсвуют ли конфиги-примеры, конфиги-шаболны, не знаю даже как их назвать... Что бы с комментариями, комментируешь что не нужно, меняешь, смотришь как работает. Я думаю так проще будет разобраться, подкиньте ссылок, а может и своих конфигов. Заранее спасибо!
> Ну вот я и добрался до фаервола. Ядро скомпилировано со всеми соответствующими
> опциями для ipfw и nat. Сразу разобраться с правилами не получилось,
> подскажите - а сущетсвуют ли конфиги-примеры, конфиги-шаболны, не знаю даже как
> их назвать... Что бы с комментариями, комментируешь что не нужно, меняешь,
> смотришь как работает. Я думаю так проще будет разобраться, подкиньте ссылок,
> а может и своих конфигов. Заранее спасибо!А погуглить?
http://www.lissyara.su/articles/freebsd/tuning/ipfw_nat/
Были дела. Сегодня добрался до сервера, который требуется настроить. Вернее доберусь завтра, сейчас в блокнотике набросал правила.Что крутится на сервере и уже настроено (фаервол - опен): почта sendmail, впн mpd5, веб-сервер apache (на нем 1 сайт), кэширующий прокси squid+squidguard (должен быть прозрачным) для выхода в интернет из локальной сети.
Посмотрел примеры конфигов, покопался в сети, вот что вышло:
#IPFW firewall: /etc/firewall.conf
ipfw="/sbin/ipfw -q"
local="hn0"
local_ip="10.0.0.100"
inet="hn1"
inet_ip="XXX.XXX.XXX.XXX"#clear rules
${ipfw} -q -f flush#loopback
${ipfw} add allow all from any to any via lo0
${ipfw} add deny all from any to 127.0.0.0/8
${ipfw} add deny all from 127.0.0.0/8 to any
${ipfw} add deny tcp from any to any fraq#anti-hack from outside
${ipfw} add deny ip from me to any in recv ${local}#deny netbios
${ipfw} add deny ip from any 137-139 to any
${ipfw} add deny ip from any to any 137-139#SSH for localhost allow
${ipfw} add allow tcp from me 22 to any
${ipfw} add allow tcp from any to me 22#DNS transfers to world
${ipfw} add allow udp from me 53 to any
${ipfw} add allow udp from any to me 53#DNS, NTP, SNMPx2, DNSs
${ipfw} add allow udp from me to any 53,123,161
${ipfw} add allow udp from any 53,123,161 to me#VPN-connect - MPD5
${ipfw} add allow tcp from me 1723 to any keep-state
# GRE for MPD5
${ipfw} add allow gre from any to any#PROXY (прозрачный)
${ipfw} add fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any 80-83,8080-8088 out via ${inet}#FTP & HTTP from this server to world
${ipfw} add allow tcp from me to any 20,21,80,443 keep-state
#Passive FTP backports
${ipfw} add allow tcp from me to any 49151-65535 keep-state#for apache
${ipfw} add allow tcp from any to ${inet_ip} 80 via ${inet}#nat
${ipfw} nat config log if ${inet} reset same_ports
${ipfw} add nat 1 ip from any to any via ${inet}#MAIL (SMTP,POP3,IMAP,IMAPs, POP3s)
${ipfw} add allow tcp from 10.0.0.0/24{1-231,240-254} to any 25,110,143,993,995 keep-state
${ipfw} add allow tcp from any to ${inet_ip} 25,110,143,993,995 via ${inet}#log
${ipfw} add deny log logamount 3000 all from any to any${ipfw} add deny ip from any to any
Уверен, что есть косяки и несостыковки, просьба подправить и направить на путь истинный. Так же с ходу не разобрался - как ввести некоторые ip из локалки, которым разрешено все и в инет бы они ходили не через прокси и торренты качать, если приспичит?))) Подскажите, пожалуйста!? Заранее спасибо!
Вам бы почитать в общем о стратегии написания правил для файерволов. Просто, кажеться у вас нет понятия вцелом. Извините если обидел :-)>[оверквотинг удален]
> #loopback
> ${ipfw} add allow all from any to any via lo0
> ${ipfw} add deny all from any to 127.0.0.0/8
> ${ipfw} add deny all from 127.0.0.0/8 to any
> ${ipfw} add deny tcp from any to any fraq
> #anti-hack from outside
> ${ipfw} add deny ip from me to any in recv ${local}
> #deny netbios
> ${ipfw} add deny ip from any 137-139 to any
> ${ipfw} add deny ip from any to any 137-139Зачем это?? Стратегия: запрещаем все, кроме нужных портов\протоколов. Фаер работает по первому срабатыванию правила, поэтому тут мы открываем "окна" (порты, если хотите).
>[оверквотинг удален]
> #DNS transfers to world
> ${ipfw} add allow udp from me 53 to any
> ${ipfw} add allow udp from any to me 53
> #DNS, NTP, SNMPx2, DNSs
> ${ipfw} add allow udp from me to any 53,123,161
> ${ipfw} add allow udp from any 53,123,161 to me
> #VPN-connect - MPD5
> ${ipfw} add allow tcp from me 1723 to any keep-state
> # GRE for MPD5
> ${ipfw} add allow gre from any to anyУ вас на сервере ВПН- клиент? Если не клиент, а сервер, то лучше указать дополнительно к keep-state опцию limit XX. Где ХХ - нужное вам число. Подробнее - в мане.
> #PROXY (прозрачный)
> ${ipfw} add fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any 80-83,8080-8088 out via
> ${inet}
> #FTP & HTTP from this server to world
> ${ipfw} add allow tcp from me to any 20,21,80,443 keep-state
> #Passive FTP backports
> ${ipfw} add allow tcp from me to any 49151-65535 keep-stateВы написали правила с keep-state. А где правило check-state, которое будет фактически пропускать ваш keep-state-трафик в обратном направлении??
> #for apache
> ${ipfw} add allow tcp from any to ${inet_ip} 80 via ${inet}А фильтрацию по флагам тут не делаете? Вот пример из Хендбука
# Allow in standard www function because I have apache server
$cmd 00400 allow tcp from any to me 80 in via $pif setup limit src-addr 2
>[оверквотинг удален]
> ${ipfw} add allow tcp from 10.0.0.0/24{1-231,240-254} to any 25,110,143,993,995 keep-state
> ${ipfw} add allow tcp from any to ${inet_ip} 25,110,143,993,995 via ${inet}
> #log
> ${ipfw} add deny log logamount 3000 all from any to any
> ${ipfw} add deny ip from any to any
> Уверен, что есть косяки и несостыковки, просьба подправить и направить на путь
> истинный. Так же с ходу не разобрался - как ввести некоторые
> ip из локалки, которым разрешено все и в инет бы они
> ходили не через прокси и торренты качать, если приспичит?))) Подскажите, пожалуйста!?
> Заранее спасибо!Ваше рулесет, к сожалению, сплошной косяк и нестыковки. Поднимайте Виртуалбокс и учите. Это и есть направление в нужное русло...
P.S.: Пробуйте организовать per-interface acl, потом посмотрите как будет все просто и понятно.
#for apache
${ipfw} allow tcp from me to any dst-port 80,443 out via ${inet}
${ipfw} allow tcp from any 80,443 to me in via ${inet}
${ipfw} allow tcp from me 80,443 to any out via ${inet}
${ipfw} allow tcp from any to me dst-port 80,443 in via ${inet}Вот такой пример мне кинули...
как этого и следовало ожидать и как вы и говорили сервер с таким рулесетом не пингуется, сам не пингует, не доступен по ssh и т.п.Давайте попорядку с каких правил начать?
вот, что у меня вышло (hn0 - смотрит в сеть, hn1 - в нет):ipfw show
00100 0 0 check-state
00200 45012 8140672 allow ip from any to any via lo0
00300 0 0 deny ip from any to 127.0.0.0/8
00400 0 0 deny ip from 127.0.0.0/8 to any
00500 0 0 deny icmp from any to any frag
00600 0 0 deny ip from any to 10.0.0.0/24 in via hn1
00700 0 0 deny log logamount 1000 icmp from any to 255.255.255.255 in via hn1
00800 0 0 deny log logamount 1000 icmp from any to 255.255.255.255 out via hn1
00900 908367 55805652 fwd 127.0.0.1,3128 tcp from 10.0.0.0/24 to any dst-port 80-83,8080-8088
01000 1906640 1524770504 nat 123 ip from any to any via hn1
01100 1226094 1450435649 allow tcp from any to any established
01200 0 0 allow ip from 83.246.140.139 to any out xmit hn1
01300 0 0 allow igmp from any to 224.0.0.0/8 in via hn1
01400 0 0 allow igmp from any to 239.0.0.0/8 in via hn101500 0 0 allow udp from any to 239.0.0.0/8 in via hn1
01600 0 0 allow udp from any 53 to any via hn1
01700 0 0 allow udp from any to any dst-port 123 via hn1
01800 0 0 allow tcp from any to me dst-port 22 in via hn1
01900 0 0 allow tcp from any to me dst-port 80 in via hn1
02000 0 0 allow tcp from any to me dst-port 20,21,64000-64999 via hn1
02100 6 336 allow icmp from any to any icmptypes 0,8,11
02200 37849 4535099 allow ip from any to any via hn0
02300 0 0 deny log logamount 10000 ip from any to any
65535 75 4753 deny ip from any to anyОсталось добавить завтра правила для мпд. Сейчас вроде бы все работает, но.... Видно что натится, заворачивается на сквид, а кое-что зарубается... Но вот сижу я сейчас весь вечер по ssh из дома, а в правиле 1800 по нулям... Где ошибка в конфиге?
> Осталось добавить завтра правила для мпд. Сейчас вроде бы все работает, но....
> Видно что натится, заворачивается на сквид, а кое-что зарубается... Но вот
> сижу я сейчас весь вечер по ssh из дома, а в
> правиле 1800 по нулям... Где ошибка в конфиге?Такая я же беда и у меня, сижу весь день разбираюсь, почему мой ipfw не хочет пробрасывать пакеты идущие с 80 порта для squid, чтобы не делал счетчик всегда показывает ноль. Кто знает, в чем у меня трабл ?
--------------------------------------------------------
#!/bin/shipfw -q flush
sysctl net.inet.ip.fw.autoinc_step=10
cmd="ipfw -q add"pif="vr0" # WAN interface
mylan="192.168.0.0/24" # LAN net
oip="192.168.1.6" # IP WAN interface
iif="fxp0" #LAN interface$cmd 0010 allow ip from any to any via lo0 #dlya petlevogo interface
$cmd allow ip from $mylan to any in via $iif
$cmd allow ip from any to $mylan out via $iif$cmd allow ip from any to any 53 in via $pif # dlya DNS 53 port
$cmd allow ip from any 53 to $oip in via $pif # dlya DNS 53 port
$cmd divert natd ip4 from $mylan to any out via $pif #NATD
$cmd divert natd ip4 from to any to $oip in via $pif #NATD$cmd allow ip from $oip to any out via $pif # vhodyash. otvet na interface WAN
$cmd allow ip from any to $oip in via $pif
$cmd allow ip from $mylan to any in via $iif
$cmd allow ip from $mylan to any out via $pif
$cmd allow ip from any to $mylan in via $pif
$cmd allow ip from any to $mylan out via $iif$cmd fwd 192.168.0.1,3128 tcp from any to any 80 out via fxp0 #vot eto glavnaya ZASADA, ne rabotaet forwarding!!!!
$cmd deny log all from any to any
-------------------------------------------------------------------------