Erinevus lehekülje "Firehol" redaktsioonide vahel

Allikas: Kuutõrvaja
(Seadistus)
25. rida: 25. rida:
 
  emerge firehol
 
  emerge firehol
  
ja ,et serveris käivitudes stardiks
+
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 muidugi see ,et meil oleks kernelis iptables olemas.
+
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 nimega
+
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
  
Millejärel kontrollitakse reegleid ja küsitakse yes/no küsimust
+
peale mida kontrollitakse reegleid ja küsitakse yes/no küsimusi
enne reeglite aktiveerimist mis võib osutuda vahel kasulikuks ,et mitte jääda nö ukse taha :)
+
enne reeglite aktiveerimist, mis võivad osutuda vahel kasulikuks, et mitte jääda nö. ukse taha :)
  
Näite seadistusfailist firehol.conf ühe tavalise veebiserveri kohta
+
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
  
Mis siis tegime.
+
Nimekirja teenustest, mida firehol toetab, näeme aadressil http://firehol.sourceforge.net/services.html
  
eth0'il unroutable ip'd blokeerime ehk siis näiteks sisevõrguaadressid jms
+
Pakettide blokeerimise asemel on viisakas mittesobivad pigem reject'ida,
vaikimisi kõik paketid blokeeritakse
+
et saatjal ei tekiks timeout'i. Selleks tuleb
lubame server reaga serverisse sisse pordid http https icmp ja ssh
 
välja lubame serverist client reaga dns'i smtp icmp ja ntp
 
  
Nimekirja teenustest mida firehol toetab näeme http://firehol.sourceforge.net/services.html
+
policy drop
  
On ka kena selleasemel ,et drop'ida mittesobivad paketid pigem nad reject'ida
+
asemel kirjutada
Nii ,et saatjal ei tekiks timeout'i. Selleks tuleb asendada policy drop reaga
 
  
 
  policy reject
 
  policy reject
  
Olles mitte nii paranoiline võib kirjutada ka  
+
Olles mitte paranoiline, võib kirjutada ka
  
 
  client all accept
 
  client all accept
  
Lubades nii kõik väljuva liikluse
+
lubades kõik väljuva liikluse
  
Gentool näiteks võiks selleks ,et toimiks emerge --sync ja softi uuendamine lisada ka rea
+
Näiteks Gentool võiks '''emerge --sync''' toimimiseks ja softi uuendamiseks lisada ka
  
  client "http ftp rsync" accept
+
client "http ftp rsync" accept
  
Kui soovime veel paranoilisemad olla ja näiteks keelata ssh ainult sisevõrku tuleb konfi muuta selliselt
+
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 näiteks avada mõne vähemtuntud teenuse port fireholile
+
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
+
server custom shoutcast tcp/8000 default accept
  
Ja avati tcp port 8000 ning sai ta nimeks shoutcast
+
Selle peale avatakse tcp port 8000 nimega shoutcast
  
Firehol on samas üsna paindlik lubades konfi lisada otse ka iptables ridu
+
Firehol on samas üsna paindlik, lubades otse konfi lisada ka iptables ridu
  
Näiteks võime lisada sinna otse rea
+
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 ehk mysql serverile
+
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.
  
Serverite kaitseks saab kasutada ddos mõningaid abivahendeid. Üks käsk on porotection
+
DDOS rünnaku vastu saab kasutada mõningaid abivahendeid, nagu näiteks porotection
  
  protection strong 200/sec 100
+
protection strong 200/sec 100
  
võimalused on veel strong, full or all. Sellel real blokeeritakse
+
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 ip'sid permanentselt blokeerida saab seda teha reaga
+
Soovides mingeid IP'sid permanentselt blokeerida, siis
  
 
  blacklist all <ip aadress>
 
  blacklist all <ip aadress>
  
sinna v2ib aadresse kirjutada teineteise j2rele tyhikuga eraldatuna ning m22rata saab ka terveid v2rke
+
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 ylevaatlik käsk on ka
+
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"