Configurarea și gestionarea sistemului iptables (verificați)

Iată exemple de setări pentru situații diferite. Despre structura IPTABLES. management, arhitectură și așa mai departe - vezi Ciclul Linux: IPTABLES - Manual: Partea 1 - Bazele IPTABLES.







Setarea se face la:

# lsb_release -a
Nu sunt disponibile module LSB.
ID Distributor: Debian
Descriere: Debian GNU / Linux 6.0.7 (squeeze)
Eliberare: 6.0.7
Codename: stoarceți

Creați un fișier de configurare pentru IPTABLES:

Să începem:

# chmod + x /etc/network/if-up.d/iptables.conf

IMPORTANT: unele opțiuni sunt specificate cu două liniuțe - deși în exemple sunt afișate ca unul! Țineți cont de acest lucru dacă copiați regulile direct de pe blog:

- - stat
- Dport
- - tcp-flags
- - respingere - cu

În aceasta adăugăm:

# Setați calea către fișierul executabil IPTABLES
IPTABLES = '/ sbin / iptables'

# Resetați regulile existente pentru toate tabelele și lanțurile
$ IPTABLES -F
$ IPTABLES -X

# Setați regulile implicite (dacă nu o regulă din lanț nu a funcționat - regula va funcționa de aici)
$ IPTABLES -P INPUT DROP
$ IPTABLES -P ACCEPTUL DE IEȘIRE
$ IPTABLES-P ACȚIUNEA FORWARD

# Permitem tot traficul pe interfața loopback lo0

# Permitem traficul deja stabilit și creând conexiuni de conexiuni noi:
$ IPTABLES -U INPUT -m state-state RELATE, ESTABLISHED -j ACCEPT

# Permitem intrarea SSH prin interfața eth0
$ IPTABLES -U INPUT -p tcp -i eth0 -dport 22 -j ACCEPT

Acum, să analizăm mai detaliat regulile create.

IPTABLES folosește trei tipuri de tabele:

În consecință, suntem interesați de al treilea tabel de filtre. În acest tabel există trei lanțuri încorporate:

  1. INPUT - pentru pachetele primite.
  2. FORWARD - pentru trecerea prin această mașină la alta.
  3. OUTPUT - pentru ieșire.

Un pachet care trece prin aceste lanțuri, bazat pe regulă, poate fi omis (ACCEPT) sau aruncat (DROP):

Prima regulă pe care am creat-o pentru lanțul INPUT este comportamentul implicit pentru pachetele care trec prin acest filtru. În cazul în care niciuna dintre regulile specificate mai jos nu este aplicată pachetului - acesta va fi aruncat (DROP) fără notificarea expeditorului:

$ IPTABLES -P INPUT DROP

Pachetele care trec prin filtrul OUTPUT vor fi, prin urmare, ignorate:

Același lucru este valabil și pentru pachetele de "tranzit":

$ IPTABLES -P ACCEPTUL DE IEȘIRE

$ IPTABLES -U INPUT -i lo -j ACCEPT

Specifică regula obișnuită (-A) din filtrul INPUT pentru pachetele care trec prin interfața (-i) loopback (lo) și execută țintă (-j) "ACCEPT".

Următoarea regulă utilizează starea modulului (-m). care verifică starea conexiunii stabilite - RELATED sau ESTABLISHED și dacă conexiunea este potrivită pentru această regulă - o rezolvă:

$ IPTABLES -U INPUT -m state-state RELATE, ESTABLISHED -j ACCEPT

În regula următoare pentru filtrul de intrare INPUT, specificăm:

$ IPTABLES -U INPUT -p tcp -i eth0 -dport 22 -j ACCEPT

Protocol (-p) TCP. interfața (-i) eth0. și portul de destinație, adică port pe serverul nostru la care este stabilită conexiunea (-port).

Adăugați alte câteva reguli:

# Facem protecție împotriva atacurilor DOS:
$ IPTABLES -U INPUT -p tcp -m tcp -tcp-flags SYN, ACK, FIN, RST RST -m limita -limit 1 / s -j ACCEPT

# Permiteți FTP
$ IPTABLES -U INPUT -i eth0 -p tcp -dport 21 -j ACCEPT

