Instalirane
i nastroika na “prozrachna zashtitna stena” (transparent
firewall)
Zab.:Avtorut
e napulno naiasno, che (mozhe da) sushtestvuvat netochnosti i greshki.
Pokazanoto tuk e samo s uchebna tsel! Predi da napravite kakvoto i da e
arhiviraite vazhnite si danni (a zashto ne vsichko?) ! Prevoda na
angliiskite termini mozhe da ne e suvsem tochen. Za kontakti:
uvigii@mail.bg
, nai aktualnata versiia na:
http://uvigii.jeckyll.net/pub/doc/tf/TF.html
Sudurzhanie:
1.Ideia
za izpolzvane
2.Instalatsiia
2.1.
Podgotovka
2.2.
Qdro: kurpezh, konfigurirane, kompilirane, instalatsiia.
2.3.
Brctl: konfigurirane, kompilirane, instalatsiia.
2.4.
Squid: konfigurirane, kompilirane, instalatsiia.
3.Nastroiki
3.1.
Nastroika na bridzha.
3.2.
Nastroika na IP filtur s iptables.
3.3.
Nastroika na Squid.
4.Zaklyuchenie.
1. Ideia za izpolzvane
Predstavete
si slednata situatsiia (fig.1):
V
nashite prava/zadulzheniia vliza administriraneto samo na LAN,
razpolagame s ogranichen byudzhet no triabva da realizirame po niakakuv
nachin filtrirane na trafika ot i kum internet. Edin ot vuzmozhnite
varianti e da napravim 'inteligenten' komutator (switch) izpolzvaiki
Linuks (fig2). V nashiia sluchai toi shte ima samo dva porta i shte sluzhi
da otdeli lokalnata mrezha ot rutera na ISP, koito bi triabvalo da se
iaviava shlyuz po podrazbirane (default gateway) za potrebitelite v LAN.
Po tozi nachin IP paketite shte se preglezhdat suglasno pravila zadadeni
ot nas, pri koeto shte preminat samo tezi koito nie iskame. CHrez
nastroikata na proksi survur bihme mogli da otidem po-daleche i da
filtrirame opredeleno sudurzhanie na niakoi saitove, naprimer vsichki
mp3 failove ot free.xxx.bg. Mozhem sushto da opredelim i skorostta s
koiato shte se svaliat opredeleni failove t.e. mozhem da opredelim
skorost ot 1 kb/s za mp3 failovete na free.xxx.bg i 10 kb/s za html
dokumentite ot sushtiia sait. Zabelezhete, che ne se nalaga da se
prekonfigurirat mashiniite v LAN, nito rutera na ISP. Vuzmozhno e
mashinata koiato shte polzvame da raboti bez da e konfigurirana s IP
adres. V tozi sluchai linuks-suicha, shte ima konfiguriran IP adres za
da se administrira otdalecheno. Pri po-paranoichna konfiguratsiia e
vuzmozhno tova da ne se pravi.
2. Instalatsiia
2.1.
Podgotovka
Sledvashtite
stupki sa realizirani pod Slackware
s iadro 2.4.24
neobhodimi
sa ni:
Instalirana
sistema; kompilator; raboteshti mrezhovi kontroleri (NIC) eth0, eth1
;-)
izhodniia
kod na iadroto
brctl
ebtables
2.2.
Qdro: kurpene, konfigurirane, kompilirane, instalatsiia.
Za
da mozhe iptables da 'vizhda' IP paketite (3-ti sloi ot OSI modela)
koito 'preminavat' opakovani kato freimove prez bridzha (2-ri sloi ot
OSI modela) za iadra ot seriiata 2.4 e neobhodimo da se pachne iadroto
na Linuks. Za tselta dekompresiraite ebtables v /usr/src/linux , sled
koeto:
root@fw:/usr/src/linux#
patch -p1 -i ebtables-brnf-5_vs_2.4.24.diff
root@fw:/usr/src/linux#
make menuconfig
V
networking options
Izbirame
Network packet filtering (replaces ipchains)
i
802.1d Ethernet Bridging
kompilirame
root@fw:/usr/src/linux#
make clean && make dep && make bzImage &&
make modules
Instalirame
novoto iadro i modulite kum nego, preglezhdame /etc/lilo.conf
izpulniavame:
root@fw:/usr/src/linux#
/sbin/lilo
Restartirame
sistemata.
2.3.
Brctl: konfigurirane, kompilirane, instalatsiia.
root@fw:/tmp#
tar -xzvf bridge-utils-0.9.6.tar.gz
root@fw:/tmp#
cd bridge-utils
root@fw:/tmp/bridge-utils#
./configure
root@fw:/tmp/bridge-utils#
make all
root@fw:/tmp/bridge-utils#
make install
2.4.
Squid: konfigurirane, kompilirane, instalatsiia.
Squid
e keshirasht http proksi survur s bogat nabor ot funktsii. Sledvashtite
stupki ne sa zadulzhitelni ako ne zhelaete da instalirate Squid .
root@fw:/tmp#
tar -xzvf squid-2.5.STABLE5.tar.gz
root@fw:/tmp#
cd squid-2.5.STABLE5
root@fw:/tmp/squid-2.5.STABLE5#
./configure --prefix=/usr/local/squid --enable-delay-pools
–enable-linux-netfilter
root@fw:/tmp/squid-2.5.STABLE5#
make all
root@fw:/tmp/squid-2.5.STABLE5#
mkdir /usr/local/squid
root@fw:/tmp/squid-2.5.STABLE5#
chown nobody /usr/local/squid
root@fw:/tmp/squid-2.5.STABLE5#
su nobody
nobody@fw:/tmp/squid-2.5.STABLE5$
make install
nobody@fw:/$
exit
Nastroiki
3.1.
Nastroika na bridzha.
Suzdavame
skripta /etc/rc.d/rc.bridge
#!/bin/sh
#
#
/etc/rc.d/rc.bridge.
BRVER="0.0.1"
#
BRCTL="/usr/local/sbin/brctl"
IFCONFIG="/sbin/ifconfig"
ROUTE="/sbin/route"
#
BR="br_fw"
INTIF0="eth0"
EXTIF0="eth1"
BRIP="10.4.9.5"
BRNET="10.4.9.0"
BRMASK="255.255.255.0"
BRBRC="10.4.9.255"
BRGW="10.4.9.1"
#
echo
"Starting brige $BRVER ... "
#
$IFCONFIG
$INTIF0 0.0.0.0
$IFCONFIG
$EXTIF0 0.0.0.0
#
$BRCTL
addbr $BR
$BRCTL
addif $BR $INTIF0
$BRCTL
addif $BR $EXTIF0
#
$IFCONFIG
$BR up
$IFCONFIG
$BR $BRIP netmask $BRMASK broadcast $BRBRC
$ROUTE
add default gw $BRGW
$IFCONFIG
$ROUTE
$BRCTL
show
#
Sled
koeto go startirame:
root@fw:/etc/rc.d#
./rc.bridge
Mozhe
da dobavim slednoto v /etc/rc.d/rc.inet1
/etc/rc.d/rc.brige
s
tsel avtomatichno izpulnenie na skripta pri start na mashinata. Razbira
se dobre e da suobrazite koga shte startirate /etc/rc.d/rc.firewall !
Mozhe da napravite start i stop funktsii i t.n. V sluchaia niama
znachenie.
Veche
bi triabvalo da imame rabotesht bridzh s dva fizicheski interfeisa eth0 –
kum lokalnata mrezha i eth1 – kum ISP rutera, edin logicheski
administrativen adres 10.4.9.5
3.2.
Nastroika na IP filtur s iptables.
Tuk
veche vsichko e v rutsete Vi.
Primer
A Tozi primer iziskva
rabotesht Squid!
root@fw:/etc/rc.d#
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT
--to-port 8080
root@fw:/etc/rc.d#
iptables -A FORWARD -i eth1 -p tcp --dport 80 -j DROP
S
gornite dva reda shte prenasochim IP paketite idvashti ot lokalnata mrezha
i otivashti kum 80-i port(http) na mashini izvun LAN kum 8080-i port na
bridzh mashinata i shte zabranim vsichki paketi pristigashti ot vun i
otivashti kum 80-i port v LAN . Rezultatut mozhe da proverite chrez
smiana na kabelite na dvete mrezhovi karti.
Primer
B
root@fw:/etc/rc.d#
iptables -P INPUT DROP
root@fw:/etc/rc.d#
iptables -A INPUT -i eth1 -p tcp -s 10.4.10.2 --dport 22 -j ACCEPT
root@fw:/etc/rc.d#
iptables -A INPUT -i eth0 -p tcp -s 10.4.9.2--dport 22 -j ACCEPT
S
tozi primer zabraniavame na vsichki osven na mashini s mrezhovi adresi
10.4.10.2 i 10.4.9.2 da se svurzvat na 22-i port na bridzh mashinata
(SSH). Zabelezhete, che po podrazbirane vsichki paketi koito ne sa
izrichno prieti, shte budat otshvurleni t.e. v tozi sluchai vruzki kum
drugi portove niama da sa vuzmozhni.
3.3.
Nastroika na Squid
Izpolzvaneto
na Squid v tozi sluchai e po skoro pokazatelno otkolkoto nalozhitelno.
TSelta mu e da dopulni funktsionalnostta na iptables, tova se postiga
chrez dosta udobniia (pone za men) nachin za filtrirane na url,
delay_pools i t.n. Toi e guvkuv i mozhe da se nastroi da raboti samo
kato url filtur bez da keshira kakvoto i da e ! Drug variant e da se
polzva otdelna mashina za proksi survur.
Za
da raboti kato transparent proxy ne triabva da se zabravi
httpd_accel_port
80
httpd_accel_with_proxy
on
httpd_accel_host
virtual
httpd_accel_uses_host_header
on
v
/usr/local/squid/etc/squid.conf.
Primer
A
#
acl
Webs05 dstdomain .microsoft.com .msn.com .msn.net
acl
Webs50 dst 0.0.0.0/0.0.0.0
#
acl
Hosts50 src 10.42.9.0/255.255.255.0
acl
Hosts90 src 10.42.9.2/255.255.255.255
#
acl
Conn50 maxconn 6
#
http_access
deny Hosts50 Webs05
http_access
allow Hosts90 Webs50
http_access
allow Hosts50 Webs50 !Conn50
http_access
deny all
Po
tozi nachin shte napravim slednoto: 1. SHTe zabranim dostupa do
microsoft.com i proizvodni, 2 SHTe razreshim na vsichki v lokalnata
mrezha dostup do vsichki saitove s maksimum 6 vruzki ednovremenno (za
1 IP) (Osven Hosts90). Zabelezhete, che msn.com, msn.net i
microsoft.com niama da sa dostupni!
Primer
B
acl
Hosts90 src 10.42.9.2/255.255.255.255
#
acl
Words50 url_regex -i ftp .exe .mp3 .wav .avi .mov .mpeg .iso .rar
.zip .ace delay_pools 1
#
delay_class 1 2
delay_access 1
allow Words50 !Hosts90
delay_parameters 1 -1/-1 1000/10000
#
Po
tozi nachin shte ogranichim vsichki potrebiteli osven 10.42.9.2 da tegliat
mp3 i podobni sus skorost 1000 baita/s.
4.
Zaklyuchenie
Pri
napravenite testove s 2 pravila v iptables na AMD K6II – 300
Mhz 128 MB RAM 2x RTL8139D biaha izmereni Total rates:1648.7
kbytes/sec, 1529.8 packets/sec. Pri CPU states: 9.0% user
88.2% system 0.0% nice 0.0% iowait 2.6% idle .
Iptraf natovarvashe s okolo 20% sistemata, t.e. e vuzmozhno da se
postignat po-dobri rezultati pri negovoto izklyuchvane.