Tutorial pentru IPTABLES in care inveti cum sa configurezi firewall-ul linux pentru WWW, SSH, DNS, Acces la internet, NAT, Port Forwarding, Static NAT

Permite accesul DNS in firewall

Sigur veti dori sa faceti interogări DNS catre Internet si acestea trebuie permise in firewall . Următoarele reguli se aplica nu numai pentru firewall-uri care acţionează în calitate de clienţi DNS, ci şi pentru firewall-uri care lucrează într-un DNS server cache sau normal.

#---------------------------------------------------------------
# Permiteti interogari DNS outbound de la FIREWALL si raspunsurile catre acesta
#
# - Interfata eth0 este interfata catre internet
#---------------------------------------------------------------
iptables -A OUTPUT -p udp -o eth0 --dport 53 --sport 1024:65535 -j ACCEPT

iptables -A INPUT -p udp -i eth0 –sport 53 –dport 1024:65535 -j ACCEPT

Permite accesul WWW si SSH catre masina Linux

Pachetele Inbound destinate porturilor 80 si 22 sunt permise. Nu este necesar sa specificam aceste porturi intr-o regula Outbound deoarece toate aceste pachete pentru conexiunile deja stabilite sut permise.
#---------------------------------------------------------------
# Permite conexiunile deja stabilite (established)
# - Interfata eth0 este interfata conectata la internet
#---------------------------------------------------------------
iptables -A OUTPUT -o eth0 -m state --state ESTABLISHED,RELATED \
-j ACCEPT

#—————————————————————
# Permite conexiuni pe portul 80 (www) si 22 (SSH) catre firewall
#—————————————————————
iptables -A INPUT -p tcp -i eth0 –dport 22 –sport 1024:65535 \
-m state –state NEW -j ACCEPT
iptables -A INPUT -p tcp -i eth0 –dport 80 –sport 1024:65535 \
-m state –state NEW -j ACCEPT

Permiteti Firewall-ului sa acceseze Internet-ul

Acest script iptables  permite unui utilizator de pe Firewall sa foloseasca un Web Browser pentru a naviga pe Internet. Traficul HTTP foloseste portul TCP 80, si cel HTTPS foloseste portul 443.
#---------------------------------------------------------------
# Permite conexiuni pe portul 80 (www) si 443 (https) de la firewall
#---------------------------------------------------------------

iptables -A OUTPUT -j ACCEPT -m state \
–state NEW,ESTABLISHED,RELATED -o eth0 -p tcp \
-m multiport –dports 80,443 –sport 1024:65535

#—————————————————————
# Permite conexiunile deja stabilite
# – Interfata eth0 este interfata catre internet
#—————————————————————

iptables -A INPUT -j ACCEPT -m state –state ESTABLISHED,RELATED \
-i eth0 -p tcp

Permite unei retele private sa acceseze Firewall-ul

In acest exemplu, interfata eth1 este direct conectata la o retea privata folosind adrese IP din reteaua 192.168.1.0/24. Tot traficul dintre aceasta retea si firewallul va fi considerat de incredere.
#---------------------------------------------------------------
# Permite traficul din ambele directii dintre firewall si reteaua privata
# - Interfata eth1 este conectata la reteaua privata
#---------------------------------------------------------------
iptables -A INPUT -j ACCEPT -p all -s 192.168.1.0/24 -i eth1
iptables -A OUTPUT -j ACCEPT -p all -d 192.168.1.0/24 -o eth1

Mascaradare (Many to One NAT)

Mascaradarea este un sinonim pentru ce numesc unii many to one NAT.

Cu alte cuvinte,traficul de la mai multe echipamente din una sau mai multe retele private va aparea ca si cum provine de la o singura adresa IP.

Nota: Adresa IP de mascaradare este implicit adresa IP a interfetei principale de pe masina firewall si are ca avantaj ca nu trebuie specificata adresa IP pentru NAT.

Se poate configura NAT catre un alias IP, folosind declaratia POSTROUTING si nu MASQUERADE(Vedeti mai jos exemple  in sectiunea NAT static).

