Erinevus lehekülje "Firehol" redaktsioonide vahel
(→Seadistus) |
|||
25. rida: | 25. rida: | ||
emerge firehol | emerge firehol | ||
− | ja | + | või debiani puhul |
+ | |||
+ | sudo apt-get install firehol | ||
+ | |||
+ | ja et serveris käivitudes stardiks | ||
rc-update add firehol default | rc-update add firehol default | ||
− | Töötamise eelduseks on | + | Töötamise eelduseks on see, et kernelis oleks iptables olemas. |
− | Kuna see viimane pikem teema siis antud palas sellel ei peatu. | + | Kuna see viimane paraku pikem teema, siis antud palas sellel ei peatu. |
− | seadistusfail asub kaustas '''/etc/firehol''' firehol.conf | + | seadistusfail asub kaustas '''/etc/firehol''' nimega '''firehol.conf''' |
Peale seadistusfaili tasub anda käsk | Peale seadistusfaili tasub anda käsk | ||
38. rida: | 42. rida: | ||
firehol try | firehol try | ||
− | + | peale mida kontrollitakse reegleid ja küsitakse yes/no küsimusi | |
− | enne reeglite aktiveerimist mis | + | enne reeglite aktiveerimist, mis võivad osutuda vahel kasulikuks, et mitte jääda nö. ukse taha :) |
− | + | Näide ühe tavalise veebiserveri '''firehol.conf''' seadistusest: | |
#!/bin/bash | #!/bin/bash | ||
52. rida: | 56. rida: | ||
client "dns smtp icmp ntp" accept | client "dns smtp icmp ntp" accept | ||
+ | Mis siis tegime? | ||
+ | |||
+ | eth0'il unroutable ip'd blokeerime ehk siis näiteks sisevõrguaadressid jms. | ||
+ | vaikimisi kõik paketid blokeeritakse. | ||
+ | '''server''' reaga lubame väljaspoolt ligi teenustele: http, https, icmp ja ssh | ||
+ | '''client''' reaga lubame väljaspoole dns, smtp, icmp ja ntp päringud | ||
− | + | Nimekirja teenustest, mida firehol toetab, näeme aadressil http://firehol.sourceforge.net/services.html | |
− | + | Pakettide blokeerimise asemel on viisakas mittesobivad pigem reject'ida, | |
− | + | et saatjal ei tekiks timeout'i. Selleks tuleb | |
− | |||
− | |||
− | + | policy drop | |
− | + | asemel kirjutada | |
− | |||
policy reject | policy reject | ||
− | Olles mitte | + | Olles mitte paranoiline, võib kirjutada ka |
client all accept | client all accept | ||
− | + | lubades kõik väljuva liikluse | |
− | Gentool | + | Näiteks Gentool võiks '''emerge --sync''' toimimiseks ja softi uuendamiseks lisada ka |
− | + | client "http ftp rsync" accept | |
− | Kui soovime | + | Kui soovime keelata ssh välisvõrgust ja lubada vaid sisevõrgust, tuleks konf teha selliselt: |
#!/bin/bash | #!/bin/bash | ||
91. rida: | 98. rida: | ||
client "dns smtp icmp ntp" accept | client "dns smtp icmp ntp" accept | ||
− | Kui vahel on vaja | + | Kui vahel on vaja avada mõne vähemtuntud teenuse port firehol'ile, võib kasutada custom käsku |
− | võib kasutada custom käsku | ||
− | + | server custom shoutcast tcp/8000 default accept | |
− | + | Selle peale avatakse tcp port 8000 nimega shoutcast | |
− | Firehol on samas üsna paindlik lubades konfi lisada | + | Firehol on samas üsna paindlik, lubades otse konfi lisada ka iptables ridu |
− | Näiteks | + | Näiteks lisame sinna rea |
DB="192.168.1.100" | DB="192.168.1.100" | ||
iptables -t nat -A OUTPUT -p tcp -m tcp --dport 3306 -j DNAT --to-destination ${DB}:3306 | iptables -t nat -A OUTPUT -p tcp -m tcp --dport 3306 -j DNAT --to-destination ${DB}:3306 | ||
− | Selle reaga suunatakse kõik sisevõrgus tehtud ühenduskatsed pordile 3306 | + | Selle reaga suunatakse kõik sisevõrgus tehtud ühenduskatsed pordile 3306 (mysql server) |
− | ümber masinale 192.168.1.100 | + | ümber masinale 192.168.1.100. |
− | Nagu märkasite saab kasutada iptables käskudes ka muutujaid firehol konfis. | + | Nagu märkasite saab kasutada iptables käskudes ka muutujaid firehol'i konfis. |
− | + | DDOS rünnaku vastu saab kasutada mõningaid abivahendeid, nagu näiteks porotection | |
− | + | protection strong 200/sec 100 | |
− | + | Võimalik on veel strong, full or all. Seega, kui 200 sekundi jooksul tuleb ühest allikast rohkem kui 100 päringut, siis pannakse kliendile peale blokeering. | |
− | kui 200 sekundi jooksul tuleb ühest allikast rohkem kui 100 päringut. | ||
− | Soovides mingeid | + | Soovides mingeid IP'sid permanentselt blokeerida, siis |
blacklist all <ip aadress> | blacklist all <ip aadress> | ||
− | + | Aadresse võib kirjutada ka mitmeid, eraldades nad teineteisest tühikuga | |
Reegleid näeb kirjutades | Reegleid näeb kirjutades | ||
126. rida: | 131. rida: | ||
iptables -L | iptables -L | ||
− | Hea | + | Hea ülevaatlik käsk on ka |
firehol status | firehol status |
Redaktsioon: 19. august 2010, kell 13:57
Sissejuhatus
Sageli on vaja linux masinatele luua keerukamaid tulemüüre. Iptables on selleks enda keeruka süntaksiga üsnagi ebamugav. Raske reegleid lugeda ja neid muuta ja nõuab põhjalikumalt süntaksi tundmist ja jälgimist.
Sellepärast on loodud mõningaid seadistamist hõlbustavaid tarkvarasid näiteks Firehol
http://firehol.sourceforge.net/
http://en.wikipedia.org/wiki/FireHOL
Seadistus
Vajalik on iptablesi tugi kernelis
Networking ---> Networking options ---> [*] Network packet filtering (replaces ipchains) ---> Core Netfilter Configuration ---> <*> Netfilter Xtables support (required for ip_tables)
Firehol install näiteks gentool toimub käsuga
emerge firehol
või debiani puhul
sudo apt-get install firehol
ja et serveris käivitudes stardiks
rc-update add firehol default
Töötamise eelduseks on see, et kernelis oleks iptables olemas. Kuna see viimane paraku pikem teema, siis antud palas sellel ei peatu.
seadistusfail asub kaustas /etc/firehol nimega firehol.conf
Peale seadistusfaili tasub anda käsk
firehol try
peale mida kontrollitakse reegleid ja küsitakse yes/no küsimusi enne reeglite aktiveerimist, mis võivad osutuda vahel kasulikuks, et mitte jääda nö. ukse taha :)
Näide ühe tavalise veebiserveri firehol.conf seadistusest:
#!/bin/bash version 5 interface "eth0" internet src not "${UNROUTABLE_IPS}" policy drop server "http https icmp ssh" accept client "dns smtp icmp ntp" accept
Mis siis tegime?
eth0'il unroutable ip'd blokeerime ehk siis näiteks sisevõrguaadressid jms. vaikimisi kõik paketid blokeeritakse. server reaga lubame väljaspoolt ligi teenustele: http, https, icmp ja ssh client reaga lubame väljaspoole dns, smtp, icmp ja ntp päringud
Nimekirja teenustest, mida firehol toetab, näeme aadressil http://firehol.sourceforge.net/services.html
Pakettide blokeerimise asemel on viisakas mittesobivad pigem reject'ida, et saatjal ei tekiks timeout'i. Selleks tuleb
policy drop
asemel kirjutada
policy reject
Olles mitte paranoiline, võib kirjutada ka
client all accept
lubades kõik väljuva liikluse
Näiteks Gentool võiks emerge --sync toimimiseks ja softi uuendamiseks lisada ka
client "http ftp rsync" accept
Kui soovime keelata ssh välisvõrgust ja lubada vaid sisevõrgust, tuleks konf teha selliselt:
#!/bin/bash version 5 asutuse_kontor="192.168.1.0/25" interface "eth0" internet src not "${UNROUTABLE_IPS}" policy drop server "http https icmp" accept server "ssh" accept src "${asutuse_kontor}" client "dns smtp icmp ntp" accept
Kui vahel on vaja avada mõne vähemtuntud teenuse port firehol'ile, võib kasutada custom käsku
server custom shoutcast tcp/8000 default accept
Selle peale avatakse tcp port 8000 nimega shoutcast
Firehol on samas üsna paindlik, lubades otse konfi lisada ka iptables ridu
Näiteks lisame sinna rea
DB="192.168.1.100" iptables -t nat -A OUTPUT -p tcp -m tcp --dport 3306 -j DNAT --to-destination ${DB}:3306
Selle reaga suunatakse kõik sisevõrgus tehtud ühenduskatsed pordile 3306 (mysql server) ümber masinale 192.168.1.100. Nagu märkasite saab kasutada iptables käskudes ka muutujaid firehol'i konfis.
DDOS rünnaku vastu saab kasutada mõningaid abivahendeid, nagu näiteks porotection
protection strong 200/sec 100
Võimalik on veel strong, full or all. Seega, kui 200 sekundi jooksul tuleb ühest allikast rohkem kui 100 päringut, siis pannakse kliendile peale blokeering.
Soovides mingeid IP'sid permanentselt blokeerida, siis
blacklist all <ip aadress>
Aadresse võib kirjutada ka mitmeid, eraldades nad teineteisest tühikuga
Reegleid näeb kirjutades
iptables -L
Hea ülevaatlik käsk on ka
firehol status
Loodud yhendusi n2eb k2ige lihtsamalt /proc/net/ip_conntrack failist
cat /proc/net/ip_conntrack
Kõiki fireholi reeglite käske näeb ametlikust manualist manualis http://firehol.sourceforge.net/commands.html seal leidub veel hulga huvitavaid ja kasulikke nippe
Kui on vaja millegipärast muutma RESERVED ip aadresse nt võetakse mõni uus ip blokk kasutusse tuleb tekitada lihtsalt firehol kausta fail RESERVED_IPS uue sisuga
Näidiskonf: Kodune tulemüür koos NAT'iga
konfiguratsioon koduseks ruuteriks millel kaks võrgukaarti ja sisemisele toimib nat. Väliselt on lubatud sisse vaid ssh port.
eth0 on siis väline kaart mis yhendatud internetiallikaga ning eth1 sisevõrgu tarbeks
version 5 interface "eth0" Internet protection strong server "ssh" accept client all accept interface "eth1" LAN policy accept client all accept router lan2internet inface "eth1" outface "eth0" client all accept route all accept masquerade
Ülejäänud read peaksid olema juba tuttavad peale route all accept'i ja masquerade mis lülitavad sisse NATimise.
Logi
tail -f /var/log/messages abil võib näha erinevaid ebatavalisi ja blokeeritud ühendusi firehol poolt.
Logimise ulatust saab muuta reaga
FIREHOL_LOG_LEVEL
näiteks FIREHOL_LOG_LEVEL="7"