# Să rezolvăm HTTP
$ IPTABLES -U INPUT -i eth0 -p tcp -dport 80 -j ACCEPT

# Activați HTTPS
$ IPTABLES -U INPUT -i eth0 -p tcp -dport 443 -j ACCEPT

# Permitem numai SMTP din rețeaua 77.120. *** 1/24
$ IPTABLES -U INPUT -s 77.120. *** 1/24 -i eth0 -p tcp -dport 25 -j ACCEPT







# Rezolvăm doar POP3 din IP 77.120
$ IPTABLES -U INPUT -s 77.120. *** 46 -i eth0 -p tcp -dport 110 -j ACCEPT

# Permiteți DNS
$ IPTABLES -U INPUT -i eth0 -p udp -sport 53 -j ACCEPT

# Accesul la porturile 8081 și 8082 este permis numai din rețelele 91. ***. **. 0/24, 195. ***. ***. 0/23 și IP 37. ***. ** 174
pentru net în 91. ***. ** 0/24 195. ***. *** 0/23 37. ***. ** 174; face
$ IPTABLES -A INPUT -p tcp -m tcp -s $ net -m multiport -dports 8081,8082 -j ACCEPT
făcut
$ IPTABLES -U INPUT -p tcp -m tcp -m multiport -dports 8081,8082 -j DROP

# Activați ping-ul
$ IPTABLES -U INPUT -p icmp -j ACCEPT

Reporniți scriptul astfel încât regulile să intre în vigoare, în același timp verificăm erorile:

În caz de erori - va fi indicat în ce linie ce eroare. De exemplu:

