Erinevus lehekülje "Firehol" redaktsioonide vahel

Allikas: Kuutõrvaja
(Sissejuhatus)
(Seadistus)
16. rida: 16. rida:
 
===Seadistus===
 
===Seadistus===
  
Vajalik on iptablesi tugi kernelis
+
Vajalik on iptablesi kerneli tugi
  
 
  Networking --->  
 
  Networking --->  
26. rida: 26. rida:
 
Firehol install näiteks gentool toimub käsuga
 
Firehol install näiteks gentool toimub käsuga
  
  emerge firehol
+
  # emerge firehol
  
 
või debiani puhul
 
või debiani puhul
32. rida: 32. rida:
 
  sudo apt-get install firehol
 
  sudo apt-get install firehol
  
ja et serveris käivitudes stardiks
+
ja et Gentoos ta ka teenusena boodil stardiks
  
  rc-update add firehol default
+
  # rc-update add firehol default
  
 
Töötamise eelduseks on see, et kernelis oleks iptables olemas.
 
Töötamise eelduseks on see, et kernelis oleks iptables olemas.
43. rida: 43. rida:
 
Peale seadistusfaili tasub anda käsk
 
Peale seadistusfaili tasub anda käsk
  
  firehol try
+
  # firehol try
  
 
peale mida kontrollitakse reegleid ja küsitakse yes/no küsimusi
 
peale mida kontrollitakse reegleid ja küsitakse yes/no küsimusi

Redaktsioon: 19. august 2010, kell 17:22

Sissejuhatus

Sageli on vaja linux masinatele luua keerukamaid tulemüüre. Iptables on selleks aga enda keeruka süntaksiga üsnagi ebamugav. Raske on reegleid lugeda ja nende muutmine nõuab põhjalikumalt süntaksi tundmist ja tähelepanelikku jälgimist.

Sellepärast on loodud mõningaid seadistamist hõlbustavaid tarkvarasid näiteks Firehol mis oma süntaksilt meenutab ehk kõige rohkem OpenBSD packet filterit (pf)

Koduleht

Wikipedia artikkel

Seadistus

Vajalik on iptablesi kerneli tugi

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 Gentoos ta ka teenusena boodil 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"