Important: IPTABLES necesita ca modulul iptables_nat sa fie incarcat cu comanda modprobe, ca functia de mascaradare sa functioneze. Mascaradarea depinde si de configurarea sistemului de operare LINUX  sa suporte rutarea dintre interfata catre Internet si reteaua privata.
#---------------------------------------------------------------
# Incarca modulul NAT
#---------------------------------------------------------------
modprobe iptable_nat

Activarea IP forward se efectueaza aplicand in fisierul /proc/sys/net/ipv4/ip_forward valoarea 1.
#---------------------------------------------------------------
# Activeaza rutarea pachetelor prin modificarea fisierului ip_forward din /proc
#---------------------------------------------------------------
echo 1 > /proc/sys/net/ipv4/ip_forward

O dată ce mascaradarea a fost realizata folosind chain-ul POSTROUTING din tabela nat, va trebui să configuraţi iptables pentru a permite pachetelor să circule între cele două interfeţe. Pentru a face aceasta, utilizaţi chain-ul FORWARD din tabelul de filtrare.

Pachetele ce tin de conexiuni NEW si ESTABLISHED vor fi permise sa iasa catre Internet, dar numai pachetele ce tin de conexiuni ESTABLISHED vor fi permise din Internet catre masina firewall.
#---------------------------------------------------------------
# Permite mascaradarea
# - Interfata eth0 este catre internet
# - Interfata eth1 este catre reteaua privata
#---------------------------------------------------------------

iptables -A POSTROUTING -t nat -o eth0 -s 192.168.1.0/24 -d 0/0 \
-j MASQUERADE

#—————————————————————
# Înainte de mascaradare, pachetele sunt rutate prin intermediul
# chain-ului FORWARD din tabela FILTER.
# Permise outbound: New, established si related
# Permise inbound : Established si related
#—————————————————————

iptables -A FORWARD -t filter -o eth0 -m state \
–state NEW,ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -t filter -i eth0 -m state \
–state ESTABLISHED,RELATED -j ACCEPT

Port Forwarding

Daca vreti sa publicati un server web pe un server dintr-o retea privata unde se foloseste NAT, atunci va trebui sa folositi port forwarding.

Port forwarding este manipulat de chain-ul PREROUTING al tabelei nat. Ca si in mascaradare, modulul iptables_nat trebuie sa fie incarcat si rutarea sa fie activata ca port forwarding sa functioneze.

In iptables trebuie permisa rutarea cu ajutorul chain-ului FORWARD; aceasta include toate conexiunile NEW inbound din Internet care se potrivesc cu portul pentru port forwarding plus toate pachetele care tin de conexiunea deja ESTABLISHED in ambele directii.
#---------------------------------------------------------------
# Incarca modulul NAT
#---------------------------------------------------------------

modprobe iptable_nat

#————————————————————–
#Definirea interfetei externe si al IP-ului extern
external_int=”eth0″
external_ip=”Treceti aici adresa IP externa”

#—————————————————————
# Activeaza rutarea pachetelor prin modificarea fisierului ip_forward din /proc
#—————————————————————
echo 1 > /proc/sys/net/ipv4/ip_forward

#—————————————————————
# Permite port forwarding pentru traficul destinat portului 80 de pe firewall
# sa fie redirectionat catre portul 8080 de pe serverul cu adresa IP 192.168.1.200
# – Interfata eth0 este catre internet
# – Interfata eth1 este catre reteaua interna
#————————————————————–

iptables -t nat -A PREROUTING -p tcp -i eth0 -d $external_ip \
–dport 80 –sport 1024:65535 -j DNAT –to 192.168.1.200:8080

#————————————————————–
# Dupa DNAT, pachetele sunt rutate prin chain-ul FORWARD al tabelei FILTER
#—————————————————————

iptables -A FORWARD -p tcp -i eth0 -o eth1 -d 192.168.1.200 \
–dport 8080 –sport 1024:65535 -m state –state NEW -j ACCEPT

