Zagadnienia bezpiecze±stwa sieci LAN
Co dzie±
przybywa komputer≤w pod│▒czonych do sieci Internet, tym samym ro╢nie
prawdopodobie±stwo, ┐e kt≤ry╢ z u┐ytkownik≤w Internetu postanowi w│amaµ siΩ do
naszej sieci lokalnej. Bezpiecze±stwo sieci komputerowych jest zagadnieniem ogromnym i
nie widzΩ mo┐liwo╢ci wyczerpania tutaj tego tematu. Zw│aszcza, ┐e co dzie± odkrywane
s▒ nowe sposoby w│amania lub zak│≤cenia pracy system≤w komputerowych. W tym rozdziale
zajmΩ siΩ sposobami kompleksowego zabezpieczenia sieci komputerowej za pomoc▒ techniki filtrowania
datagram≤w (firewalling) oraz t│umaczenia adres≤w sieciowych (NAT - masquerading).
Pierwszym krokiem podczas rozpatrywania zagadnie± bezpiecze±stwa jest okre╢lenie
potencjalnych "wrog≤w" i zorientowanie w metodach ich pracy.
Cele atak≤w w│amywaczy.
Poni┐ej pokr≤tce om≤wiΩ najczΩ╢ciej
stosowane sposoby ingerencji w pracΩ system≤w sieciowych. Istniej▒ dwa cele atak≤w cracker≤w
(w│amywaczy komputerowych):
1. Uzyskanie
dostΩpu do systemu.
2.
Zdestabilizowanie pracy systemu komputerowego.
Pierwszy cel osi▒gany jest poprzez zdobycie
nazwy u┐ytkownika w systemie (login) i u┐ywanego przez niego has│a. Czasem
odbywa siΩ to poprzez wykorzystanie b│Ωdu w oprogramowaniu danej us│ugi sieciowej i
zdobycie dostΩpu do systemu na prawach przyznanych tej us│udze. Zdobycie loginu nie
jest trudne, najczΩ╢ciej wystarczy zdobyµ adres poczty elektronicznej (E-mail)
danego u┐ytkownika (czasem jest to tzw. alias, co utrudnia zadanie w│amywaczowi).
Statystyki podaj▒, ┐e najczΩ╢ciej
u┐ytkownicy sieci komputerowych stosuj▒ has│a │atwe do z│amania za pomoc▒ metody
s│ownikowej (korzystaj▒c ze s│ownika zawieraj▒cego odpowiedni▒ liczbΩ s│≤w).
Dekodowanie hase│ metod▒ brute-force jest bardziej czasoch│onne
(statystycznie) i dziΩki temu │atwiejsze do wykrycia. Polega ono na sprawdzaniu
wszystkich mo┐liwych kombinacji znak≤w mog▒cych znale╝µ siΩ w ha╢le danego systemu
operacyjnego. Dlatego nale┐y dbaµ, aby has│a u┐ytkownik≤w by│y jak najbardziej
skomplikowane, powinny zawieraµ przynajmniej du┐e i ma│e litery oraz cyfry.
Drugi cel atak≤w, osi▒gany jest przez
cracker≤w dziΩki wykorzystaniu b│Ωd≤w (bug) w oprogramowaniu serwer≤w us│ug
Internetowych, czasem stosu TCP/IP. Tego typu dzia│aniem jest ostatnio popularna metoda
unieruchamianiu serwis≤w WWW. Polega ona na wysy│aniu olbrzymiej liczby zapyta± do
serwera WWW, kt≤ry pr≤buj▒c je wszystkie obs│u┐yµ zostaje zablokowany. G│≤wn▒
metod▒ zabezpiecze± przed tego typu "problemami" jest ci▒g│a aktualizacja
oprogramowania sieciowego oraz ╢ledzenie stron zawieraj▒cych gotowe oprogramowanie
s│u┐▒ce do takich dzia│a±. Jest to zadanie administratora sieci komputerowej i w
zakresie jego obowi▒zk≤w musi byµ czas przeznaczony na tego typu dzia│ania.
Metody w│ama±.
Star▒ metod▒ jest podstawienie programu,
udaj▒cego program loguj▒cy do systemu. W ten spos≤b u┐ytkownik podaje swoje has│o, a
program w│amywacza posiada has│o w postaci niezakodowanej. W przypadku systemu Windows
95 (98) zainstalowanie takiego programu, udaj▒cego przyk│adowo system potwierdzania
has│a poczty elektronicznej, nie stanowi zbytniego problemu.
NastΩpn▒ metod▒ jest nas│uchiwanie (sniffing),
polega ona na pod│▒czeniu do sieci komputera z uruchomionym oprogramowaniem do
╢ci▒gania wszystkich ramek Ethernetowych w danym segmencie sieci. W tym momencie cracker
uzyskuje dostΩp do wszystkich hase│, kt≤re transmitowane s▒ otwartym tekstem po sieci
(np. odczytywanie poczty za pomoc▒ protoko│u POP, transmisja plik≤w protoko│em FTP).
Pod nazw▒ sniffing zaszeregowane s▒ r≤wnie┐ metody pods│uchu transmisji w
kablach sieciowych lub te┐ transmisji w kablach monitorowych. Przyk│adowo: istniej▒
urz▒dzenia umo┐liwiaj▒ce ogl▒danie (oczywi╢cie zaszumionego) obrazu wy╢wietlanego na
monitorze znajduj▒cym siΩ kilkana╢cie metr≤w od nas, za kilkoma ╢cianami.
Znanym problemem s▒ us│ugi umo┐liwiaj▒ce
zdaln▒ pracΩ: rlogin, rsh, rcp, kt≤rych system zabezpiecze± jest zupe│nie
niewystarczaj▒cy. Aktualnie s▒ coraz rzadziej stosowane i najczΩ╢ciej nie
wykorzystywane. Zast▒pione zosta│y us│ug▒ bezpiecznego po│▒czenia ssh (Secure
Shell).
Niebezpieczna mo┐e byµ r≤wnie┐ us│uga ftp.
Niew│a╢ciwie skonfigurowany serwer ftp, mo┐e umo┐liwiµ w│amywaczowi uzyskanie
wa┐nych informacji, przyk│adowo pliku zawieraj▒cego has│a.
Jedn▒ z kategorii zagro┐e± stanowi▒ tzw. furtki
(backdoors) lub w│azy (trapdors) bΩd▒ce nieudokumentowanymi
funkcjami aplikacji, pozostawionymi przez programist≤w. W systemie Linux, dziΩki pe│nej
dostΩpno╢ci ╝r≤de│ program≤w, bardzo szybko s▒ wykrywane i usuwane tego typu
problemy.
align="justify"Ponadto us│uga smtp w
implementacji wczesnych wersji programu sendmail okaza│a siΩ niedostatecznie
bezpieczna. Przyk│adowo przy odpowiednim przerobieniu przesy│ki, interpretowana jest ona
jako program wykonywalny i uruchamiana przez sendmaila.
Jednym z problem≤w mo┐e byµ wykorzystywanie
przez administrator≤w serwer≤w WWW, skrypt≤w CGI pochodz▒cych z nieznanych
╝r≤de│. Dodatkowo korzystanie z us│ug WWW wymaga wiele ostro┐no╢ci, poniewa┐
pojawia siΩ bardzo du┐o nowych technologii, kt≤rych systemy zabezpiecze± nie s▒
dobrze znane. Typowym przyk│adem jest technologia ActiveX wprowadzona przez firmΩ
Microsoft, chocia┐ implementacja jΩzyka Java te┐ nie jest wolna od b│Ωd≤w.
Jednak znany jest fakt, ┐e zastosowana w przegl▒darce Netscape Communicator technologia Sand
Box jest o wiele bezpieczniejsza od implementacji zabezpiecze± w Internet Explorerze.
Jedn▒ z najg│o╢niejszych technik w│ama±
by│o "podszywanie siΩ" (spoofing). Polega ono na
wysy│aniu datagram≤w IP z nieprawdziwym adresem ╝r≤d│owym, przez co komputer je
odbieraj▒cy b│Ωdnie identyfikuje ich nadawcΩ. Zabezpieczenie przed ta metod▒ zosta│o
wkompilowane w j▒dro rutera i jest uruchamiane zawsze przy starcie systemu.
Systemy Linuxowe s▒ odporne na atak Ping
of Death polegaj▒cy na wysy│aniu du┐ych pakiet≤w ICMP i przepe│nianiu stosu
TCP. úatwo rozpoznaµ takie pakiety ICMP po fragmentacji, kt≤ra zosta│a dokonana ze
wzglΩdu na rozmiar przekraczaj▒cy MTU.
Teardrop i Bonk s▒
metodami atak≤w (niebezpieczne g│≤wnie dla Windows NT) u┐ywaj▒cymi nachodz▒cych na
siebie fragment≤w pakiet≤w. Ruter Linuxowy dokonuje defragmentacji i uniemo┐liwia takie
ataki.
Niekt≤re z mniej stabilnych stos≤w TCP s▒
wra┐liwe na datagramy z du┐▒ liczb▒ fragment≤w i mog▒ nie odebraµ ich wszystkich.
Linux jest pozbawiony tego problemu. Mo┐na filtrowaµ takie fragmenty lub skompilowaµ
j▒dro rutera z opcj▒ `IP: always defragment' ustawion▒ na `Y' (tylko gdy dany
ruter jest jedyn▒ mo┐liwa drog▒ dotarcia takich pakiet≤w).
Istnieje na pewno wiele innych metod i ci▒gle
pojawiaj▒ siΩ nowe. Jedynym sposobem zabezpieczenia jest nieustanne ╢ledzenie grup
dyskusyjnych zajmuj▒cych siΩ zagadnieniami bezpiecze±stwa i natychmiastowe reagowanie
na ka┐de nowe zagro┐enie. Jest to zadanie ka┐dego administratora sieci. Ponadto
podstaw▒ tworzenia polityki zabezpiecze± dla danej firmy jest prawid│owe
skonfigurowanie firewalla, bΩd▒cego aktualnie niezbΩdnym sk│adnikiem systemu
bezpiecze±stwa.
Podczas projektowania bezpiecznej sieci
komputerowej mo┐emy wyr≤┐niµ trzy poziomy (strefy) dostΩpu z Internetu:
I. Poziom zewnΩtrzny - sieµ
znajduj▒ca siΩ za firewallem z komputerami o adresach widocznych z Internetu. W tej
sieci powinny znajdowaµ siΩ jedynie serwery ╢wiadcz▒ce us│ugi Internetowe.
II. Poziom wewnΩtrzny - podsieµ z
adres≤w nierutowalnych, maj▒ca po│▒czenie z Internetem za pomoc▒ rutera z funkcjami
firewalla i NAT (najczΩ╢ciej masquerading). Tutaj powinny siΩ znajdowaµ
komputery pracownik≤w firmy.
III.Poziom izolowany - sieµ bez rutingu
do Internetu, tutaj powinny siΩ znajdowaµ serwery baz danych strategicznych dla firmy
(kadry, p│ace, dane techniczne produkcji, biura projektowe itp.) i komputery pracownik≤w
korzystaj▒cych z tych zasob≤w.
Rzadko istnieje mo┐liwo╢µ wprowadzenia takiej
modelowej struktury.
Pomimo istnienia a┐ tylu r≤┐nych metod w│amania siΩ do system≤w informatycznych,
najczΩ╢ciej powodem problem≤w jest po prostu b│▒d cz│owieka. G│o╢ne s▒ przypadki
pozostawiania hase│ dostΩpu do systemu przyklejonych pod klawiatur▒, a czasem
karteczk▒ do monitora. Dla tego bardzo wa┐ny jest poziom zrozumienia zasad
bezpiecze±stwa przez u┐ytkownik≤w systemu i ich przestrzeganie. Ustalenie takich zasad,
przyjΩcie metod ich egzekwowania, ustalenie i sztywne przestrzeganie poziom≤w dostΩpu
do systemu oraz odpowiednie jego skonfigurowanie (konstrukcja sieci, firewall) tworzy politykΩ
bezpiecze±stwa firmy.
Firewall
Firewall - "╢ciana ogniowa"
termin wziΩty z konstrukcji samochodu, jest to element konstrukcji uniemo┐liwiaj▒cy
rozprzestrzenianie siΩ ognia w czasie po┐aru na kabinΩ pasa┐er≤w. W sieci
komputerowej jego zadaniem jest zapewnienie bezpiecze±stwa sieci w przypadku pr≤b
w│amania. Mo┐na wyr≤┐niµ dwa og≤lne typy firewalli.
Firewalle filtruj▒ce IP - na podstawie
adres≤w IP oraz numer≤w port≤w podejmuj▒ decyzje o zakwalifikowaniu danego datagramu
jako bezpieczny. Firewalle filtruj▒ce dzia│aj▒ na poziomie pakiet≤w IP. S▒
zaprojektowane do kontroli przep│ywu bazuj▒c na adresie ╝r≤d│owym, docelowym, porcie
i typie pakietu (zawartych w ka┐dym z pakiet≤w). Ten typ firewalli jest bardzo
bezpieczny, ale nie daje kontroli nad u┐ytkownikami. Mo┐na udostΩpniµ us│ugΩ, ale
nie da siΩ otrzymaµ informacji identyfikuj▒cych konkretnego u┐ytkownika z niej
korzystaj▒cego, poza adresem IP komputera z kt≤rego przysz│a transmisja.
Serwery po│▒czeniowe (proxy) -
wykonuj▒ po│▒czenie sieciowe w zamian za komputer z sieci lokalnej. Serwery proxy
pozwalaj▒ na niebezpo╢redni dostΩp do Internetu. Dobrym przyk│adem jest serwer proxy
us│ugi WWW. Gdy │▒czymy siΩ z proxy-serwerem za pomoc▒ oprogramowania klienckiego
uruchamia on swojego klienta i dostarcza danych kt≤rych zarz▒dali╢my. Poniewa┐ serwery
proxy podwajaj▒ ka┐de po│▒czenie, mo┐liwe jest zapisywanie (logowanie) ka┐dego z
nich. Serwery proxy s▒ w pe│ni bezpieczne, gdy┐ nie dokonuj▒ bezpo╢redniego rutingu.
Jedyn▒ ich wad▒ s▒ ogromne wymagania sprzΩtowe oraz pewien brak elastyczno╢ci. W
momencie pojawienia siΩ nowej us│ugi, z kt≤rej u┐ytkownicy sieci chc▒ skorzystaµ,
musimy zainstalowaµ dodatkowy program na serwerze zapewniaj▒cy dan▒ us│ugΩ.
Poni┐ej przedstawiΩ dok│adniejszy podzia│
firewalli i ich cechy.
Tradycyjne proxy (Traditional proxies).
Pakiety z sieci prywatnej nigdy nie wychodz▒ do
Internetu i vice versa. Adresy IP w sieci prywatnej powinny byµ z klas nierutowalnych.
Jedyn▒ drog▒ po│▒czenia siΩ z Internetem, jest wywo│anie firewalla, poniewa┐ jest
on jedyn▒ maszyn▒ mog▒c▒ │▒czyµ siΩ r≤wnocze╢nie z obiema sieciami. Uruchamiamy
jest na nim program zwany proxy, kt≤ry tego dokonuje. Dla ka┐dej us│ugi kt≤ra
ma byµ dostΩpna z Internetu, na firewallu musi byµ uruchomiony osobny program
po╢rednicz▒cy w jej ╢wiadczeniu.
Komputery w sieci wewnΩtrznej musz▒ byµ
specjalnie skonfigurowane do uzyskania dostΩpu do wybranych us│ug. Przyk│adowo, aby
╢ci▒gn▒µ stronΩ WWW, musz▒ po│▒czyµ siΩ z firewallem na port 8080 i za┐▒daµ
potrzebnej strony. W tym momencie uruchamia siΩ odpowiedni program po╢rednicz▒cy,
╢ci▒ga potrzebne dane i przekazuje do odpowiedniego komputera w sieci lokalnej.
Przezroczyste proxy (Transparent proxies).
Pakiety z sieci prywatnej nigdy nie wychodz▒ do
Internetu i vice versa. Adresy IP w sieci prywatnej powinny byµ z klas nierutowalnych.
Jedyn▒ drog▒ po│▒czenia siΩ z Internetem, jest wywo│anie firewalla, poniewa┐ jest
on jedyn▒ maszyn▒ mog▒c▒ │▒czyµ siΩ r≤wnocze╢nie z obiema sieciami. Uruchamiamy
na nim program zwany transparent proxy, kt≤ry tego dokonuje. J▒dro Linuksa
kieruje pakiety do tego programu, zamiast wys│aµ je bezpo╢rednio do Internetu. Dla
ka┐dej us│ugi kt≤ra ma byµ dostΩpna z Internetu, na firewallu musi byµ uruchomiony
osobny program po╢rednicz▒cy w ╢wiadczeniu takiej us│ugi.
Przezroczyste proxy oznacza, ┐e klient nie musi
wiedzieµ o u┐yciu oprogramowania typu proxy i nie musi byµ specjalnie konfigurowany.
Przyk│adowo: firewall jest skonfigurowany do przekierowywania (za pomoc▒ komendy ipchains)
wszystkich po│▒cze± do portu 80 na port 8080 na kt≤rym pracuje tranparent proxy.
Przy pr≤bie pobrania dowolnej strony WWW, transmisja przekierowywana jest na port 8080, a
nastΩpnie wszystko odbywa siΩ jak w poprzednim przyk│adzie.
T│umaczenie adres≤w IP (NAT lub Masquerading).
Pakiety z sieci prywatnej nigdy nie wychodz▒ do
Internetu bez specjalnej obr≤bki i vice versa. Adresy IP w sieci prywatnej powinny byµ z
klas nierutowalnych. W tym przypadku u┐ywamy specjalnych funkcji j▒dra Linuksa. Masquerading
ma wydzielone modu│y do radzenia sobie ze skomplikowanymi protoko│ami jak FTP,
RealAudio, Quake, itp.
Sieµ publiczna.
W tym przypadku, nasza sieµ jest czΩ╢ci▒
Internetu, pakiety mog▒ poruszaµ siΩ bez zmian poprzez obie sieci. Filtrowanie
pakiet≤w jest u┐yte aby ograniczyµ dostΩp z Internetu tylko do naszych wewnΩtrznych
serwer≤w i uniemo┐liwiµ dostΩp do komputer≤w u┐ytkownik≤w. Ten typ firewalla ma
najmniejsze mo┐liwo╢ci kontroli i autoryzacji dostΩpu, ale jest r≤wnocze╢nie
najbardziej elastyczny i wprowadza najmniej ogranicze± dla u┐ytkownik≤w z sieci
wewnΩtrznej.
Obs│uga filtrowania pakiet≤w przez j▒dro Linuksa
Komenda ipchains jest linuksow▒ komend▒
u┐ywan▒ do konfiguracji regu│ firewalla i t│umaczenia adres≤w IP (NAT). Zast▒pi│a
ona starsz▒ ipfwadm. Aby m≤c wykorzystaµ komputer z systemem operacyjnym Linux
do filtrowania pakiet≤w nale┐y skompilowaµ j▒dro systemu z opcjami (dla j▒dra z serii
2.1 lub 2.2):
CONFIG_FIREWALL = y
CONFIG_IP_FIREWALL = y
W nowszych j▒drach mog▒ to byµ inne parametry
konfiguracyjne. Aby stwierdziµ czy j▒dro ma prawid│owo wkompilowan▒ obs│ugΩ
filtrowania datagram≤w, nale┐y sprawdziµ czy w katalogu /proc/net/ istnieje plik
ip_fwchains, zawieraj▒cy konfiguracjΩ regu│ ipchains.
Przy konfigurowaniu firewalla za pomoc▒ komendy
ipchains, podstawowym pojΩciem jest │a±cuch (chain). úa±cuch
jest to zbi≤r regu│ filtruj▒cych. Istniej▒ trzy standardowe │a±cuchy: input,
forward i output, ponadto u┐ytkownik mo┐e tworzyµ w│asne │a±cuchy.
Algorytm podejmowania decyzji o losie
datagramu.
Rys. Algorytm przechodzenia
pakiet≤w przez system.
Droga datagram≤w IP poprzez firewall jest
bardzo skomplikowana. Najwa┐niejsze etapy zosta│y zaznaczone pogrubion▒ czcionk▒ na
powy┐szym schemacie.
Najpierw sprawdzana jest suma kontrolna
datagram≤w (checksum), nastΩpnie testowane s▒ one pod k▒tem deformacji (sanity).
P≤╝niej pakiety przechodz▒ przez │a±cuch wej╢ciowy (input chain) i je╢li
trzeba podlegaj▒ procesowi NAT (demasquerade), czyli adres rutera usuwany jest z
pola "adres docelowy" i zastΩpowany adresem IP komputera w sieci prywatnej.
Dalej na podstawie tablicy rutingu (routing decision) lub protoko│u rutuj▒cego
podejmowana jest decyzja o dalszym losie pakietu. Procesy lokalne (local process)
mog▒ odbieraµ pakiety po etapie rutowania i wysy│aµ pakiety poprzez etap rutowania i
│a±cuch wyj╢ciowy (output chain). Je╢li pakiety nie s▒ utworzone przez procesy
lokalne, s▒ sprawdzane w │a±cuchu przej╢ciowym (forward chain). Je╢li pakiety
od proces≤w lokalnych s▒ przekazywane do lokalnego komputera (localhosta)
przechodz▒ przez │a±cuch wyj╢ciowy (output chains) do interfejsu lo (lo
interface - loopback). Wszystkie pakiety wydostaj▒ce siΩ z komputera musz▒
przej╢µ przez │a±cuch wyj╢ciowy (output chain).
Sk│adnia polecenia ipchains
Pokr≤tce przedstawiΩ podstawow▒ sk│adniΩ
polecenia ipchains. SkupiΩ siΩ na opcjach u┐ytych w plikach konfiguracyjnych na
ruterze. Dok│adny opis pozosta│ych opcji znajduje siΩ w publikacji Ipchains_HOWTO
Po poleceniu ipchains nastΩpuje opcja
okre╢laj▒ca dzia│anie ca│ej komendy.
-F
(Flush) - usuwa wpisy z wymienionego p≤╝niej │a±cucha.
-A (Append)
dodaje now▒ regu│Ω do │a±cucha.
-I (Insert)
wstawia now▒ regu│Ω do │a±cucha na podane miejsce.
-D (Delete)
usuwa regu│Ω z │a±cucha.
NastΩpnie wystΩpuj▒ wpisy okre╢laj▒ce ╝r≤d│o i cel
transmisji
-s (source)
╝r≤d│o.
-d (destination)
cel.
Adresy mog▒ byµ podawane jako nr IP lub nazwa oraz jako
zakresy, np.:
199.95.207.0/24
199.95.207.0/255.255.255.0
WiΩkszo╢µ opcji umo┐liwia operacjΩ negacji logicznej np.:
"-s ! localhost" oznacza wszystkie hosty poza lokalnym.
Protok≤│ mo┐e byµ podawany jako numer lub nazwa (tcp, udp,
icmp), nie jest wa┐ne czy ma│e czy te┐ du┐e litery.
-p udp
Mo┐na r≤wnie┐ podawaµ numer portu dla kt≤rego uk│adamy
regu│Ω:
-p TCP -s 0.0.0.0/0 1023
Zakres port≤w:
-p TCP -s 0.0.0.0/0 1010:1023
-p TCP -s 0.0.0.0/0 :1023
- wszystkie porty poni┐ej 1023
R≤wnie dobrze mo┐emy podaµ nazwΩ portu:
-p TCP -s 0.0.0.0/0 www
Okre╢lamy interfejs sieciowy, kt≤rego dotyczy regu│a.
-i eth0
-i eth+
oznacza
wszystkie interfejsy zaczynaj▒ce siΩ na eth.
Logowanie pakiet≤w, flaga -l .
Flaga -j specyfikuje co wykonaµ z
pakietem pasuj▒cym do regu│y. Je╢li nie ma tej flagi, to regu│a jest u┐ywana do
prostego zliczania pakiet≤w j▒ spe│niaj▒cych. Dzia│aniami kt≤re mo┐emy zleciµ s▒:
ACCEPT - pozwala
przej╢µ pakietom przez firewalla.
DENY
- likwiduje
pakiety, tak jakby nigdy nie dosz│y do firewalla.
REJECT
- likwiduje pakiety, (je╢li nie s▒ to pakiety ICMP) wysy│aj▒c komunikat ICMP o
nieosi▒galno╢ci celu.
MASQ
- stosuje NAT (j▒dro
musi byµ skompilowane z IP Masquerading enabled). Prawid│owe jedynie dla
│a±cucha forward.
REDIRECT - przesy│a
pakiet na lokalny port, zamiast podanego w nag│≤wku. U┐ywane tylko dla protoko│≤w TCP
i UDP. Numer portu mo┐e byµ podany po REDIRECT co przesy│a pakiety na konkretny port.
To dzia│anie jest prawid│owe tyko dla │a±cucha input (wej╢ciowego).
RETURN - jest
identyczny z natychmiastowym osi▒gniΩciem ko±ca │a±cucha.
Ustalamy politykΩ dla │a±cucha. Polityka
okre╢la co nale┐y zrobiµ z pakietem nie pasuj▒cym do ┐adnej z regu│.
ipchains -P input DENY
Poni┐ej znajdziecie gotowy do u┐ycia skrypt do konfiguracji
firewalla. W chwili obecnej zawiera on komentarze w jΩzyku angielskim:
#!/bin/sh
# ----------------------------------------------------------------------------
# Copyright (C) 1997, 1998, 1999, 2000 Robert L. Ziegler
#
# Permission to use, copy, modify, and distribute this software and its
# documentation for educational, research, private and non-profit purposes,
# without fee, and without a written agreement is hereby granted.
# This software is provided as an example and basis for individual firewall
# development. This software is provided without warranty.
#
# Any material furnished by Robert L. Ziegler is furnished on an
# "as is" basis. He makes no warranties of any kind, either expressed
# or implied as to any matter including, but not limited to, warranty
# of fitness for a particular purpose, exclusivity or results obtained
# from use of the material.
# ----------------------------------------------------------------------------
# /etc/rc.d/rc.firewall
# Invoked from /etc/ppp/ip-up, or
# from /sbin/ifup-local, or
# from /etc/sysconfig/network-scripts/ifup-post.
# from /etc/rc.d/rc.local.
echo "Starting firewalling... "
# ----------------------------------------------------------------------------
# Some definitions for easy maintenance.
# EDIT THESE TO SUIT YOUR SYSTEM AND ISP.
EXTERNAL_INTERFACE="ppp0" # Internet
connected interface
LOOPBACK_INTERFACE="lo"
# or your local naming
convention
LOCAL_INTERFACE_1="eth0" # internal
LAN interface
IPADDR="0.0.0.0"
# your IP address
LOCALNET_1="192.168.1.0/24" # whatever
private range you use
ANYWHERE="any/0"
# match any IP address
NAMESERVER_1="any/0"
# everyone must have at
least one
WEB_PROXY_SERVER="0.0.0.0" # ISP web proxy server, if any
WEB_PROXY_PORT="8080"
# ISP web proxy port,
if any
WEB_PROXY_PORT="3130"
# typically 8008 or
8080
POP_SERVER="your.serwer"
LOOPBACK="127.0.0.0/8"
# reserved loopback
address range
CLASS_A="10.0.0.0/8"
# class A private
networks
CLASS_B="172.16.0.0/12"
# class B private
networks
CLASS_C="192.168.0.0/16" # class C
private networks
BROADCAST_SRC="0.0.0.0"
# broadcast source
address
BROADCAST_DEST="255.255.255.255" # broadcast destination
address
PRIVPORTS="0:1023"
# well known,
privileged port range
UNPRIVPORTS="1024:65535" #
unprivileged port range
# ----------------------------------------------------------------------------
NFS_PORT="2049"
# (TCP/UDP) NFS
SOCKS_PORT="1080"
# (TCP) Socks
OPENWINDOWS_PORT="2000"
# (TCP) openwindows
# X Windows port allocation begins at 6000 and increments to 6063
# for each additional server running.
XWINDOW_PORTS="6000:6063" # (TCP) X
windows
# The SSH client starts at 1023 and works down to 513 for each
# additional simultaneous connection originating from a privileged port.
# Clients can optionally be configured to use only unprivileged ports.
SSH_LOCAL_PORTS="1022:65535" # port
range for local clients
SSH_REMOTE_PORTS="513:65535" # port
range for remote clients
# traceroute usually uses -S 32769:65535 -D 33434:33523
TRACEROUTE_SRC_PORTS="32769:65535"
TRACEROUTE_DEST_PORTS="33434:33523"
# ----------------------------------------------------------------------------
# Default policy is DENY
# Explicitly accept desired INCOMING & OUTGOING connections
# Remove all existing rules belonging to this filter
ipchains -F
# Set the default policy of the filter to deny.
ipchains -P input DENY
ipchains -P output REJECT
ipchains -P forward DENY
# set masquerade timeout to 10 hours for tcp connections
ipchains -M -S 360000 0 0
# ----------------------------------------------------------------------------
# Enable IP Forwarding, if it isn't already
echo 1 > /proc/sys/net/ipv4/ip_forward
# Enable TCP SYN Cookie Protection
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
# Enable always defragging Protection
echo 1 > /proc/sys/net/ipv4/ip_always_defrag
# Enable broadcast echo Protection
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Enable bad error message Protection
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# Enable IP spoofing protection
# turn on Source Address Verification
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $f
done
# Disable ICMP Redirect Acceptance
for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do
echo 0 > $f
done
for f in /proc/sys/net/ipv4/conf/*/send_redirects; do
echo 0 > $f
done
# Disable Source Routed Packets
for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
echo 0 > $f
done
# Log Spoofed Packets, Source Routed Packets, Redirect Packets
for f in /proc/sys/net/ipv4/conf/*/log_martians; do
echo 1 > $f
done
# These modules are necessary to masquerade their respective services.
/sbin/modprobe ip_masq_autofw
/sbin/modprobe ip_masq_cuseeme
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_irc
/sbin/modprobe ip_masq_mfw
/sbin/modprobe ip_masq_portfw
/sbin/modprobe ip_masq_quake
/sbin/modprobe ip_masq_raudio ports=554,7070,7071,6970,6971
/sbin/modprobe ip_masq_user
/sbin/modprobe ip_masq_vdolive
# ----------------------------------------------------------------------------
# LOOPBACK
# Unlimited traffic on the loopback interface.
ipchains -A input -i $LOOPBACK_INTERFACE -j ACCEPT
ipchains -A output -i $LOOPBACK_INTERFACE -j ACCEPT
# ----------------------------------------------------------------------------
# Unlimited traffic within the local network.
# All internal machines have access to the firewall machine.
ipchains -A input -i $LOCAL_INTERFACE_1 -s $LOCALNET_1 -j ACCEPT
ipchains -A output -i $LOCAL_INTERFACE_1 -d $LOCALNET_1 -j ACCEPT
# ----------------------------------------------------------------------------
# Masquerade internal traffic.
# All internal traffic is masqueraded externally.
ipchains -A forward -i $EXTERNAL_INTERFACE -s $LOCALNET_1 -j MASQ
# ----------------------------------------------------------------------------
# SPOOFING & BAD ADDRESSES
# Refuse spoofed packets.
# Ignore blatantly illegal source addresses.
# Protect yourself from sending to bad addresses.
# Refuse incoming packets pretending to be from the external address.
ipchains -A input -s $IPADDR -j DENY -l
# ----------------------------------------------------------------------------
# NOTE:
# The symbolic names used in /etc/services for the port numbers vary by
# supplier. Using them is less error prone and more meaningful, though.
# ----------------------------------------------------------------------------
# TCP UNPRIVILEGED PORTS
# Avoid ports subject to protocol & system administration problems.
# NFS: establishing a TCP connection
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -y \
--destination-port $NFS_PORT -j DENY -l
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -y \
--destination-port $NFS_PORT -j REJECT
# openwindows: establishing a connection
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -y \
--destination-port $OPENWINDOWS_PORT -j DENY -l
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -y \
--destination-port $OPENWINDOWS_PORT -j REJECT
# Xwindows: establishing a connection
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -y \
--destination-port $XWINDOW_PORTS -j DENY -l
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -y \
--destination-port $XWINDOW_PORTS -j REJECT
# SOCKS: establishing a connection
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -y \
--destination-port $SOCKS_PORT -j DENY -l
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -y \
--destination-port $SOCKS_PORT -j REJECT
# ----------------------------------------------------------------------------
# UDP UNPRIVILEGED PORTS
# Avoid ports subject to protocol & system administration problems.
ipchains -A input -i $EXTERNAL_INTERFACE -p udp \
--destination-port $NFS_PORT -j DENY -l
# UDP INCOMING TRACEROUTE
# traceroute usually uses -S 32769:65535 -D 33434:33523
ipchains -A input -i $EXTERNAL_INTERFACE -p udp \
--source-port $TRACEROUTE_SRC_PORTS \
--destination-port $TRACEROUTE_DEST_PORTS -j DENY -l
# ----------------------------------------------------------------------------
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y \
-d $IPADDR -j ACCEPT
# ------------------------------------------------------------------
# DNS client (53)
# ---------------
ipchains -A output -i $EXTERNAL_INTERFACE -p udp \
-s $IPADDR $UNPRIVPORTS \
-d $NAMESERVER_1 53 -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p udp \
-s $NAMESERVER_1 53 \
-d $IPADDR $UNPRIVPORTS -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
-d $NAMESERVER_1 53 -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y \
-s $NAMESERVER_1 53 \
-d $IPADDR $UNPRIVPORTS -j ACCEPT
# DNS server modes (53)
# ---------------------
# DNS caching & forwarding nameserver
# -----------------------------------
# server to server query or response
# Caching only name server uses UDP, not TCP
ipchains -A output -i $EXTERNAL_INTERFACE -p udp \
-s $IPADDR 53 \
-d $NAMESERVER_1 53 -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p udp \
-s $NAMESERVER_1 53 \
-d $IPADDR 53 -j ACCEPT
# ------------------------------------------------------------------
# HTTP server (80)
# ----------------
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp \
--source-port $UNPRIVPORTS \
-d $IPADDR 80 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp ! -y \
-s $IPADDR 80 \
--destination-port $UNPRIVPORTS -j ACCEPT
# HTTP client (80)
# ----------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 80 -j ACCEPT
# -------------------------------------------------------------------
# HTTPS server (443)
# ------------------
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp \
--source-port $UNPRIVPORTS \
-d $IPADDR 443 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp ! -y \
-s $IPADDR 443 \
--destination-port $UNPRIVPORTS -j ACCEPT
# HTTPS client (443)
# ------------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 443 -j ACCEPT
# --------------------------------------------------------------------
# HTTP Proxy client (8008/8080)
# -----------------------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
-d $WEB_PROXY_SERVER $WEB_PROXY_PORT -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y \
-s $WEB_PROXY_SERVER $WEB_PROXY_PORT \
-d $IPADDR $UNPRIVPORTS -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
-d $WEB_PROXY_SERVER $WEB_PROXY_PORT1 -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y \
-s $WEB_PROXY_SERVER $WEB_PROXY_PORT1 \
-d $IPADDR $UNPRIVPORTS -j ACCEPT
# ------------------------------------------------------------------
# POP server (110)
# ----------------
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp \
--source-port $UNPRIVPORTS \
-d $IPADDR 110 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp ! -y \
-s $IPADDR 110 \
--destination-port $UNPRIVPORTS -j ACCEPT
# --------------------------------------------------------------------
# POP (110) - Retrieving Mail as a POP Client
# -------------------------------------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
-d $ANYWHERE 110 -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y \
-s $ANYWHERE 110 \
-d $IPADDR $UNPRIVPORTS -j ACCEPT
# --------------------------------------------------------------------
# SMTP client to an ISP account without a local server
# Sending Mail through a local SMTP server
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
-d $ANYWHERE 25 -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y \
-s $ANYWHERE 25 \
-d $IPADDR $UNPRIVPORTS -j ACCEPT
# ------------------------------------------------------------------
# Receiving Mail as a Local SMTP server (25)
# ------------------------------------------
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp \
-s $ANYWHERE $UNPRIVPORTS \
-d $IPADDR 25 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp ! -y \
-s $IPADDR 25 \
-d $ANYWHERE $UNPRIVPORTS -j ACCEPT
# --------------------------------------------------------------------
# IMAP (143) - Retrieving Mail as an IMAP Client
# ----------------------------------------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
-d $ANYWHERE 143 -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y \
-s $ANYWHERE 143 \
-d $IPADDR $UNPRIVPORTS -j ACCEPT
# --------------------------------------------------------------------
# NNTP (119) - Reading and Posting News as a Usenet Client
# --------------------------------------------------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
-d $ANYWHERE 119 -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y \
-s $ANYWHERE 119 \
-d $IPADDR $UNPRIVPORTS -j ACCEPT
# ------------------------------------------------------------------
# SSH server (22)
# ---------------
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp \
--source-port $SSH_REMOTE_PORTS \
-d $IPADDR 22 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp ! -y \
-s $IPADDR 22 \
--destination-port $SSH_REMOTE_PORTS -j ACCEPT
# SSH client (22)
# ---------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $SSH_LOCAL_PORTS \
--destination-port 22 -j ACCEPT
# ------------------------------------------------------------------
# TELNET client (23)
# ------------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 23 -j ACCEPT
# --------------------------------------------------------------------
# AUTH (113) - Allowing Your Outgoing AUTH Requests as a Client
# -------------------------------------------------------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
-d $ANYWHERE 113 -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y \
-s $ANYWHERE 113 \
-d $IPADDR $UNPRIVPORTS -j ACCEPT
# ------------------------------------------------------------------
# AUTH server (113)
# -----------------
# Accept incoming connections to identd but disable in.identd in inetd.conf.
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp \
--source-port $UNPRIVPORTS \
-d $IPADDR 113 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp ! -y \
-s $IPADDR 113 \
--destination-port $UNPRIVPORTS -j ACCEPT
# AUTH client (113)
# -----------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 113 -j ACCEPT
# ------------------------------------------------------------------
# WHOIS client (43)
# -----------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 43 -j ACCEPT
# ------------------------------------------------------------------
# FINGER client (79)
# ------------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 79 -j ACCEPT
# ------------------------------------------------------------------
# FTP server (21)
# ---------------
# incoming request
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp \
--source-port $UNPRIVPORTS \
-d $IPADDR 21 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp ! -y \
-s $IPADDR 21 \
--destination-port $UNPRIVPORTS -j ACCEPT
# PORT MODE data channel responses
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR 20 \
--destination-port $UNPRIVPORTS -j ACCEPT
# FTP client (21)
# ---------------
# outgoing request
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 21 -j ACCEPT
# PORT mode data channel
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp \
--source-port 20 \
-d $IPADDR $UNPRIVPORTS -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp ! -y \
-s $IPADDR $UNPRIVPORTS \
--destination-port 20 -j ACCEPT
# ------------------------------------------------------------------
# IRC client (6667)
# -----------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 6667 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port $UNPRIVPORTS -j ACCEPT
# ------------------------------------------------------------------
# RealAudio / QuickTime client
# ----------------------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 554 -j ACCEPT
# TCP is a more secure method: 7070:7071
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 7070:7071 -j ACCEPT
# UDP is the preferred method: 6970:6999
# For LAN machines, UDP requires the RealAudio masquerading module and
# the ipmasqadm third-party software.
ipchains -A input -i $EXTERNAL_INTERFACE -p udp \
--source-port $UNPRIVPORTS \
-d $IPADDR 6970:6999 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p udp \
-s $IPADDR 6970:6999 \
--destination-port $UNPRIVPORTS -j ACCEPT
# ------------------------------------------------------------------
# ICQ client (4000)
# -----------------
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 2000:4000 -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p udp \
-s $IPADDR $UNPRIVPORTS \
--destination-port 4000 -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p udp \
--source-port 4000 \
-d $IPADDR $UNPRIVPORTS -j ACCEPT
# ----------------------------------------------------------------------------
# UDP accept only on selected ports
# ---------------------------------
# ------------------------------------------------------------------
# OUTGOING TRACEROUTE
# -------------------
ipchains -A output -i $EXTERNAL_INTERFACE -p udp \
-s $IPADDR $TRACEROUTE_SRC_PORTS \
--destination-port $TRACEROUTE_DEST_PORTS -j ACCEPT -l
# ----------------------------------------------------------------------------
# ICMP
# To prevent denial of service attacks based on ICMP bombs, filter
# incoming Redirect (5) and outgoing Destination Unreachable (3).
# Note, however, disabling Destination Unreachable (3) is not
# advisable, as it is used to negotiate packet fragment size.
# For bi-directional ping.
# Message Types: Echo_Reply (0), Echo_Request (8)
# To prevent attacks, limit the src addresses to your ISP range.
#
# For outgoing traceroute.
# Message Types: INCOMING Dest_Unreachable (3), Time_Exceeded (11)
# default UDP base: 33434 to base+nhops-1
#
# For incoming traceroute.
# Message Types: OUTGOING Dest_Unreachable (3), Time_Exceeded (11)
# To block this, deny OUTGOING 3 and 11
# 0: echo-reply (pong)
# 3: destination-unreachable, port-unreachable, fragmentation-needed, etc.
# 4: source-quench
# 5: redirect
# 8: echo-request (ping)
# 11: time-exceeded
# 12: parameter-problem
ipchains -A input -i $EXTERNAL_INTERFACE -p icmp \
--icmp-type echo-reply \
-d $IPADDR -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p icmp \
--icmp-type destination-unreachable \
-d $IPADDR -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p icmp \
--icmp-type source-quench \
-d $IPADDR -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p icmp \
--icmp-type time-exceeded \
-d $IPADDR -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p icmp \
--icmp-type parameter-problem \
-d $IPADDR -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p icmp \
-s $IPADDR fragmentation-needed -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p icmp \
-s $IPADDR source-quench -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p icmp \
-s $IPADDR echo-request -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p icmp \
-s $IPADDR parameter-problem -j ACCEPT
# ----------------------------------------------------------------------------
# Enable logging for selected denied packets
ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -j DENY -l
ipchains -A input -i $EXTERNAL_INTERFACE -p udp \
--destination-port $PRIVPORTS -j DENY -l
ipchains -A input -i $EXTERNAL_INTERFACE -p udp \
--destination-port $UNPRIVPORTS -j DENY -l
ipchains -A input -i $EXTERNAL_INTERFACE -p icmp \
--icmp-type 5 -j DENY -l
ipchains -A input -i $EXTERNAL_INTERFACE -p icmp \
--icmp-type 13:255 -j DENY -l
ipchains -A output -i $EXTERNAL_INTERFACE -j REJECT -l
# ----------------------------------------------------------------------------
echo "done"
exit 0
|