iptables v1.4.8: protocolul necunoscut `tcp-dport 'specificat

Spațiul după tcp lipsește.

Puteți vedea regulile actuale cu opțiunea -list:

# iptables -list
Lanț INPUT (politică DROP)
direcționați țintă destinație sursă pro opt
ACCEPTATI - oriunde oriunde
ACCEPTATI toate - oriunde oriunde state legate, stabilit
ACCEPT tcp - oriunde oriunde tcp dpt: ssh
ACCEPT tcp - oriunde oriunde tcp flags: FIN, SYN, RST, limita ACK / RST: avg 1 / sec burst 5
ACCEPT tcp - oriunde oriunde tcp dpt: ftp
ACCEPT tcp - oriunde oriunde tcp dpt: www
ACCEPT tcp - oriunde oriunde tcp dpt: https
ACCEPT tcp - 0. ***. ***. 77.colo.static.dc.volia.com/24 oriunde tcp dpt: smtp
ACCEPT tcp -! 0. *** ***. 77.colo.static.dc.volia.com/24 oriunde tcp dpt: smtp
ACCEPT tcp - 46. ***. ***. 77.colo.static.dc.volia.com oriunde tcp dpt: pop3
ACCEPT udp - oriunde oriunde udp spt: domain
ACCEPT tcp - 91. ***. ** 0/24 oriunde tcp multiport dports tproxy, 8082
ACCEPT tcp - 195. ***. *** 0/23 oriunde tcp multiport dports tproxy, 8082
ACCEPT tcp - 37. ***. *** 174 oriunde tcp multiport dports tproxy, 8082
DROP tcp - oriunde oriunde tcp multiport dports tproxy, 8082
ACCEPT icmp - oriunde undeva icmp echo-request

Lanț FORWARD (politica ACCEPT)
direcționați țintă destinație sursă pro opt

Lanț OUTPUT (politică ACCEPT)
direcționați țintă destinație sursă pro opt

Mai multe exemple de utilizare.

Verificați starea IPTABLES:

# iptables -L -n -v
Lanț INPUT (politică DROP 176 pachete, 36734 octeți)
Pkts bytes țintă pro opt în destinație sursă
0 0 ACCEPT toate - lo * 0.0.0.0/0 0.0.0.0 / 0
179K 40M ACCEPTĂ toate - * * 0.0.0.0/0 0.0.0.0/0 stat asociat, stabilit
1 100 ACCEPT tcp - eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt: 22
0 0 ACCEPT tcp - eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt: 21
3 180 ACCEPT tcp - eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt: 80
1 28 ACCEPT icmp - * * 0.0.0.0/0 0.0.0.0 / 0
1 60 ACCEPT tcp - * * 195.191.226.102 0.0.0.0/0 tcp dpt: 514
0 0 ACCEPT tcp - * * 91.218.228.236 0.0.0.0/0 tcp dpt: 514

Lanț FORWARD (politică ACCEPT 0 pachete, 0 octeți)
Pkts bytes țintă pro opt în destinație sursă

Lanț OUTPUT (politică ACCEPT 180K pachete, 12M octeți)
Pkts bytes țintă pro opt în destinație sursă

Reguli curente de ieșire, numai INPUT:

# iptables-L INPUT -n -v

# iptables -L OUTPUT -n -v

Adăugați și eliminați reguli.

Efectuați regulile INPUT actuale cu liniile (numere de reguli):

# iptables -L INPUT -n -line-numere
Lanț INPUT (politică DROP)
num destinație țintă destinație opt opt
1 Acceptați toate - 0.0.0.0/0 0.0.0.0 / 0
2 ACCEPT toate - 0.0.0.0/0 0.0.0.0/0 stat asociate, stabilit
3 ACCEPT tcp - 0.0.0.0/0 0.0.0.0/0 tcp dpt: 22
4 ACCEPT tcp - 0.0.0.0/0 0.0.0.0/0 tcp dpt: 21
5 ACCEPT tcp - 0.0.0.0/0 0.0.0.0/0 tcp dpt: 80
6 ACCEPT icmp - 0.0.0.0/0 0.0.0.0/0
7 ACCEPT tcp - 195.191.226.102 0.0.0.0/0 tcp dpt: 514
8 ACCEPT tcp - 91.218.228.236 0.0.0.0/0 tcp dpt: 514

Pentru a adăuga o regulă înainte de 5:

# iptables -I INPUT 5 -i eth0 -p tcp -dport 8080 -j ACCEPT

# iptables -L INPUT -n -line-numere | grep 80
5 ACCEPT tcp - 0.0.0.0/0 0.0.0.0/0 tcp dpt: 8080
6 ACCEPT tcp - 0.0.0.0/0 0.0.0.0/0 tcp dpt: 80

Vechea regulă a fost "mutată" la linia 6, cea nouă a devenit 5.

Blocați conexiunile de intrare pentru IP8.8.8.8:

# iptables -I INPUT 7 -s 8.8.8.8 -j DROP

# iptables -L INPUT -n -line-numere | grep 8.8.8.8
7 DROP all - 8.8.8.8 0.0.0.0 / 0

# iptables -A OUTPUT -p icmp -d www.facebook.com -j DROP

# ping 173.252.101.26
PING 173.252.101.26 (173.252.101.26) 56 (84) octeți de date.
ping: sendmsg: Operația nu este permisă
ping: sendmsg: Operația nu este permisă

Să ne uităm la reguli:

# iptables -L OUTPUT -n -line-numere
Lanț OUTPUT (politică ACCEPT)
num destinație țintă destinație opt opt
1 DROP tcp - 0.0.0.0/0 173.252.101.26

# iptables -A INPUT -p tcp -destinație-port 22 -m mac -mac-sursă 00: 60: ef: 0b: f6: 1a -j ACCEPT

# iptables -A INPUT -p tcp -destinație-port 22 -m iprange -src-range 10.0.0.5-10.0.0.10 -j ACCEPT

Pentru constrângeri, se utilizează un modul connlimit. Pentru a permite numai 3 conexiuni SSH pe client:

# iptables -A INPUT -p tcp -syn -dport 22 -m connlimit -connlimit-de mai sus 3 -j REJECT

Setați numărul de solicitări HTTP la 20:

# iptables -p tcp -syn -dport 80 -m connlimit -connlimit-de mai sus 20 -connlimit -mask 24 -j DROP

-connlimit-above 3: indică faptul că regula este valabilă numai dacă numărul de conexiuni depășește 3;

-connlimit-mask 24: Specifică masca de rețea.







Articole similare

Trimiteți-le prietenilor: