Provided by:
manpages-pl_20060617-3_all 
NAZWA
ipfw - zapora ogniowa (firewall) IP i zliczanie ruchu
SK/LADNIA
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <linux/ip.h>
#include <linux/tcp.h>
#include <linux/udp.h>
#include <linux/icmp.h>
#include <linux/if.h>
#include <linux/ip_fw.h>
int setsockopt (int socket, IPPROTO_IP, int command, void *data, int
length)
OPIS
Uslugi firewalla IP i zliczania ruchu wbudowane w jdro Linuksa
udostpniaj mechanizm zliczania pakietow IP i budowania zapor ogniowych
(firewall) opartych o filtry pakietow. Administrowanie tymi funkcjami
opiera si o cztery przechowywane przez jdro listy, z ktorych kada moe
zawiera zero lub wicej regul. Regula zawiera szczegolowe informacje o
adresach rodlowych i docelowych, protokolach, numerach portow i kilku
innych cechach. Pakiet dopasowany bdzie do reguly, jeli jego parametry
bd zgadza si z jej definicj. Istniej cztery kategorie regul:
Zliczajce
Reguly te stosowane s do wszystkich pakietow IP, ktore s
wysylane bd odbierane przez jeden z lokalnych interfejsow
sieciowych. Cechy kadego pakietu bd porownane ze wszystkimi
regulami na tej licie, a kade dopasowanie spowoduje zwikszenie
zwizanych z dan regul licznikow pakietow i bajtow.
Zapora wejciowa
Reguly te decyduj o udzielaniu dostpu nadchodzcym z zewntrz
pakietom IP. Wszystkie pakiety wchodzce przez jeden z lokalnych
interfejsow sieciowych sprawdzane s pod ktem dopasowania regul
zapory wejciowej. Pierwsza regula, do ktorej pasuj parametry
pakietu, zadecyduje o udzieleniu dostpu oraz zmieni liczniki
bajtow i pakietow zwizane z t regul. Jeli pakiet nie zostanie
dopasowany do adnej reguly, zastosowana zostanie domylna regula
dostpowa.
Zapora wyjciowa
Reguly te definiuj uprawnienia wychodzcych pakietow IP.
Wszystkie pakiety gotowe do wyslania przez jeden z lokalnych
interfejsow sieciowych sprawdzane s pod wzgldem zgodnoci z
regulami zapory wyjciowej. Pierwsza dopasowana do pakietu
regula zadecyduje o prawach dostpu i spowoduje aktualizacj
licznikow bajtow i pakietow z ni zwizanych. Jeli pakiet nie
zostanie dopasowany do adnej reguly, zastosowana zostanie
domylna regula dostpowa.
Zapora pakietow przekazywanych
Reguly te definiuj uprawnienia przekazywanych pakietow IP.
Wszystkie pakiety wyslane przez zewntrzny komputer, posiadajce
inny komputer jako stacj docelow, sprawdzane s pod wzgldem
dopasowania do regul zapory pakietow przekazywanych. Pierwsza
dopasowana do pakietu regula zadecyduje o prawach dostpu i
spowoduje aktualizacj licznikow bajtow i pakietow z ni
zwizanych. Jeli pakiet nie zostanie dopasowany do adnej reguly,
zastosowana zostanie domylna regula dostpowa.
Kada regula zaporowa (nie regula zliczajca), posiada zasad, ktora
okrela, jakie czynnoci maj by wykonane jeli parametry pakietu pasowa bd
do definicji reguly. Istniej 4 rone zasady: accept (pozwala pakietom
swobodnie przechodzi przez zapor), masquerade (pozwala pakietom
przechodzi przez zapor przy wykorzystaniu maskowania (masquerading); ta
zasada ma zastosowanie jedynie do regul przekazujcych), reject (odrzuca
pakiet i w charakterze powiadomienia odsyla nadawcy komunikat ICMP host
unreachable (komputer niedostpny)), and deny (ignoruje pakiet bez
odsylanie jakiegokolwiek powiadomienia). Przy wszystkich trzech typach
zapor istnieje zasada domylna, ktora stosowana jest wzgldem wszystkich
pakietow, ktore nie dopasuj si do adnej z regul.
Reguly przekazujce definiuj rownie, czy pakiety bd maskowane w trakcie
przekazywania. W tym przypadku przed przekazaniem pakietu adres nadawcy
w pakiecie IP jest zastpowany adresem lokalnego komputera, a port
rodlowy w naglowku TCP lub UDP jest zastpowany przez numer stworzonego
tymczasowo portu lokalnego. Poniewa te ustawienia przechowywane s w
jdrze, pakiety zwrotne (przysylane do tymczasowego portu na komputerze
lokalnym) rozpoznawane s automatycznie. Adres docelowy i numer portu
tych pakietow zostanie zastpiony przez oryginalny adres i numer portu,
ktore zostaly zapamitane przy przekazywaniu pierwszego maskowanego
pakietu.
Ten paragraf opisuje sposob, w jaki pakiet przechodzi przez reguly
zapory i zliczania. Pakiety odebrane przez jeden z lokalnych
interfejsow sieciowych przechodz przez nastpujce zestawy regul:
zliczajce (urzdzenie wejciowe)
zapora wejciowa (urzdzenie wejciowe)
W tym przypadku, urzdzenie (adres interfejsu), ktore jest uywane przy
sprawdzaniu dopasowania pakietu IP do reguly, jest wywietlone w
nawiasach. Jeli pakiet ma by przekazany do zewntrznej stacji, przejdzie
rownie przez:
zepor pakiet'ow przekazywanych (urzdzenie wejciowe)
W nastpnym kroku opcjonalnie pakiet zostanie zamaskowany. Odpowiedzi
na pakiety zamaskowane nie bd przechodzi przez zapor pakietow
przekazywanych (przejd jednak zarowno przez wejciow, jak i wyjciow
zapor). Wszystkie pakiety wysylane z jednego z lokalnych interfejsow
sieciowych, tworzone lokalnie, bd przekazywane, bd przechodzi przez:
zapor wyjciow (urzdzenie wyjciowe)
zliczanie (urzdzenie wyjciowe)
Naley zauway, e pakiety maskowane bd przechodzi przez zapor wyjciow i
reguly zliczajce z nowymi naglowkami pakietow (po przejciu przez zapor
wejciow i przekazujc z oryginalnymi naglowkami). Odpowiedzi na
maskowane pakiety bd rownie posiada rone naglowki w trakcie
przechodzenia przez reguly wejciowe i wyjciowe.
Sterowanie zapor i zliczaniem moe si odbywa za porednictwem wywola
funkcji setsockopt(2). Istniejce reguly mona sprawdzi zagldajc do
trzech plikow w katalogu /proc/net : ip_acct, ip_input, ip_output, oraz
ip_forward. Biece ustawienia zwizane z sesjami maskowanymi mona znale
w pliku ip_masquerade w tym samym katalogu (zauwamy, e reguly okrelajce
sesje, ktore powinny by maskowane znajduj si w pliku ip_forward).
POLECENIA
Polecenia zmiany list regul lub zasad domylnych musz by podane jako
parametry funkcji systemowej setsockopt(2) , pracujcej na surowym
gniazdku IP. Wikszo polece wymaga przekazania pewnych dodatkowych
danych. Wskanik do tych danych i dlugo danych s przekazywane jako
parametry wartoci i dlugoci opcji setsockopt. Dostpne s nastpujce
polecenia:
IP_ACCT_APPEND
IP_FW_APPEND_IN
IP_FW_APPEND_OUT
IP_FW_APPEND_FWD
Dodanie reguly do jednej z list regul zliczajcych lub
zaporowych. Zalenie od polecenia, regula jest dodawana
odpowiednio do listy regul zliczajcych, wejciowych, wyjciowych,
przekazujcych. Nowa regula dodawana jest na kocu listy. Dane
przekazywane z tymi poleceniami maj struktur ip_fw , definiujc
tre nowej reguly.
IP_ACCT_INSERT
IP_FW_INSERT_IN
IP_FW_INSERT_OUT
IP_FW_INSERT_FWD
Polecenia te s rownowane poleceniom dodawania, z tym wyjtkiem, e
nowa regula wstawiana jest na pocztku listy.
IP_ACCT_DELETE
IP_FW_DELETE_IN
IP_FW_DELETE_OUT
IP_FW_DELETE_FWD
Usunicie reguly z jednej z list regul zliczajcych lub
zaporowych. Zalenie od polecenia, regula zostanie usunita
odpowiednio z listy regul zliczajcych, wejciowych, wyjciowych
lub przekazujcych. Przekazywane z tym poleceniem dane maj
struktur ip_fw , definiujc tre pakietu przeznaczonego do
usunicia. Pierwsza regula spelniajca podane kryteria zostanie
usunita z listy.
IP_ACCT_ZERO
IP_FW_ZERO_IN
IP_FW_ZERO_OUT
IP_FW_ZERO_FWD
Wyzerowyje liczniki pakietow i bajtow odpowiednio we wszystkich
regulach list zliczajcych, wejciowych, wyjciowych i
przekazujcych. Z nieznanych powodow, z tym poleceniem w
charakterze danych musi by przekazana (dowolna) liczba
calkowita. Aby dowiedzie si, jak pojedynczo wywietla i zerowa
zawarto poszczegolnych licznikow, zobacz opis plikow /proc/net
IP_ACCT_FLUSH
IP_FW_FLUSH_IN
IP_FW_FLUSH_OUT
IP_FW_FLUSH_FWD
Usunicie wszystkich regul odpowiednio z listy regul zliczajcych,
wejciowych, wyjciowych i przekazujcych. Z nieznanych powodow, z
tym poleceniem w charakterze danych musi by przekazana (dowolna)
liczba calkowita.
IP_FW_POLICY_IN
IP_FW_POLICY_OUT
IP_FW_POLICY_FWD
Zmiana domylnej zasady odpowiednio dla zapory wejciowej,
wyjciowej lub przekazujcej. Nowa zasada przekazywana jest jako
liczba calkowita o nastpujcej dopuszczalnej wartoci:
IP_FW_F_ACCEPT (zaakceptuj pakiet), IP_FW_F_ACCEPT |
IP_FW_F_MASQ (zaakceptuj pakiet i dodatkowo uyj maskowania),
IP_FW_F_ICMRPL (odrzu pakiet przez wyslanie komunikatu ICMP host
unreachable do nadawcy) lub 0 (odrzu pakiet bez adnego
powiadomienia). Zasada jest uywana w przypadku gdy adna z
istniejcych regul zaporowych na odpowiadajcej licie nie pasuje
do analizowanego pakietu.
IP_FW_CHECK_IN
IP_FW_CHECK_OUT
IP_FW_CHECK_FWD
Sprawdzenie, czy pakiet bylby zaakceptowany (z maskowaniem lub
bez), odrzucony z potwierdzeniem bd odrzucony bez potwierdzenia
przez zapor wejciow (IP_FW_CHECK_IN), zapor wyjciow
(IP_FW_CHECK_OUT), lub zapor przekazujc (IP_FW_CHECK_FWD).
Przekazywane z poleceniem dane maj struktur ip_fwpkt , definiujc
naglowki pakietow i adres interfejsu.
STRUKTURY
Struktura ip_fw zawiera nastpujce pola, ktore naley wypelni adekwatnie
do procedury dodawania lub usuwania reguly:
struct in_addr fw_src, fw_dst
rodlowe i docelowe adresy IP.
struct in_addr fw_smsk, fw_dmsk
Maski dla rodlowych i docelowych adresow IP. Zauwamy, e maska
0.0.0.0 oznacza bdzie dopasowanie wszystkich adresow.
struct in_addr fw_via
Adres IP interfejsu, przez ktory pakiet jest odbierany przez
system, lub ktory ma by przeslany przez system. Adres 0.0.0.0
ma specjalne znaczenie: dopasowanie adresow wszystkich
interfejsow.
char fw_vianame[IFNAMSIZ]
Nazwa interfejsu, przez ktory pakiet jest odbierany przez system
lub przez ktory ma by wyslany. Pusty cig znakow ma specjalne
znaczenie: dopasowanie wszystkich nazw urzdze.
unsigned short fw_flg
Flagi dla reguly. Flagi dla ronych opcji mog by podane jako ich
ronica logiczna.
Protokol (obowizkowy). Moliwe wartoci to IP_FW_F_TCP (TCP),
IP_FW_F_UDP (UDP), IP_FW_F_ICMP (ICMP), lub IP_FW_F_ALL
(wszystkie protokoly, co definiuje uniwersaln regul
zliczania/zaporow).
Zasada, ktor naley uy w przypadku dopasowania pakietu. Moe ni
by IP_FW_F_ACCEPT (zaakceptuj pakiet), IP_FW_F_ACCEPT |
IP_FW_F_MASQ (zaakceptuj pakiet i opcjonalnie zastosuj
maskowanie), lub IP_FW_F_ICMRPL (odrzu pakiet odsylajc odbiorcy
komunikat ICMP host unreachable). Jeli nie podana jest adna z
tych flag, pakiet jest odrzucany bez powiadomienia nadawcy.
Zauwamy, e zasada ta jest ignorowana w regulach zliczajcych.
Mona ustawi kilka dodatkowych opcji: IP_FW_F_BIDIR (regula
dwukierunkowa, dzialajca w obie strony), IP_FW_F_TCPACK (regula
pasuje tylko wtedy, gdy w naglowku TCP ustawiony jest bit ACK),
IP_FW_F_TCPSYN (regula pasuje tylko wtedy, gdy w naglowku TCP
bit SYN jest ustawiony, a bit ACK jest wyzerowany), IP_FW_F_SRNG
oraz IP_FW_F_DRNG (opis tych flag poniej). Opcji IP_FW_F_PRN
mona uy do wywietlenia pewnych informacji o pasujcych pakietach
za pomoc funkcji printk(). Opcja ta bdzie skuteczna tylko
wowczas, gdy jdro jest skompilowane ze zdefiniowanym parametrem
CONFIG_IP_FIREWALL_VERBOSE.
unsigned short fw_nsp, fw_ndp, fw_pts[IP_FW_MAX_PORTS]
Te pola okrelaj liczb portow rodlowych, docelowych i tablic, w
ktorej przechowywane s odpowiednie numery tych portow. Tablica
zaczyna si od portow rodlowych, po ktorych bezporednio nastpuj
porty docelowe. Calkowita liczba portow jest ograniczona do
wartoci IP_FW_MAX_PORTS (obecnie 10). Zarowno lista portow
rodlowych, jak i docelowych zawiera moe co najwyej jeden zakres.
W tym przypadku, pierwsze dwa numery portow z listy traktowane s
jako minimalna i maksymalna warto zakresu. Dla pakietow ICMP,
porty rodlowe traktowane s jako typy ICMP, a porty docelowe s
pomijane. Poniewa drugi i nastpne fragmenty pakietu TCP lub UDP
nie zawieraj numerow portow, traktowane s tak, jakby mialy oba
porty rowne zero. Flagi IP_FW_F_SRNG i IP_FW_F_DRNG w polu
fw_flg okrelaj czy podany jest zakres rodlowy i/lub docelowy.
unsigned char fw_tosand, fw_tosxor
Owe 8-bitowe maski okrelaj, w jaki sposob pole TOS w naglowku IP
powinno by zmieniane, gdy pakiet jest akceptowany przez regul
zaporow (z maskowaniem lub bez). Pole TOS jest najpierw bitowo
sumowane z fw_tosand , a wynik jest poddawany operacji ronicy
symetrycznej (xor) z fw_tosxor. Pola te s pomijane w regulach
zliczania i w regulach zaporowych, ktore odrzucaj pakiet z
powiadomieniem lub bez.
Struktura ip_fwpkt , wykorzystywania przy sprawdzaniu pakietu, zawiera
nastpujce pola:
struct iphdr fwp_iph
Naglowek IP. Zajrzyj do <linux/ip.h> po szczegolowy opis
struktury iphdr.
struct tcphdr fwp_protoh.fwp_tcph
struct udphdr fwp_protoh.fwp_udph
struct icmphdr fwp_protoh.fwp_icmph
Naglowek TCP, UDP, lub ICMP, polczone w unii o nazwie
fwp_protoh. Zajrzyj do <linux/tcp.h>, <linux/udp.h>, lub
<linux/icmp.h> po szczegolowy opis odpowiednich struktur.
struct in_addr fwp_via
Adres interfejsu, przez ktory udaje si, e pakiet jest wysylany
lub odbierany.
WARTO ZWRACANA
Zero, jeli operacja jest skuteczna. -1, jeli wystpil bld. Odpowiednio
ustawiana jest warto errno. Lista moliwych komunikatow bldu znajduje
si na stronie setsockopt(2). Jeli uyte jest jedno z dwoch polece
sprawdzania pakietu, zwracane jest zero jeli pakiet bylby zaakceptowany
(bez maskowania). W przeciwnym wypadku, zwracana jest -1, a errno
uzyskuje warto ECONNRESET (pakiet bylby przyjty z uyciem maskowania),
ETIMEDOUT (pakiet bylby odrzucony z powiadomieniem), lub ECONNREFUSED
(pakiet bylby odrzucony bez powiadomienia).
WYWIETLANIE REGU/L
W katalogu /proc/net znajduj si 4 wpisy, umoliwiajce wywietlenie
aktywnych regul w kadej z nastpujcych kategorii: ip_acct (reguly
zliczania ruchu IP), ip_input (reguly zapory wejciowej IP), ip_output
(reguly wyjciowej zapory IP), oraz ip_forward (reguly zapory
przekazujcej IP). Odczyt tych plikow zwroci wiersz naglowkowy i jeden
wiersz dla kadej zdefiniowanej reguly. Dla wszystkich trzech typow
zapory, linia naglowkowa zawiera na kocu dziesitn reprezentacj
odpowiedniej zasady (jedna z IP_FW_F_ACCEPT, IP_FW_F_ACCEPT |
IP_FW_F_MASQ, IP_FW_F_ICMPRPL, lub 0).
Kada nastpna linia pokazuje zawarto reguly w nastpujcej kolejnoci:
adres rodlowy i maska, adres docelowy i maska, adres interfejsu, flagi,
numer portu rodlowego i docelowego, liczniki pakietow i bajtow, list
portow, mask sumy logicznej dla TOS i mask ronicy symetrycznej dla TOS.
Adresy IP i maski s wywietlone jako 8 cyfr heksadecymalnych, maski TOS
jako 2 cyfry heksadecymalne poprzedzone odpowiednio A i X. Pozostale
wartoci wywietlone s w formacie dziesitnym. Poszczegolne pola
rozdzielone s spacjami, znakiem '/' (adres i odpowiadajca mu maska),
lub znakiem '->' (pary adresow/masek rodlowych i docelowych).
Pliki mona rownie otwiera w trybie odczyt/zapis (tylko root moe to
zrobi). W tym przypadku, liczniki pakietow i bajtow we wszystkich
regulach danej kategorii bd wyzerowane po wywietleniu ich biecej
wartoci.
Plik /proc/net/ip_masquerade zawiera wszystkie ustawienia jdra zwizane
z maskowaniem. Po wierszu naglowkowym, kada maskowana sesja jest
opisana w osobnej linii za pomoc nastpujcych po sobie wpisow,
rozdzielonych spacj lub znakiem ':' (pary adres/numer portu): nazwa
protokolu ("TCP" lub "UDP"), rodlowy adres IP i numer portu, docelowy
adres IP i numer portu, nowy adres portu, pocztkowy numer sekwencyjny
do dodawania wartoci ronicowej, warto ronicowa, poprzednia warto
ronicowa, oraz czas wyganicia w jednostce jiffie (1/HZ sekundy).
Wszystkie adresy i wartoci numeryczne podane s w formacie
heksadecymalnym, z wyjtkiem ostatnich trzech wpisow, ktore s w formacie
dziesitnym.
PLIKI
/proc/net/ip_acct
/proc/net/ip_input
/proc/net/ip_output
/proc/net/ip_forward
/proc/net/ip_masquerade
ZOBACZ TAKE
setsockopt(2), socket(2), ipfwadm(8)
INFORMACJE O T/LUMACZENIU
Powysze tlumaczenie pochodzi z nieistniejcego ju Projektu Tlumaczenia
Manuali i moe nie by aktualne. W razie zauwaenia ronic midzy powyszym
opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji,
prosimy o zapoznanie si z oryginaln (angielsk) wersj strony podrcznika.
16 lutego 1996 IPFW(4)