iptables -A FORWARD -t filter -o eth0 -m state \
–state NEW,ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -t filter -i eth0 -m state \
–state ESTABLISHED,RELATED -j ACCEPT

Static NAT

În acest exemplu, tot traficul catre o anumită adresă IP publica, nu un port anume, este trimis la un singur server din reteaua privata.

Deoarece firewall-ul are mai mult de o adresă IP, nu pot recomanda MASQUERADE ci SNAT pentru a putea specifica adresa IP alias care va fi folosita pentru conexiunile initiate de alte servere din reteaua privata.

In acest exemplu:

  • Firewall-ul foloseste one to one NAT pentru ca serverul cu adresa IP 192.168.1.100 din reteaua interna sa apara pe Internet cu adresa IP publica 97.158.253.26.
  • Firewall-ul foloseste many to one NAT pentru reteaua 192.168.1.0 in care toate serverele apar pe Internet cu adresa IP publica 97.158.253.29. Acest lucru este diferit de mascaradare

#---------------------------------------------------------------
# Incarca modulul NAT
#---------------------------------------------------------------

modprobe iptable_nat

#—————————————————————
# Activeaza rutarea pachetelor prin modificarea fisierului ip_forward din /proc
#—————————————————————
echo 1 > /proc/sys/net/ipv4/ip_forward

#—————————————————————
# NAT pentru tot traficul:
#
# TO: FROM: MAPARE_CATRE_SERVERUL:
# 97.158.253.26 Anywhere 192.168.1.100 (1:1 NAT – Inbound)
# Anywhere 192.168.1.100 97.158.253.26 (1:1 NAT – Outbound)
# Anywhere 192.168.1.0/24 97.158.253.29 (FW IP)
#
# SNAT este folosit pentru a face NAT tuturor conexiunilor OUTBOUND initiate
# din reteaua privata pentru a parea ca provin de la adresa IP 97.158.253.29
#
# POSTROUTING:
# NAT adresei IP sursa. Folosit pentru a face NAT conexiunilor din reteaua interna
#
# PREROUTING:
# NATs adresei IP destinatie. Folosit pentru a face NAT conexiunilor din Internet catre reteaua interna
#
# – Interfata eth0 este catre Internet
# – Interfata eth1 este catre reteaua interna
#—————————————————————
#
# Declaratii PREROUTING pentru 1:1 NAT
# (Conexiuni care isi au originea din Internet)

iptables -t nat -A PREROUTING -d 97.158.253.26 -i eth0 \
-j DNAT –to-destination 192.168.1.100

# Declaratii POSTROUTING pentru 1:1 NAT
# (Conexiuni care isi au originea din reteaua interna)

iptables -t nat -A POSTROUTING -s 192.168.1.100 -o eth0 \
-j SNAT –to-source 97.158.253.26

# Declaratii POSTROUTING pentru Many:1 NAT
# (Conectiuni care isi au originea din intreaga retea interna)

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 \
-j SNAT -o eth0 –to-source 97.158.253.29

# Permite FORWARD pentru serverul configurat 1:1 NAT
# (Conexiuni care isi au originea din Internet)

iptables -A FORWARD -p tcp -i eth0 -o eth1 -d 192.168.1.100 \
-m multiport –dports 80,443,22 -m state –state NEW -j ACCEPT

# Permite forward la toate conexiunile pentru care s-a facut 1:1 NAT
# care isi au originea din Internet care au trecut de declaratie de forwarding NEW de mai sus

iptables -A FORWARD -t filter -i eth0 -m state –state ESTABLISHED,RELATED -j ACCEPT

# Permite FORWARD pentru toate conexiunile NEW si ESTABLISHED pentru care s-a facut SNAT
# si toate conexiunile ESTABLISHED pentru care s-a facutDNAT

iptables -A FORWARD -t filter -o eth0 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT

0 Comments

Leave a reply

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.

©2024 KLEO Template a premium and multipurpose theme from Seventh Queen

Log in with your credentials

Forgot your details?