Firehol
Sisukord
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
Seadistus
Firehol install näiteks gentool toimub käsuga
emerge firehol
ja ,et serveris käivitudes stardiks
rc-update add firehol default
Töötamise eelduseks on muidugi see ,et meil oleks kernelis iptables olemas. Kuna see viimane pikem teema siis antud palas sellel ei peatu.
seadistusfail asub kaustas /etc/firehol
Peale seadistusfaili tasub anda käsk
firehol try
Millejärel kontrollitakse reegleid ja küsitakse yes/no küsimust enne reeglite aktiveerimist mis võib osutuda vahel kasulikuks ,et mitte jääda nö ukse taha :)
Näite seadistusfailist firehol.conf ühe tavalise veebiserveri kohta
#!/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 lubame server reaga serverisse sisse pordid http https icmp ja ssh välja lubame serverist client reaga dns'i smtp icmp ja ntp
On ka kena selleasemel ,et drop'ida mittesobivad paketid pigem nad reject'ida
Nii ,et saatjal ei tekiks timeout'i. Selleks tuleb asendada policy drop reaga
policy reject
Olles mitte nii paranoiline võib kirjutada ka
client all accept
Lubades nii kõik väljuva liikluse
Gentool näiteks võiks selleks ,et toimiks emerge --sync ja softi uuendamine lisada ka rea
client "http ftp rsync" accept
Kui soovime veel paranoilisemad olla ja näiteks keelata ssh ainult sisevõrku tuleb konfi muuta 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 näiteks avada mõne vähemtuntud teenuse port fireholile võib kasutada custom käsku
server custom shoutcast tcp/8000 default accept
Ja avati tcp port 8000 ning sai ta nimeks shoutcast
Firehol on samas üsna paindlik lubades konfi lisada otse ka iptables ridu
Näiteks võime lisada sinna otse 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 ehk mysql serverile ümber masinale 192.168.1.100 Nagu märkasite saab kasutada iptables käskudes ka muutujaid firehol konfis.
Serverite kaitseks saab kasutada ddos mõningaid abivahendeid. Üks käsk on porotection
protection strong 200/sec 100
võimalused on veel strong, full or all. Sellel real blokeeritakse kui 200 sekundi jooksul tuleb ühest allikast rohkem kui 100 päringut.
Kodune ruuter
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
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"