Firehol: erinevus redaktsioonide vahel

Allikas: Kuutõrvaja
Mine navigeerimisribaleMine otsikasti
Jj (arutelu | kaastöö)
Resümee puudub
Drakan (arutelu | kaastöö)
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 10: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"