помогите с правилами ipfw

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Electronik
капитан
Сообщения: 1593
Зарегистрирован: 2008-11-15 17:32:56
Откуда: Минск
Контактная информация:

помогите с правилами ipfw

Непрочитанное сообщение Electronik » 2012-02-01 17:25:26

что то не понимаю почему не работают
сеть такая.
статикой прописана сеть провайдера вида 10.0.0.0/8.
Через pptp поднимается интернет.
Внутренняя сетка 192.168.100.0/24.
На шлюзе стоит vpn сервер на mpd5 к которому подключаются филиалы.
Проблема в том что после срабатывания правил ipfw к серверу не подключиться, и перестают работать squid((13) Permission denied).
Т.к mpd запускается после ipfw, то в стартовые скрипты были добавлены правила для ipfw.
Вот сам конфиг ipfw

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

cat firewall.conf 
#!/bin/sh

########################
FwCMD="/sbin/ipfw"
LanOut="rl0" #Внешний интерфейс
LanIn="alc0" #внутренний интерфейс
NetIn="192.168.100.0" # Внутренняя сеть
NetOut="10.0.0.0"
NetInMask="24"
NetOutMask="8"
IpOut="10.20.103.146"
IpIn="192.168.100.253"
########################

# Сбрасываем все правила:
${FwCMD} -f flush

${FwCMD} add check-state

${FwCMD} add 100 allow ip from any to any via lo0
${FwCMD} add 200 deny ip from any to 127.0.0.0/8
${FwCMD} add 201 deny ip from 127.0.0.0/8 to any
${FwCMD} add 202 deny ip from any to 172.16.0.0/12 in via ${LanOut}
${FwCMD} add 203 deny ip from any to 0.0.0.0/8 in via ${LanOut}
${FwCMD} add 204 deny ip from any to 169.254.0.0/16 in via ${LanOut}
${FwCMD} add 205 deny ip from any to 240.0.0.0/4 in via ${LanOut}
${FwCMD} add 206 deny icmp from any to any frag
${FwCMD} add 207 deny log icmp from any to 255.255.255.255 in via ${LanOut}
${FwCMD} add 208 deny log icmp from any to 255.255.255.255 out via ${LanOut}
${FwCMD} add 209 deny ip from 172.16.0.0/12 to any out via ${LanOut}
${FwCMD} add 210 deny ip from 0.0.0.0/8 to any out via ${LanOut}
${FwCMD} add 211 deny ip from 169.254.0.0/16 to any out via ${LanOut}
${FwCMD} add 212 deny ip from 224.0.0.0/4 to any out via ${LanOut}
${FwCMD} add 213 deny ip from 240.0.0.0/4 to any out via ${LanOut}
${FwCMD} add 300 allow tcp from any to any established
${FwCMD} add 400 allow ip from ${IpOut} to any out xmit ${LanOut}
${FwCMD} add 500 allow udp from any 53 to any via ${LanOut}
${FwCMD} add 600 allow udp from any to any 123 via ${LanOut}
${FwCMD} add 700 allow icmp from any to any icmptypes 0,8,11
${FwCMD} add 800 allow gre from any to any via ${LanOut}
${FwCMD} add 900 allow tcp from any to any 1723 via ${LanOut}

${FwCMD} add 1600 allow tcp from any to any via ${LanIn}
${FwCMD} add 1700 allow udp from any to any via ${LanIn}
${FwCMD} add 1800 allow icmp from any to any via ${LanIn}

${FwCMD} add 20000 allow log ip from any to any
${FwCMD} add 60000 deny log ip from any to any
${FwCMD} add deny ip from any to any
вот скрипты mpd
up

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

