Страница 1 из 1

Проблема с правилами IPFW

Добавлено: 2009-02-09 11:20:43
AHapku
FreeBSD 7.1 firewall ipfw
Доброго времени суток всем :smile: У меня проблема. Необходимо закрыть порт 25 для всех, кроме почтового сервера. Пишу такие правила:

Код: Выделить всё

# правила для 25 порта
# Блокируем спамеров
# сначала разрешаем мэйлу отправлять почту
${ipfw} add allow log tcp from 172.16.0.3 to any 25 out via ${LanOut}
# Затем блокируем всех остальных
${ipfw} add deny log tcp from any to any 25 out via ${LanOut}
Перезагружаю фаервол. Правила работают:

Код: Выделить всё

00200 allow log logamount 100 tcp from 172.16.0.3 to any dst-port 25 out via fxp1
00300 deny log logamount 100 tcp from any to any dst-port 25 out via fxp1
но правило 00200 не срабатывает! фаер закрывает порт 25 вообще для всех.... В чём может быть причина?

да, ещё, IPFW SHOW показывает:

Код: Выделить всё

00200     15      720 allow log logamount 100 tcp from 172.16.0.3 to any dst-port 25 out via fxp1
00300      0        0 deny log logamount 100 tcp from any to any dst-port 25 out via fxp1
но почта по этому порту не проходит:(

Re: Проблема с правилами IPFW

Добавлено: 2009-02-09 11:59:34
hizel
полный вывод ipfw show поможет

Re: Проблема с правилами IPFW

Добавлено: 2009-02-09 13:33:06
AHapku
Вот полный ipfw show =)

Код: Выделить всё

00100     0       0 deny log logamount 100 ip from table(0) to me
00200     0       0 allow log logamount 100 tcp from 172.16.0.3 to any dst-port 25 out via fxp1
00300     0       0 deny log logamount 100 tcp from any to any dst-port 25 out via fxp1
00400  2943 2407437 nat 100 ip from 172.16.0.0/16 to any
00500   770  189355 nat 100 ip from any to 123
00600     0       0 check-state
00700     0       0 allow log logamount 100 ip from any to any via lo0
00800     0       0 deny log logamount 100 ip from any to 10.0.0.0/8 in via fxp1
00900     0       0 deny log logamount 100 ip from any to 172.16.0.0/12 in via fxp1
01000     0       0 deny log logamount 100 ip from any to 192.168.0.0/16 in via fxp1
01100     0       0 deny log logamount 100 ip from any to 0.0.0.0/8 in via fxp1
01200     0       0 deny log logamount 100 ip from any to 160.0.0.0/4 in via fxp1
01300     0       0 deny log logamount 100 ip from any to 240.0.0.0/4 in via fxp1
01400     0       0 deny log logamount 100 icmp from any to any frag
01500     0       0 deny log logamount 100 icmp from any to 255.255.255.255 in via fxp1
01600     0       0 deny log logamount 100 icmp from any to 255.255.255.255 out via fxp1
01700     0       0 deny log logamount 100 ip from 10.0.0.0/8 to any out via fxp1
01800     0       0 deny log logamount 100 ip from 172.16.0.0/12 to any out via fxp1
01900     0       0 deny log logamount 100 ip from 192.168.0.0/16 to any out via fxp1
02000     0       0 deny log logamount 100 ip from 0.0.0.0/8 to any out via fxp1
02100     0       0 deny log logamount 100 ip from 169.254.0.0/16 to any out via fxp1
02200     0       0 deny log logamount 100 ip from 224.0.0.0/4 to any out via fxp1
02300     0       0 deny log logamount 100 ip from 240.0.0.0/4 to any out via fxp1
02400   708  184798 allow log logamount 100 tcp from any to any established
02500     0       0 allow log logamount 100 ip from 123 to any out xmit fxp1
02600     0       0 allow log logamount 100 udp from any 53 to any via fxp1
02700     0       0 allow log logamount 100 udp from any to any dst-port 53 via fxp1
02800     0       0 allow log logamount 100 udp from any to any dst-port 123 via fxp1
02900     0       0 allow log logamount 100 icmp from any to any icmptypes 0,8,11
03000     0       0 allow log logamount 100 tcp from any to 123 dst-port 80 via fxp1
03100     0       0 allow log logamount 100 tcp from any to 123 dst-port 15172 via fxp1
03200     0       0 allow log logamount 100 tcp from any to 123 dst-port 143 via fxp1
03300     0       0 allow log logamount 100 tcp from any to 123 dst-port 110 via fxp1
03400    16     772 allow log logamount 100 tcp from any to any via fxp0
03500    10    1889 allow log logamount 100 udp from any to any via fxp0
03600     0       0 allow log logamount 100 icmp from any to any via fxp0
03700     0       0 deny log logamount 100 ip from any to any
65535 10103  920939 deny ip from any to any

Re: Проблема с правилами IPFW

Добавлено: 2009-02-09 13:39:05
hizel
fxp1 аплинк?
если да то вы пропускаете 172.16.0.3 в мир без nat преобразования, естественно он никуда не уйдёт :D

Re: Проблема с правилами IPFW

Добавлено: 2009-02-09 13:55:53
AHapku
т.е. правила надо ниже nat правил написать? а почему тогда работает запрещающее правило для 25-го порта?=)

Re: Проблема с правилами IPFW

