The*death Posted September 9, 2014 Posted September 9, 2014 (edited) Cum sa configurezi IPTABLES pentru cele mai folosite serviciTutorial pentru IPTABLES in care inveti cum sa configurezi firewall-ul linux pentru WWW, SSH, DNS, Acces la internet, NAT, Port Forwarding, Static NATPermite accesul DNS in firewallSigur 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.Code:1 #---------------------------------------------------------------2 # Permiteti interogari DNS outbound de la FIREWALL si raspunsurile catre acesta3 #4 # - Interfata eth0 este interfata catre internet5 #---------------------------------------------------------------6 iptables -A OUTPUT -p udp -o eth0 --dport 53 --sport 1024:65535 -j ACCEPTiptables -A INPUT -p udp -i eth0 –sport 53 –dport 1024:65535 -j ACCEPTPermite accesul WWW si SSH catre masina LinuxPachetele 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.Code:1 #---------------------------------------------------------------2 # Permite conexiunile deja stabilite (established)3 # - Interfata eth0 este interfata conectata la internet4 #---------------------------------------------------------------5 iptables -A OUTPUT -o eth0 -m state --state ESTABLISHED,RELATED \6 -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 ACCEPTiptables -A INPUT -p tcp -i eth0 –dport 80 –sport 1024:65535 \-m state –state NEW -j ACCEPTPermiteti Firewall-ului sa acceseze Internet-ulAcest 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.Code:1 #---------------------------------------------------------------2 # Permite conexiuni pe portul 80 (www) si 443 (https) de la firewall3 #---------------------------------------------------------------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 tcpPermite unei retele private sa acceseze Firewall-ulIn 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.Code:1 #---------------------------------------------------------------2 # Permite traficul din ambele directii dintre firewall si reteaua privata3 # - Interfata eth1 este conectata la reteaua privata4 #---------------------------------------------------------------5 iptables -A INPUT -j ACCEPT -p all -s 192.168.1.0/24 -i eth16 iptables -A OUTPUT -j ACCEPT -p all -d 192.168.1.0/24 -o eth1Mascaradare (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.Code:1 #---------------------------------------------------------------2 # Incarca modulul NAT3 #---------------------------------------------------------------4 modprobe iptable_natActivarea IP forward se efectueaza aplicand in fisierul /proc/sys/net/ipv4/ip_forward valoarea 1.Code:1 #---------------------------------------------------------------2 # Activeaza rutarea pachetelor prin modificarea fisierului ip_forward din /proc3 #---------------------------------------------------------------4 echo 1 script_blocat; /proc/sys/net/ipv4/ip_forwardO 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.Code:1 #---------------------------------------------------------------2 # Permite mascaradarea3 # - Interfata eth0 este catre internet4 # - Interfata eth1 este catre reteaua privata5 #---------------------------------------------------------------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 ACCEPTiptables -A FORWARD -t filter -i eth0 -m state \–state ESTABLISHED,RELATED -j ACCEPTPort ForwardingDaca 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 mani[CENSORED]t 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.Code:1 #---------------------------------------------------------------2 # Incarca modulul NAT3 #---------------------------------------------------------------modprobe iptable_nat#————————————————————–#Definirea interfetei externe si al IP-ului externexternal_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 ACCEPTiptables -A FORWARD -t filter -o eth0 -m state \–state NEW,ESTABLISHED,RELATED -j ACCEPTiptables -A FORWARD -t filter -i eth0 -m state \–state ESTABLISHED,RELATED -j ACCEPTStatic 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 mascaradareCode:1 #---------------------------------------------------------------2 # Incarca modulul NAT3 #---------------------------------------------------------------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 susiptables -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 facutDNATiptables -A FORWARD -t filter -o eth0 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT Edited September 12, 2014 by Javed TOPIC CLOSED
Recommended Posts