#!/bin/sh
route add -net убрал ip специально
route add -net убрал ip специально
route add -net убрал ip специально
route add -net убрал ip специально
route change default 10.20.103.145 -ifp ng0
FwCMD="/sbin/ipfw"
InetIface="Ng0"
InetIp="внешний ip"
NetIn="192.168.100.0"
NetOut="10.0.0.0"
NetInMask="24"
NetOutMask="8"
IpOut="10.20.103.146"
IpIn="192.168.100.253"
${FwCMD} add 215 deny ip from any to 172.16.0.0/12 in via ${InetIface}
${FwCMD} add 216 deny ip from any to 0.0.0.0/8 in via ${InetIface}
${FwCMD} add 217 deny ip from any to 169.254.0.0/16 in via ${InetIface}
${FwCMD} add 218 deny ip from any to 240.0.0.0/4 in via ${InetIface}
${FwCMD} add 219 deny log icmp from any to 255.255.255.255 in via ${InetIface}
${FwCMD} add 220 deny log icmp from any to 255.255.255.255 out via ${InetIface}
${FwCMD} add 226 allow tcp from ${NetIn}/${NetMask} to any 80 via ${InetIface}
#${FwCMD} add 10007 divert natd ip from ${NetIn}/${NetMask} to any out via ${InetIface}
#${FwCMD} add 10008 divert natd ip from any to ${IpOut} in via ${InetIface}
${FwCMD} add 221 deny ip from 172.16.0.0/12 to any out via ${InetIface}
#${FwCMD} add 10010 deny ip from 192.168.0.0/16 to any out via ${InetIface}
${FwCMD} add 222 deny ip from 0.0.0.0/8 to any out via ${InetIface}
${FwCMD} add 223 deny ip from 169.254.0.0/16 to any out via ${InetIface}
${FwCMD} add 224 deny ip from 224.0.0.0/4 to any out via ${InetIface}
${FwCMD} add 225 deny ip from 240.0.0.0/4 to any out via ${InetIface}
${FwCMD} add 1000 allow ip from ${InetIp} to any out xmit ${InetIface}
${FwCMD} add 1000 allow ip from ${IpIn} to any out xmit ${InetIface}
${FwCMD} add 1100 allow udp from any 53 to any via ${InetIface}
${FwCMD} add 1200 allow udp from any to any 123 via ${InetIface}
${FwCMD} add 1300 allow gre from any to any via ${InetIface}
${FwCMD} add 1400 allow tcp from any to any 1723 via ${InetIface}[code]
${FwCMD} add 1500 allow tcp from any 1723 to any via ${InetIface}
[/code]

скрипт down

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

#!/bin/sh
route change default 10.20.103.145
FwCMD="/sbin/ipfw"
${FwCMD} delete 214 215 216 217 218 219 220 221 222 223 224 225 1000 1100 1200 1300 1400 1500 226
ipfw show

ipfw show

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

00100       0          0 check-state
00100   18000    2118354 allow ip from any to any via lo0
00200       0          0 deny ip from any to 127.0.0.0/8
00201       0          0 deny ip from 127.0.0.0/8 to any
00202       0          0 deny ip from any to 172.16.0.0/12 in via rl0
00203       0          0 deny ip from any to 0.0.0.0/8 in via rl0
00204       0          0 deny ip from any to 169.254.0.0/16 in via rl0
00205       0          0 deny ip from any to 240.0.0.0/4 in via rl0
00206       0          0 deny icmp from any to any frag
00207       0          0 deny log icmp from any to 255.255.255.255 in via rl0
00208       0          0 deny log icmp from any to 255.255.255.255 out via rl0
00209       0          0 deny ip from 172.16.0.0/12 to any out via rl0
00210       0          0 deny ip from 0.0.0.0/8 to any out via rl0
00211       0          0 deny ip from 169.254.0.0/16 to any out via rl0
00212       0          0 deny ip from 224.0.0.0/4 to any out via rl0
00213       0          0 deny ip from 240.0.0.0/4 to any out via rl0
00215       0          0 deny ip from any to 172.16.0.0/12 in via Ng0
00216       0          0 deny ip from any to 0.0.0.0/8 in via Ng0
00217       0          0 deny ip from any to 169.254.0.0/16 in via Ng0
00218       0          0 deny ip from any to 240.0.0.0/4 in via Ng0
00219       0          0 deny log icmp from any to 255.255.255.255 in via Ng0
00220       0          0 deny log icmp from any to 255.255.255.255 out via Ng0
00221       0          0 deny ip from 172.16.0.0/12 to any out via Ng0
00222       0          0 deny ip from 0.0.0.0/8 to any out via Ng0
00223       0          0 deny ip from 169.254.0.0/16 to any out via Ng0
00224       0          0 deny ip from 224.0.0.0/4 to any out via Ng0
00225       0          0 deny ip from 240.0.0.0/4 to any out via Ng0
00226       0          0 allow tcp from any to any dst-port 80 via Ng0
00300 1519871 1351807337 allow tcp from any to any established
00400  336218   41893166 allow ip from 10.20.103.146 to any out xmit rl0
00500    2119     640303 allow udp from any 53 to any via rl0
00600      16       1216 allow udp from any to any dst-port 123 via rl0
00700      94       7904 allow icmp from any to any icmptypes 0,8,11
00800  449477  583082331 allow gre from any to any via rl0
00900       0          0 allow tcp from any to any dst-port 1723 via rl0
01000       0          0 allow ip from /*внешний ip*/ to any out xmit Ng0
01000       0          0 allow ip from 192.168.100.253 to any out xmit Ng0
01100       0          0 allow udp from any 53 to any via Ng0
01200       0          0 allow udp from any to any dst-port 123 via Ng0
01300       0          0 allow gre from any to any via Ng0
01400       0          0 allow tcp from any to any dst-port 1723 via Ng0
01401       0          0 allow tcp from any to any dst-port 1723 via alc0
01402       0          0 allow tcp from any 1723 to any via alc0
01403       0          0 allow gre from any to any via alc0
01500       0          0 allow tcp from any 1723 to any via Ng0
01600   18488    1021544 allow tcp from any to any via alc0
01700   42485    2772638 allow udp from any to any via alc0
01800    2013     112728 allow icmp from any to any via alc0
20000   10337    1341439 allow log ip from any to any
60000   11881     689338 deny log ip from any to any
60100       0          0 deny ip from any to any
60200       0          0 allow ip from any to any
65535    3537     373462 deny ip from any to any
если убрать правило 20000, то пропадает инет на squid, хотя из консоли хосты пингуются нормально, пакеты ходят. Из внешки к vpn серверу тоже коннекты не идут, хотя gre трафик и порт 1723 открыты.
Предскажем будущее hw по логам и дампу, снимем сглаз и порчу с рута, поможем придумать пароль(С)
Блог

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Shuba
ст. сержант
Сообщения: 365
Зарегистрирован: 2008-03-25 10:58:21
Откуда: Минск
Контактная информация:

Re: помогите с правилами ipfw

Непрочитанное сообщение Shuba » 2012-02-02 14:42:36

1. Интерфейс при поднятии mpd будет ng0 а не Ng0 (но влияет ли регистр названия интерфейсов на приавила - точно не уверен)
2. В ipfw show я не увидет всех правил, которые должны подниматься при старте mpd (10007 и 10008 к примеру)
3. А почему не юзаешь ядерный нат?
4. Зачем столько правил вносить при поднятии интерфейса, почему не прописать их статически в конфиге фаера, грузящегося изначально?
Сила ночи, сила дня - одинакова фигня!

Аватара пользователя
Electronik
капитан
Сообщения: 1593
Зарегистрирован: 2008-11-15 17:32:56
Откуда: Минск
Контактная информация:

Re: помогите с правилами ipfw

Непрочитанное сообщение Electronik » 2012-02-02 17:00:58

1) что то ступил с регистром
2)10007 и 10008 закоментированы
3)потому что обновляюсь freebsd-update, а не через csup
4)Т.к mpd запускается после ipfw, то в стартовые скрипты были добавлены правила для ipfw. интерфейсов еще нет, поэтому правила работать не будут.
Предскажем будущее hw по логам и дампу, снимем сглаз и порчу с рута, поможем придумать пароль(С)
Блог

Аватара пользователя
Shuba
ст. сержант
Сообщения: 365
Зарегистрирован: 2008-03-25 10:58:21
Откуда: Минск
Контактная информация:

Re: помогите с правилами ipfw

Непрочитанное сообщение Shuba » 2012-02-02 22:05:04

3. Это не мешаем использовать ядерный нат, это мешает использовать forward-инг
4.

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