Добавлено: 2009-02-09 14:18:59
hizel
а как вы определяете что оно не работает?
да и еще пару советов
1. nat пишите out via <int>/in via <int> где <int> интерфейс аплинка, на других интерфейсах он не нужен и только напрягается без дела
2. nat лучше ставить не вместе , а раздельно, в начале правил in via и в конце out via тогда между ними по всему списку правил будут нормальные dst-ip и src-ip
3. учитывайте что ipfw nat 100 from ip to ip если не выключен one_pass(по умолчанию он включен) сразу срабатывает как allow

Re: Проблема с правилами IPFW

Добавлено: 2009-02-09 14:30:14
AHapku
проверим таким образом, пытаемся подключиться с 172.16.0.3 telnet'ом к 25-му порту! с выключенными правилами всё нормально, с включенными не подключается:(

Re: Проблема с правилами IPFW

Добавлено: 2009-02-09 14:39:23
hizel
какие правила включались\выключались, 200 и 300?
если да, то я уже описал вам проблему, у вас пакеты пролетают мимо ната, и естественно дальше роутера провайдера не улетают или не должны улетать, так как src-ip так и остается 172.16.0.3, а такие ip как известно в интернетах не маршрутизируются

Re: Проблема с правилами IPFW

Добавлено: 2009-02-09 15:02:40
AHapku
То что мимо ната идёт я понял=) спасибо) Подскажите пожалуйста как мне правильно расставить правила? Вот кусок моего конфига:

Код: Выделить всё

# правила для 25 порта
# Блокируем спамеров
# сначала разрешаем мэйлу отправлять почту
#${ipfw} add allow log tcp from 172.16.0.3 to any 25 out via ${LanOut}
#${ipfw} add deny log tcp from any to any 25 out via ${LanOut}

${ipfw} add nat 100 ip from ${NetIn}/16 to any out via ${LanOut}# Пропускаем через НАТ запросы из внутренней сети
${ipfw} add nat 100 ip from any to ${IpOut} in via ${LanOut}    # Пропускаем через нат пакеты, пришедшие на внешний айпи
куда поставить запрещающее правило? ведь если его загнать под NAT оно перестанет иметь какой либо смысл...Пакеты будут уходить не доходя до него)

Re: Проблема с правилами IPFW

Добавлено: 2009-02-09 15:06:56
hizel
если вам уж очень хочется на аплинке фильтровать
1-й вариант

Код: Выделить всё

${ipfw} enable one_pass
${ipfw} add nat 100 ip from any to ${IpOut} in via ${LanOut}    

${ipfw} add nat 100 log tcp from 172.16.0.3 to any 25 out via ${LanOut}
${ipfw} add deny log tcp from any to any 25 out via ${LanOut}

${ipfw} add nat 100 ip from ${NetIn}/16 to any out via ${LanOut}
2-й вариант

Код: Выделить всё

${ipfw} enable one_pass
${ipfw} add nat 100 ip from any to ${IpOut} in via ${LanOut}    

${ipfw} add skipto 65000 log tcp from 172.16.0.3 to any 25 out via ${LanOut}
${ipfw} add deny log tcp from any to any 25 out via ${LanOut}

${ipfw} add 65000 nat 100 ip from ${NetIn}/16 to any out via ${LanOut}
смысл правда один и тот же )

Re: Проблема с правилами IPFW

Добавлено: 2009-02-09 15:12:45
AHapku
да мне просто хочется чтоб было хорошо) чтоб с моего ящика наружу спам не шёл) Вот я и нашёл только такой выход...если есть другой вариант, поделитесь пожалуйста=)

Re: Проблема с правилами IPFW

Добавлено: 2009-02-09 15:14:32
hizel
ни вопрос, вот вам вариант решения проблемы спама: не использовать вантуз(windows) :D

Re: Проблема с правилами IPFW

Добавлено: 2009-02-09 15:21:21
AHapku
нееее=) такой вариант меня никак не устраивает=)

Re: Проблема с правилами IPFW

Добавлено: 2009-02-09 16:12:02
AHapku
hizel Спасибо тебе большое=) всё заработало! Спамеры теперь сосут!=)
кстати а что такое:

Код: Выделить всё

${ipfw} enable one_pass

Re: Проблема с правилами IPFW

Добавлено: 2009-02-09 16:17:13
hizel
включение sysctl переменной net.inet.ip.fw.one_pass, подробности в man ipfw

Re: Проблема с правилами IPFW

Добавлено: 2009-02-10 1:35:55
schizoid
страшно предложить описать все одним правилом, аля ipfw add deny tcp from not me to any 25

Re: Проблема с правилами IPFW

Добавлено: 2009-02-10 8:40:40
hizel
ай-вэй! ты подорвал мой авторитет :)

Re: Проблема с правилами IPFW

Добавлено: 2009-02-10 9:29:17
AHapku
Сделал как написал товарищ schizoid, тоже работает=) но вот проблема какая возникла,почему-то не работает сайт, который находится на этом же 172.16.0.3 ip. Снаружи сайт виден, изнутри не виден! Это произошло после последних изменений в ipfw, после заркытия 25 порта

Re: Проблема с правилами IPFW

Добавлено: 2009-02-10 10:32:46
schizoid
hizel писал(а):ай-вэй! ты подорвал мой авторитет :)
сори, я нихател, чесна :)

Re: Проблема с правилами IPFW

Добавлено: 2009-02-11 9:36:47
AHapku
Проблема осталась...не виден сайт изнутри! снаружи виден! Подскажите плиииииз=) меня тётки загрызут скоро)))

Re: Проблема с правилами IPFW

Добавлено: 2009-02-11 11:02:33
schizoid
телнет на 80-й порт ходит? если да, то смотри настройки апача