Firewall na połączeniu modemowym w FreeBSD
Poprzedni |  |

# 6. Pytania

6.1. Dlaczego korzystasz z natd(8) i ipfw(8), a nie z filtrów wbudowanych w ppp(8)?
6.2. Otrzymuję komunikat w rodzaju “`limit 100 reached on entry 2800`”, po którym w logach nie pojawiają się informacje o zablokowanych pakietach. Czy mój firewall nadal działa?
6.3. W sieci wewnętrznej korzystam z adresów z puli prywatnej, np. z zakresu 192.168.0.0, czy mogę uzupełnić reguły firewalla wpisem w rodzaju `$fwcmd add deny all from any to 192.168.0.0:255.255.0.0 via tun0` aby uniemożliwić próby połączeń z zewnątrz z lokalnymi maszynami?
6.4. Coś musi być nie tak. Postępowałem dokładnie według wskazówek i jestem w kropce.

6.1. Dlaczego korzystasz z natd(8) i ipfw(8), a nie z filtrów wbudowanych w ppp(8)?

Mówiąc szczerze, nie ma konkretnego powodu dla którego zdecydowałem się na `ipfw` i `natd`, a nie filtrowanie wbudowane w `ppp`. Dyskusje przeprowadzone z różnymi osobami doprowadziły do stwierdzenia, iż `ipfw` jest z pewnością bardziej rozbudowany i ma większe możliwości konfiguracji niż filtry `ppp`, jest jednak trudniejszy w używaniu. Jednym z powodów mojego wyboru jest to, że wolę, by firewall działał na poziomie jądra systemu, a nie programu użytkownika.

6.2. Otrzymuję komunikat w rodzaju “`limit 100 reached on entry 2800`”, po którym w logach nie pojawiają się informacje o zablokowanych pakietach. Czy mój firewall nadal działa?

Taki komunikat oznacza jedynie, że osiągnięty został limit rejestrowania reguły. Sama reguła wciąż obowiązuje, nie będzie już jednak rejestrowana, dopóki liczniki rejestrowania nie zostaną wyzerowane; można to zrobić poleceniem `ipfw resetlog`. Innym rozwiązaniem jest zwiększenie limitu w konfiguracji jądra przy pomocy opcji `IPFIREWALL_VERBOSE_LIMIT`, tak jak jest to opisane wcześniej. Limit można także ustawić zmieniając wartość net.inet.ip.fw.verbose_limit przy pomocy sysctl(8).

6.3. W sieci wewnętrznej korzystam z adresów z puli prywatnej, np. z zakresu 192.168.0.0, czy mogę uzupełnić reguły firewalla wpisem w rodzaju `$fwcmd add deny all from any to 192.168.0.0:255.255.0.0 via tun0` aby uniemożliwić próby połączeń z zewnątrz z lokalnymi maszynami?

Nie, ponieważ wszystko co przechodzi przez `tun0` podlega tłumaczeniu adresów realizowanemu przez `natd`. Pakiety przychodzące z zewnątrz trafiają wyłącznie do dynamicznie przydzielonego adresu IP, a nie do sieci wewnętrznej. Zauważmy jednak, że można dodać regułę w rodzaju `$fwcmd add deny all from 192.168.0.4:255.255.0.0 to any via tun0`, która zabroni maszynie w sieci wewnętrznej komunikowania się ze światem przez firewall.

6.4. Coś musi być nie tak. Postępowałem dokładnie według wskazówek i jestem w kropce.

W artykule przyjmujemy, że korzystamy z userland-ppp, reguły obowiązują więc dla interfejsu `tun0`, odpowiadającemu pierwszemu połączeniu nawiązanemu przez ppp(8) (zwanemu także user-ppp). Dodatkowym połączeniom odpowiadać będą interfejsy `tun1`, `tun2` itd.

W przypadku pppd(8) jest z kolei wykorzystywany interfejs `ppp0`, jeśli więc połączenie jest realizowane za pośrednictwem pppd(8), w miejscu `tun0` trzeba wstawić `ppp0`. Poniżej przedstawiona jest szybka metoda uwzględnienia tej zmiany w regułach firewalla. Oryginalny plik z regułami zachowywany jest pod nazwą `fwrules_tun0`.

           % cd /etc/firewall
            /etc/firewall% su
            Password:
            /etc/firewall# mv fwrules fwrules_tun0
            /etc/firewall# cat fwrules_tun0 | sed s/tun0/ppp0/g > fwrules

By przekonać się, czy w użyciu jest ppp(8), czy pppd(8), można po nawiązaniu połączenia posłużyć się ifconfig(8). W przypadku połączenia nawiązanego przez pppd(8) zobaczylibyśmy coś w rodzaju (pomijając nieistotne informacje):

           % ifconfig
            (nieistotne...)
            ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1524
                        inet xxx.xxx.xxx.xxx -************-> xxx.xxx.xxx.xxx netmask 0xff000000
            (nieistotne...)

Natomiast gdy nawiązanie połączenia odbyło się za pośrednictwem ppp(8) (user-ppp), ujrzymy coś takiego:

           % ifconfig
            (nieistotne...)
            ppp0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
            (nieistotne...)
            tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1524
                    (nieistotne IPv6...)
                        inet xxx.xxx.xxx.xxx -************-> xxx.xxx.xxx.xxx netmask 0xffffff00
                        Opened by PID xxxxx
                (nieistotne...)

Poprzedni | Spis treści |
Reguły firewalla |  |

Ten i inne dokumenty można pobrać z ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

W przypadku pytań o FreeBSD prosimy przeczytać dostępną dokumentację przed kontaktem z <questions@FreeBSD.org>.
W sprawie zapytań o tę dokumentację prosimy o kontakt z <doc@FreeBSD.org>.