ifconfig
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
        ether 00:1c:c0:10:ae:ee
        inet 10.1.1.8 netmask 0xffffff00 broadcast 10.1.1.255
        inet6 fe80::21c:c0ff:fe10:aeee%re0 prefixlen 64 scopeid 0x1
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x8
        inet 127.0.0.1 netmask 0xff000000
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
vboxnet0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 0a:00:27:00:00:00
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
[shuba@mail ~]$ sudo ipfw show
00010 2091885 393881417 count ip from any to any via re0
00100     637    141955 deny ip from any to any not verrevpath in
00200       0         0 deny ip from any to any frag
00300     762    145710 allow ip from any to any via lo0
00400       0         0 deny ip from any to 127.0.0.0/8
00500       0         0 deny ip from 127.0.0.0/8 to any
00600       0         0 check-state
00700  389808 258415991 allow ip from 10.1.1.8 to any out via re0 keep-state
00800     322     35993 allow tcp from 10.1.1.0/24 to 10.1.1.8 dst-port 5190 in via re0 setup limit src-addr 5
00900     508     30432 allow icmp from 10.1.1.0/24 to 10.1.1.8 in icmptypes 0,3,8,11 via re0 keep-state
01000       0         0 allow tcp from table(1) to 10.1.1.8 dst-port 80 in via re0 setup limit src-addr 5
01100       0         0 allow tcp from table(1) to 10.1.1.8 dst-port 443 in via re0 setup limit src-addr 5
01500     598    123614 allow tcp from table(1) to 10.1.1.8 dst-port 445 in via re0 keep-state
01600     670     29456 allow tcp from table(1) to 10.1.1.8 dst-port 139 in via re0 keep-state
01700       0         0 allow udp from table(1) to 10.1.1.8 dst-port 137 in via re0 keep-state
01800       0         0 allow udp from table(1) to 10.1.1.8 dst-port 138 in via re0 keep-state
01900       4       336 allow ip from me to any out via tun0 keep-state
65535 1699376 135107470 deny ip from any to any
[shuba@mail ~]$ sudo ipfw add 2000 pass ip from any to any via ng0
02000 allow ip from any to any via ng0
[shuba@mail ~]$ sudo ipfw show
00010 2092371 393922011 count ip from any to any via re0
00100     637    141955 deny ip from any to any not verrevpath in
00200       0         0 deny ip from any to any frag
00300     762    145710 allow ip from any to any via lo0
00400       0         0 deny ip from any to 127.0.0.0/8
00500       0         0 deny ip from 127.0.0.0/8 to any
00600       0         0 check-state
00700  389808 258415991 allow ip from 10.1.1.8 to any out via re0 keep-state
00800     503     52797 allow tcp from 10.1.1.0/24 to 10.1.1.8 dst-port 5190 in via re0 setup limit src-addr 5
00900     508     30432 allow icmp from 10.1.1.0/24 to 10.1.1.8 in icmptypes 0,3,8,11 via re0 keep-state
01000       0         0 allow tcp from table(1) to 10.1.1.8 dst-port 80 in via re0 setup limit src-addr 5
01100       0         0 allow tcp from table(1) to 10.1.1.8 dst-port 443 in via re0 setup limit src-addr 5
01500     598    123614 allow tcp from table(1) to 10.1.1.8 dst-port 445 in via re0 keep-state
01600     670     29456 allow tcp from table(1) to 10.1.1.8 dst-port 139 in via re0 keep-state
01700       0         0 allow udp from table(1) to 10.1.1.8 dst-port 137 in via re0 keep-state
01800       0         0 allow udp from table(1) to 10.1.1.8 dst-port 138 in via re0 keep-state
01900       4       336 allow ip from me to any out via tun0 keep-state
02000       0         0 allow ip from any to any via ng0
65535 1699681 135131260 deny ip from any to any
Толком не понятна схема работы. Предполагаю, что у тебя mpd работает и в качестве клиента, и в качестве сервера.
Почему два 100-ых правила? Есть проверка состояния check-state, но нигде нет правил с поддержкой сохранения состояния (keep-state, modulate state и т.п.). Именно поэтому при удавлении 2000 у тебя всё пропадает.
Вообщем, земеля, через форум долго решать проблему, если нужна помощь - стучи джаббер или асю, в прифиле имеется.
Сила ночи, сила дня - одинакова фигня!

Аватара пользователя
Electronik
капитан
Сообщения: 1593
Зарегистрирован: 2008-11-15 17:32:56
Откуда: Минск
Контактная информация:

Re: помогите с правилами ipfw

Непрочитанное сообщение Electronik » 2012-02-07 20:30:33

Да mpd в качестве сервера и клиента. Еще не могц с НАТом разобраться, я так понимаю должно натить на ng0, но его еще нет при загрузке.
Предскажем будущее hw по логам и дампу, снимем сглаз и порчу с рута, поможем придумать пароль(С)
Блог

Аватара пользователя
Electronik
капитан
Сообщения: 1593
Зарегистрирован: 2008-11-15 17:32:56
Откуда: Минск
Контактная информация:

Re: помогите с правилами ipfw

Непрочитанное сообщение Electronik » 2012-02-08 17:59:33

А что такое фрагментированные пакеты? просто есть софтина которая сама формирует пакеты и передаёт их. Так вот когда есть правило

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

00206 deny ip from any to any frag
то пакеты эта софтина принимает, но вот отправить не может, правило его рубит. Я так понимаю нужно писать баг репорты разработчику, но не знаю как емы это объяснить.
Предскажем будущее hw по логам и дампу, снимем сглаз и порчу с рута, поможем придумать пароль(С)
Блог