ot Uvigii(14-04-2004)

reiting (18)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane

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.




    << Multimediina stantsiia s Linux | PPPoE i spodeliane na internet dostup >>