Nie to chcieliœmy osi¹gn¹æ.
Na szczêœcie istnieje rozwi¹zanie tego problemu. Polecenie ipfwadm posiada inn¹
opcjê, która pozwala nam budowaæ regu³y odfiltrowuj¹ce datagramy z ustawionym
bitem SYN. Zmieñmy nasz przyk³ad tak, aby uwzglêdnia³ tê regu³ê:
# ipfwadm -F -a deny -P tcp -S 0/0 80 -D 172.16.10.0/24 -y
# ipfwadm -F -a accept -P tcp -S 172.16.1.0/24 -D 0/0 80 -b
Opcja –y powoduje, ¿e regu³a pasuje tylko wtedy, je¿eli bit SYN w datagramie jest
ustawiony. A wiêc nasza nowa regu³a mówi: „Nie przepuszczaj ¿adnych datagra-
mów TCP przeznaczonych dla naszej sieci, które pochodz¹ z jakiegoœ miejsca i maj¹
port Ÿród³owy 80 i ustawiony bit SYN” albo „Nie przepuszczaj ¿adnych ¿¹dañ od
hostów na port 80”.
Dlaczego umieœciliœmy tê szczególn¹ regu³ê przed regu³¹ g³ówn¹? Regu³y firewalla
dzia³aj¹ tak, ¿e s¹ dopasowywane kolejno. Obie regu³y bêd¹ pasowa³y do
datagramów, których nie chcemy przepuœciæ, a wiêc musimy byæ pewni, ¿e regu³a
deny jest przed regu³¹ accept.
Listowanie naszych regu³
Po wprowadzeniu naszych regu³ mo¿emy je wylistowaæ, wywo³uj¹c ipfwadm w na-
stêpuj¹cy sposób:
# ipfwadm -F -l
To polecenie da w wyniku wszystkie skonfigurowane regu³y przekazywania. Re-
zultat powinien byæ podobny do tego:
# ipfwadm -F -l
IP firewall forward rules, default policy: accept
type
prot
source
destination
ports
deny
tcp
anywhere
172.16.10.0/24
www -> any
acc
tcp
172.16.1.0/24
anywhere
any -> www
158
Rozdzia³ 9: Firewall TCP/IP
Polecenie ipfwadm bêdzie próbowa³o t³umaczyæ numer portu na nazwê us³ugi za po-
moc¹ pliku /etc/services, o ile istnieje w nim wpis.
W domyœlnie pokazywanym wyniku brakuje kilku wa¿nych dla nas szczegó³ów.
Nie widaæ tam mianowicie dzia³ania argumentu -y. Polecenie ipfwadm potrafi poka-
zaæ dok³adniejszy wynik, je¿eli podamy tak¿e opcjê -e (wynik rozszerzony). Nie
poka¿emy ca³ego wyniku, poniewa¿ jest zbyt szeroki i nie mieœci siê na stronie, ale
zawiera kolumnê opt (opcje), która pokazuje opcjê –y kontroluj¹c¹ pakiety SYN:
# ipfwadm -F -l -e
IP firewall forward rules, default policy: accept
pkts bytes type prot opt tosa tosx ifname ifaddress source
...
0
0 deny tcp --y- 0xFF 0x00 any
any
anywhere
...
0
0 acc tcp b--- 0xFF 0x00 any
any
172.16.1.0/24 ...
Bardziej skomplikowany przyk³ad
Poprzedni przyk³ad by³ prosty. Nie wszystkie us³ugi sieciowe s¹ tak ³atwe do skon-
figurowania jak WWW. W rzeczywistoœci typowa konfiguracja firewalla bêdzie du-
¿o bardziej z³o¿ona. Przyjrzyjmy siê innemu powszechnie spotykanemu przyk³ado-
wi, tym razem FTP. Chcemy, aby u¿ytkownicy naszej wewnêtrznej sieci mogli logo-
waæ siê do serwerów FTP w Internecie po to, by odczytywaæ i zapisywaæ pliki. Nie
chcemy jednak, aby ludzie z Internetu logowali siê do naszych serwerów FTP.
Wiemy, ¿e FTP u¿ywa dwóch portów TCP: portu 20 (ftp-data) i portu 21 (ftp), a wiêc:
# ipfwadm -a deny -P tcp -S 0/0 20 -D 172.16.1.0/24 -y
# ipfwadm -a accept -P tcp -S 172.16.1.0/24 -D 0/0 20 -b
## ipfwadm -a deny -P tcp -S 0/0 21 -D 172.16.1.0/24 -y
# ipfwadm -a accept -P tcp -S 172.16.1.0/24 -D 0/0 21 -b
Dobrze? Nie ca³kiem. Serwery FTP mog¹ dzia³aæ w dwóch ró¿nych trybach: w trybie
biernym (ang. passive mode) i czynnym (ang. active mode)*. W trybie biernym serwer
FTP oczekuje na po³¹czenie od klienta. W trybie czynnym serwer realizuje po³¹cze-
nie do klienta. Tryb czynny jest zwykle domyœlny. Ró¿nice ilustruje rysunek 9-3.
Wiele serwerów FTP dzia³aj¹cych w trybie czynnym tworzy po³¹czenie z portu 20,
co nieco upraszcza sprawê, ale niestety nie wszystkie tak robi¹**.
Jakie to ma jednak dla nas znaczenie? Przyjrzyjmy siê naszej regule dla portu 20,
czyli – portu FTP-data. Obecna regu³a zak³ada, ¿e po³¹czenie bêdzie inicjowane