CONFIGURAREA LEGĂTURII DE REȚEA SUB GNU-LINUX ȘI NOȚIUNI BAZICE DE SECURITATE  –       NETFILTER/IPTABLES

 

 

NOTĂ: Tutorialul este pentru nivel începător/mediu .
Nu am să încep să descriu cum a fost dezvoltat sistemul de operare,nici să explic filozifia opensource,și nici nu am să ating subiectul licențelor . Bănuiesc că lucrul acesta deja îl știți toți cei care ați făcut trecerea de la Microsoft la GNU-Linux. De aici, am să scriu pe scurt,din comoditate ( nu ignoranța) -Linux. Acesta este cum am spus,un mic tutorial,pentru utilizatorii începători. Conceptele se aplică pe orice distribuție.
M-am gândit să împart tutorialul mici capitole ,deci,să începem:

Capitolul 1: TCP/IP
Poate o să spuneți, că la ce va folosește să știți toate aceste detalii,dacă acum sistemele de operare vin cu un installer prietenos,sau poate va gândiți că dacă ați instalat Linux, sunteți protejați…,etc. Ei bine,nu este chiar așa..dar o să ajungem și la subiectul acesta.
Am ales să scriu puțin despre protocoalele de rețea,deoarece vom avea nevoie de câteva noțiuni pentru a configura un firewall, dar și pentru a înțelege mai bine ce se întâmplă dincolo de ” click ” . Pentru a putea comunică ,calculatoarele folosesc niște reguli de comunicație- Protocoale. Comunicația între calculatoare este similară cu cea umană, trebuie să avem un “sender “ și un “ receiver” ,sau mai bine spus sursă și destinație. Sper să mă fac înțeleasă și să nu va plictisesc.Totuși, dacă reușesc asta,îmi cer scuze de pe acum.
TCP/IP reprezintă setul de protocoale ( se mai numește și stiva tcp/ip ) pe care se bazează Internetul. Este împărțit pe patru niveluri sau straturi . Modelul OSI ( nu-l descriu aici ,căci nu facem ccna,este împărțit pe șapte straturi )
NIVELAPLICATIE
NIVEL TRANSPORT
NIVEL REȚEA
NIVEL LEGĂTURĂ DE DATE ȘI FIZIC

Putem să ne gândim la IP ,că la un plic în care se trimite un mesaj. Cred că este cel mai bun exemplu. Când trimitem o scrisoare avem un destinatar, cu numele și adresă să, și o adresă a celui care o trimite.Cam așa funcționează și pachețele ip ..cu încă câteva informații pe lângă . Avem un header în interiorul unui pachet(în general TCP) cu adresele sursă și destinație,checksum și alte informații. Foarte utile pentru a află mai multe sunt RFC-urile , ex RFC791 .
Adrese IP
În Internet fiecare calculator are asignata o adresă unică IP. Este formată din patru numere de la 0 la 255 separate prin trei puncte. Ex 209.127.112.153. Este formată din 4 bytes (32 biți în total )

O adresă IP este format din 2 părți:
1)Network Address (adresă rețelei sau adresă firului)
2)Host Address (adresă hostului din rețea). Deci biți componenți ai unei adrese IP se împart
în biți de rețea și biți de host.
Toate hosturile din aceiași rețea trebuie să aibă aceiași Network Address. Un concept foarte important,fără de care ip nu există este și Network Mask .Scopul acesteia este de a
stabili care biți din IP sunt biți de rețea și care sunt de host. Adresă IP nu există fără masca, întotdeauna se configurează doar împreună.
EX:
255.0.0.0 sau /8
Dacă transformăm această masca în bază 2 observăm că primii 8 biți sunt 1. Rezultă că primii 8 biți din adresă IP sunt biți de network, iar ultimii 24 de host.
Pe internet se găsesc foarte multe materiale ce explică binișor , eu am învățat de la un instructor ccna, într-un mod mult mai simplu..cine vrea să știe mai multe mă poate întreba mai sunt cărți , o carte foarte utilă este Network Administration Comptia + ,explică foarte clar conceptele ,trebuie doar să citiți .
Clasificarea adreselor ip
În funcție de primii biți din primul octet există 5 clase de IP-uri (definite de IANA în rfc1700)

Imagini pentru CLASIFICAREA ADRESELOR IP

PORTURI
Acum că știm câte ceva despre Ip, ne oprim la un alt concept deosebit de important -porturile. Când informația trece de la un calculator la altul , se transmite de la o aplicație server către o aplicație client. Fiecare program (serviciu ) server are un port predeterminat pe care “asculta” ,așteptând cererile clienților. ( programul client) .Clientul este construit că să trimită cereri către portul predefinit al serverului. IANA ( Internet Asigned Numbers Authority ) a rezervat anumite porturi la care se cuplează anumite servicii și clienții lor. Câteva exemple :

PORT          SERVICIU

21                    FTP

22                    SSH

25                    Mail (SMTP)

80                    HTTP(WWW)

O lista completa se poate gasi in directorul /etc/services

[root@sandybell]─[/home/zuzu] └──#more /etc/services

tcpmux

1/tcp

# TCP port service multiplexer

echo

7/tcp

echo

7/udp

discard

9/tcp

sink null

discard

9/udp

sink null

systat

11/tcp

users

daytime

13/tcp

daytime

13/udp

netstat

15/tcp

qotd

17/tcp

quote

msp

18/tcp

# message send protocol

msp

18/udp

chargen

19/tcp

ttytst source

chargen

19/udp

ttytst source

ftp-data

20/tcp

ftp

21/tcp

fsp

21/udp

fspd

ssh

22/tcp

# SSH Remote Login Protocol

ssh

22/udp

telnet

23/tcp

–More–(

Porturile de la 0 la 1023 sunt rezervate. Doar root (UID 0)se poate conecta la aceste porturi ,cunoscute că și porturi privilegiate. Pentru porturile superioare de la 1024 la 65.535 se poate conecta oricine inclusiv root. Mai multe informații se pot găsi la RFC 791.
Notă : RFC ( Request for comments ) , IANA,IETF sunt că un “must-read” în domeniul nostru.

TCP (TRANSMITION CONTROL PROTOCOL )
TCP reprezintă mai mult de 90% din media traficului LAN . Crează o conexiune între client și server printr-o metodă de stabilire a conexiunii prin trei căi :
1. Clientul ( Ex.un client FTP ) trimite un pachet TCP/IP către server pe portul 21 . În headerul acestui pachet care cere să se conecteze la serverul FTP , se activează ( 1) bitul SYN și ceilalți biți pe 0 ( ACK,RST,UR).Pachetul conține de asemenea un număr aleator cu inițierea secvenței .
Acest tip de conexiune se numește three way handshake .

Imagini pentru 3 way handshake

Când serverul ascultă cererile , vede pachetul cu bitul SYN activat, activează bitul ACK
( acum atât SYN cât și ACK au valoarea 1 ) ,incrementează numărul de secvența și trimite pachetul că răspuns.
Când clientul primește pachetul SYN-ACK ,incrementează numărul de secvența și șterge ( pune bitul pe 0 ) SYN ,lăsând doar ACK cu valoarea 1.
După ce serverul primește pachetul ACK ,abandonează coadă de așteptare și conexiunea se stabiliste. Sunt multe explicații referitoare la acest tip de conexiune, nu știu dacă a mea este cea mai clară. Imaginea de mai sus ( luată de pe google) este destul de explicită. Cei care sunt interesați ,pot caută cursuri cccna cu instructori autorizați, sau pot găsi chiar curriculă de la cisco pe net . Oricum, rețineți această schema ,este de maximă importantă pentru a înțelege cum funcționează stabilirea conexiunilor.
De ce am scris despre asta dacă tutorialul până la urmă se vrea a fi unul despre firewall pentru începători? Pentru caa este necesar să înțelegem cum un firewall face distincția între conexiunile noi și cele stabilite.

UDP ( UȘER DATAGRAM PROTOCOL )
Este un protocol neorientat către conexiuni. Se folosește când integritatea datelor nu este importantă. În timp ce TCP folosește o serie de reguli stricte pentru a asigură transmisia datelor intacte ,asamblate în ordinea corectă și fără erori ,UDP face exact contrariul.
UDP/IP ( găsim scris în mod curent doar UDP) , se folosește pentru pachețele mici și fără semnificație . Pachețele pot să ajungă sau nu la destinația lor. Se folosește pentru interogări DNS ,unde toate informația încape într-un singur pachet. Dacă pachetul nu ajunge ,DNS întreba din nou până acesta ajunge la destinație.
ICMP (INTERNET CONTROL MESSAGE PROTOCOL )
“ Pachetul Ping” . Nu folosește porturi ci comunică cu placă Ethernet ,dar folosește “types” pentru identificare.
ICMP type 0 este un pachet de cereri eco.Se folosește pentru a testa conexiunea rețelei între două puncte. Se completează cu tipul 8 că răspuns a lui eco.
Foarte multe persoane,paranoice în ceea ce privește securitatea blochează ICMP(și eu am făcut-o ), totuși nu este o idee chiar foarte bună .De exemplu Linux folosește ICMP pentru a descoperi MTU( Unitate maximă de transmisie .O face trimițând pachete mari (1500biti) marcate cu bitul DNF( Do not fragment) . Dacă în drumul sau un router ar trebui să defragmenteze un pachet , nu ar putea ,și l-ar trimite înapoi .Atunci Linux ar trimite alt pachet mai mic și ar continuă până când pachetul ar trece. De asemenea nu este o idee bună să blocăm pachețele de tipul 3 care ne indică că un host este unreacheable(eu am făcut-o ,o să va arăt și cum dacă totuși doriți asta) pentru că comunicația ar deveni foarte lentă.
Mai sunt multe de scris despre icmp dar altădată…
2.CONFIGURAREA REȚELEI SUB DEBIAN ( și derivate) -COMENZI DE BAZĂ

Teoretic ,în zilele noastre totul este funcțional după ce instalăm sistemul de operare ,cel puțin pentru utilizatorii caznici,însă nu este rău dacă învățam câteva comenzi de bază pentru configurarea/depănarea rețelei .
Principalele comenzi sunt :
ifconfig, ( se folosește pentru a configura,iniția,opri dispozitivul interfatei de rețea dar și pentru a află ip-ul și alte date ale rețelei folosind consolă.
Ex: └──╼ #ifconfig
eth0 Link encap:Ethernet HWaddr 54:be:f7:86:23:56
UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:19

Eu folosesc wifi ( în cazul meu este ifconfig -a ( indică toate interfatele de rețea) dar și iwconfig .
Atât pentru ifconfig cât și pt orice comandă din Linux există man( ex : man ifconfig ) ,un utilitar de
nădejde, deoarece nu toți știm toate comenzile sau opțiunile comenzilor pe deasupra .

Exemplu ifconfig penntru a configura manual o interfata( ip +netmask ,acum intelegeti de ce am facut mica introducere despre ip )

ifconfig eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255

    Aceasta linie doar ne configureaza interfata de retea insa nu ne da acces la internet. Trebuie sa avem o legatura,poarta de acces catre internet ,un router pe scurt. Aici ne vine in ajutor comanda route

route este un utilitar care ne permite sa specificam un default gateway ( o poarta predeterminata) pentru internet. Folosind datele de mai sus ( ip ) , putem configura astfel :

route add default gw 192.168.0.1

Trebuie avuta grija la scrierea corecta a comenzilor si ordinea corecta pentru a functiona. Pentru a verifica daca totul este corect putem arunca o privire in tabela de routare ,sau chiar si un ping catre o adresa din Internet.

O putem face folosind comanda route -n

route -n

Kernel IP routing table

Destination

Gateway

Genmask

Flags Metric Ref Use Iface

0.0.0.0

192.168.0.1

0.0.0.0

UG

1024

0

0 wlan1

192.168.0.0

0.0.0.0

255.255.255.0

U

0

0

0 wlan1

Dupa cum se poate vedea routerul are ip-ul (pe interfata interna) 192.168.0.1 ,si teoretic ar trebui ca orcine are configurat corect placa de retea si routerul sa aibe acces la internet .

Comanda ping
Verifică dacă dispozitivul este “up” trimițând o cerere de tip eco ICMP dispozitivului .
Man ping 🙂 acolo aveți toate opțiunile și explicațiile necesare pentru a înțelege cât mai bine această comandă .
Comandă traceroute
Numele este destul de sugestiv . Se folosește pentru a vedea ce rută folosesc pachețele pentru a ajunge la destinație, sau unde se opresc în cazul în care nu au ajuns.
Comandă netstat
Obținem informații despre cum sunt rutate pachețele ,conexiuni deschise , porturi deschise și gata pentru a acceptă conexiuni. Vine însoțită de opțiuni : netstat -avn , un exemplu .
Acestea sunt comenzile pe care orice utilizator de linux ar trebui să le știe.. De asemenea ne mai poate fi util să reinitiem manul placa de rețea :

 /etc/init.d/networking restart 

3. FIREWALL IP ,FILTRARE PACHETE,IPTABLES

                   Nu o să scriu aici despre ipmasquerade(( deghizare deși se face cu iptables și NAT,pentru că am de gând să o fac în următorul tutorial ( linux routers ) .
🙂 Bun…să începem!
Din ce știu eu,avem două tipuri de firewall ( nu stau să dau definiția unui firewall ,nu cred că este necesar în zilele noastre ) .
Firewall aplicație proxy
Firewall la nivel de rețea pe baza filtrării pachetelor ( ceea ce vom și folosi)
Firewall proxy se împarte în :Standard- un client se conectează a un port special și este redirecționat pentru a ieși prin alt port.
Transparent -clientul nu folosește un port special ci un software .
Deși acum pe Linux găsim programe firewall instalate( necesită doar mici configurări) ele folosesc în background iptables,așa că personal prefer să interacționez cu acest utilitar.Da,iptables este doar un utilitar cu ajutorul căruia aplicăm niște reguli pentru filtrarea pachetelor. Corect ar fi să spune netfilter/iptables .
Netfilter vine că modul al kernelului Linux și ne permite să interceptăm/manipulăm pachețele de rețea.
Când folosim un firewall la nivel de rețea prin filtrare de pachete, putem da sau nega accesul din și în interiorul hostului bazându-ne pe diferite variabile că de exemplu :
-adresă sursă, protocol, număr de port,conținut.
Un firewall bine configurat ( opțiuni avansate) ne poate ajuta să învingem atacurile de tip spoofing, Dos, și chiar să transformăm rețeaua într-o rețea invizibilă pentru exterior.
Nucleul Linux definește trei tabele de reguli :
1.filter -folosită pentru filtrarea de pachete —> cu lanțurile INPUT,OUTPUT, FORWARD
2.nat -pentru sistemul NAT → cu lanțurile PREROUTING,OUTPUT,POSTROUTING
3.mangle – utilizată pentru verificarea specializată a pachetelor → INPUT,OUTPUT,FORWARD
PREROUTING,POSTROUTING
* Când un pachet intră în sistem trece prin interfață de rețea,atunci,nucleul decide dacă pachetul este destinat mașinii locale -Lanțul INPUT sau altui calculator -lanțul FORWARD. Procesul este asemănător și la ieșirea unui pachet, doar că se folosește lanțul OUTPUT.
Prin lanțul PREROUTING trec pachețele înainte că rută lor către destinație să fie stabilită și prin lanțul POSTROUTING după ce au fost rutate , dar înainte de a ieși din sistem.

               Fiecare lanț conține niște reguli și îi sunt aplicate niște acțiuni ( ACCEPT,DROP,REJECT ) . Dacă regulă specifică acțiunea ACCEPT ,pachetul nu mai este verificat ci este lăsat să treacă, dacă are DROP ,nu îi este permis să ajungă la destinație,iar dacă are REJECT ,nu se permite trecerea către destinație dar este trimis un pachet de eroare expeditorului.
Cam astea sunt câteva noțiuni minime despre cum funcționează un firewall pe Linux. Mulți cred că iptables este firewall linux,însă este greșit.Iptables este doar un program..cu care executăm niște comenzi pentru a manipulă lanțurile și regulile din firewall…după părerea mea de nespecialist ar fi că o interfața pentru netfilter.

Iptables are următoarea sintaxa :

iptables comandă regulă [ opțiuni ]

Comenzi :

A  lanț regulă (Adaugă una sau mai multe reguli la sfârșitul lanțului specificat )
I  lanț (număr_regulă / regulă [opțiuni] – înserează una sau mai multe reguli în lanț la începutul acestuia
D lanț [număr_regulă / regulă [opțiuni] -șterge una sau mai multe reguli -L -afișează regulile conținute de un anumit/sau toate lanțurile
F ( flush) șterge toate regulile
Mai sunt destule comenzi (see netfilter.org 🙂 ,mân iptables ) dar dacă le voi scrie pe toate voi face un tutorial cât Zidul Chinezesc.

Specificarea regulilor :

-s adresă {masca} specifică adresă sursă a pachetului ( în general ip ,dar pot fi și nume de rețea sau mașină)
-d specifică adresă destinație
-p (protocol) specifică protocolul de încapsulare al pachetului (icmp,udp,tcp,sau all ) . -i / -o -interfață de rețea prin care iese/intră pachetul
-j acțiune -specifică acțiunea ce va fi îndeplinită când pachetul corespunde unei regu
Opțiuni pentru pachete tcp,udp,icmp
–sport ,–dport (port ) -indică portul sursă al pachetului ( source port) și portul destinație al pachetului (destination port)
–tcp-flags –sy n
–icmp-type (tip) specifică tipul de mesaj icmp
Acestea sunt niște noțiuni teoretice de bază…nu știu totul pe deasupra,apelez la google când am ceva de făcut și nu știu,însă bază cam această este…cu mici +/- .
Iată și exemplu de firewall de bază pentru un utilizator caznic.

#!/bin/bash iptables -F

iptables -A OUTPUT -o loopback -j ACCEPT iptables -A INPUT -i loopback -j ACCEPT

#iptables -A INPUT -p tcp –dport 80 –syn -m limit –limit 5/s -j ACCEPT #iptables -A INPUT -p tcp –dport 80 –syn -j DROP

iptables -A INPUT -p icmp –icmp-type 8 -j REJECT –reject-with icmp-net-unreachable iptables -A OUTPUT -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

iptables -P INPUT DROP iptables -P OUTPUT DROP

După cum puteți vedea prima linie iptables -F ,ne indică ștergerea regulilor ,dăm accept interfeței loopback /(127.0.0.1/32 ) atât pe chainul INPUT cât și pe OUTPUT .
După cum vedeți în liniile de mai jos am încercat să folosesc teoria mai sus scrisă..dar le-am comentat deorece acum nu am nici un apache instalat pe sistem,dar puteți investiga ce face acea linie,deja v-am dat suficiențe indicii..
Predeterminat ,în sistemul Linux toate chainurile sunt pe ACCEPT. Acest lucru se poate
vedea prin comandă iptables -vnL . Vom obține un rezultat similar :

[root@sandybell]─[~]

└──#iptables -vnL

Chain INPUT (policy ACCEPT 387K packets, 496M bytes)

pkts bytes target

prot opt in

out

source

destination

670 122K ACCEPT

udp — *

* 0.0.0.0/0

0.0.0.0/0

multiport dports 5353

0 0 ACCEPT

tcp

— *

*

0.0.0.0/0

0.0.0.0/0

multiport dports 4000

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target

prot opt in

out

source

destination

Chain OUTPUT (policy ACCEPT 247K packets, 26M bytes)

pkts bytes target

prot opt in

out

source

destination

Dupa ce am scris micutul script pt firewall,ii dam permisiuni (chmod +x (sau 777)nume_firewall si il executam . Vom vedea cum deja lucreaza,totusi eficacitatea se poate testa cu nmap,wireshark,etc.

┌─[]─[root@sandybell]─[~]

└──#chmod +x fw

┌─[root@sandybell]─[~]

└──#./fw

#iptables -vnL

Chain INPUT (policy DROP 5 packets, 809 bytes)

pkts bytes target

prot opt in

out

source

destination

0

0 ACCEPT

all

loopback *

0.0.0.0/0

0.0.0.0/0

0

0 REJECT

icmp — *

*

0.0.0.0/0

0.0.0.0/0

icmptype 8 reject-with

icmp-net-unreachable

475

120K ACCEPT

all

*

*

0.0.0.0/0

0.0.0.0/0

state

RELATED,ESTABLISHED

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target

prot opt in

out

source

destination

Chain OUTPUT (policy DROP 0 packets, 0 bytes)

pkts bytes target

prot opt in

out

source

destination

0

0 ACCEPT

all

*

loopback 0.0.0.0/0

0.0.0.0/0

523 72872 ACCEPT

all

*

*

0.0.0.0/0

0.0.0.0/0

state

NEW,RELATED,ESTABLISHED

!! Ceva important lasat pe urma ,in mod voit…ati observat ca am folosit NEW,ESTABLISHED,RELATED. Despre pachetele acestea nu am vorbit inainte pentru ca am asteptat sa arat scriptul si apoi sa explic . Aceste reguli permit ca sa iasa din sistem ( am folosit chainul output) pachetele care sunt noi-solicitate, stabilite si relationate,si lasa sa intre (pe INPUT CHAIN ) conexiunile stabilite si relationate.

Este foarte simplu de inteles conceptul ( connection tracking) si il gasiti foarte bine detaliat la netfilter.org .

Pentru ca sunt presata de timp,in sensul ca nu am timp mai deloc,decat noaptea imi raman cateva momente ,am sa mai las un script ,putin mai avansat ( vom folosi si variabile ).

#! /bin/bash

IPT=/sbin/iptables

PRIVATE_IPCLASSES=”10.0.0.0/8 172.16.0.0/12 169.254.0.0/16 192.0.2.0/24 192.88.99.0/24 192.168.0.0/16 201.63.40.0/24 66.249.66.0/24″ PUBLIC_NIC=eth1

PUBLIC_IP=aici trec ip-ul de interconectare PUBLIC_IP_CLASS=clasa de ip-uri publice alocata /mask

PRIVATE_NIC=eth0

PRIVATE_IP=192.168.1.1

PRIVATE_CLASS=192.168.1.0/24

$IPT -t filter -P INPUT ACCEPT

$IPT -t filter -P OUTPUT ACCEPT

$IPT -t filter -P FORWARD ACCEPT

/bin/echo -n “Firewall start…

$IPT -t filter -F

$IPT -t nat -F

$IPT -t mangle -F

#INPUT CHAIN

#\

##########################################################################

#

#/

$IPT -t filter -A INPUT -p tcp ! –syn -m state –state NEW -j

DROP

$IPT -t filter -A INPUT -p all -m state –state INVALID -j DROP

#Clase private ce nu au ce cauta via Internet. for clasa in $PRIVATE_IPCLASSES; do

$IPT -t filter -I INPUT -s $clasa -i $PUBLIC_NIC -j DROP $IPT -t filter -I FORWARD -s $clasa -i

$PUBLIC_NIC -j DROP

done

#Conexiuni input acceptate; ordinea conteaza!!!! #SSH pentru Admin via PROVIDER ip

$IPT -t filter -A INPUT -i $PUBLIC_NIC -d $PUBLIC_IP -m state –state NEW -p tcp –dport 22 -j LOG –log-prefix “ALL-SSH:”

$IPT -t filter -A INPUT -i $PUBLIC_NIC -s ipulme1 -d $PUBLIC_IP -m state –state NEW -p tcp –dport 22 -j ACCEPT

$IPT -t filter -A INPUT -i $PUBLIC_NIC -s ipulmeu2 -d $PUBLIC_IP -m state –state NEW -p tcp –dport 22 -j ACCEPT

$IPT -t filter -A INPUT -i $PUBLIC_NIC -s ipulmeu3 -d $PUBLIC_IP -m state –state NEW -p tcp –dport 22 -j ACCEPT

#access la alte chestii

#doar smtp pentru toti via PROVIDER ip

$IPT -t filter -A INPUT -i $PUBLIC_NIC -d $PUBLIC_IP -m state –state NEW -p tcp –dport 25 -j ACCEPT

$IPT -t filter -A INPUT -i $PUBLIC_NIC -d $PUBLIC_IP_CLASS -m state –state NEW -p tcp –dport 25 -j ACCEPT

#$IPT -t filter -A INPUT -i $PUBLIC_NIC -d $PUBLIC_IP -m state –state NEW -p tcp –dport 80 -j ACCEPT

#$IPT -t filter -A INPUT -i $PUBLIC_NIC -d $PUBLIC_IP -m state –state NEW -p tcp –dport 443 -j ACCEPT

#$IPT -t filter -A INPUT -i $PUBLIC_NIC -d $PUBLIC_IP -m state –state NEW -p tcp –dport 21 -j ACCEPT

#$IPT -t filter -A INPUT -i $PUBLIC_NIC -d $PUBLIC_IP -m state –state NEW -p udp –dport 21 -j ACCEPT

#$IPT -t filter -A INPUT -i $PUBLIC_NIC -d $PUBLIC_IP -m state –state NEW -p tcp –dport 110 -j ACCEPT

#$IPT -t filter -A INPUT -i $PUBLIC_NIC -d $PUBLIC_IP -m state –state NEW -p tcp –dport 143 -j ACCEPT

#via lan

$IPT -t filter -A INPUT -i $PRIVATE_NIC -d $PRIVATE_IP -s $PRIVATE_CLASS -m state –state NEW -j ACCEPT

$IPT -t filter -A INPUT -i $PRIVATE_NIC -d $PUBLIC_IP -s $PRIVATE_CLASS -m state –state NEW -j ACCEPT

$IPT -t filter -A INPUT -i $PRIVATE_NIC -d $PUBLIC_IP_CLASS -s $PRIVATE_CLASS -m state –state NEW -j ACCEPT

#———————–>

$IPT -t filter -I INPUT -i lo -j ACCEPT

$IPT -t filter -I INPUT -p icmp -i $PUBLIC_NIC -s any/0 -d $PUBLIC_IP -m limit –limit 5/s -j ACCEPT

$IPT -t filter -I INPUT -p icmp -i $PUBLIC_NIC -s any/0 -d $PUBLIC_IP_CLASS -m limit –limit 5/s -j ACCEPT

$IPT -t filter -I INPUT -p icmp -i $PRIVATE_NIC -s $PRIVATE_CLASS -m limit –limit 5/s -j ACCEPT

$IPT -t filter -A INPUT -p tcp -i $PUBLIC_NIC -m state –state NEW

-j DROP

$IPT -t filter -A INPUT -p tcp -i $PUBLIC_NIC -m state –state

ESTABLISHED,RELATED -j ACCEPT

$IPT -t filter -A INPUT -p udp -i $PUBLIC_NIC -m state –state NEW

-j DROP

$IPT -t filter -A INPUT -p udp -i $PUBLIC_NIC -m state –state

ESTABLISHED,RELATED -j ACCEPT

$IPT -t filter -A INPUT -p tcp -i $PRIVATE_NIC -m state –state NEW

-j DROP

$IPT -t filter -A INPUT -p tcp -i $PRIVATE_NIC -m state –state

ESTABLISHED,RELATED -j ACCEPT

$IPT -t filter -A INPUT -p udp -i $PRIVATE_NIC -m state –state NEW

-j DROP

$IPT -t filter -A INPUT -p udp -i $PRIVATE_NIC -m state –state

ESTABLISHED,RELATED -j ACCEPT

$IPT -t filter -A INPUT -j DROP

#OUTPUT CHAIN

#\

#########################################################################

#

#/

$IPT -t filter -A OUTPUT -p tcp ! –syn -m state

–state NEW -j DROP

$IPT -t filter -A OUTPUT -p all -m state –state

INVALID -j DROP

$IPT -t filter -A OUTPUT -o $PRIVATE_NIC -d ! $PRIVATE_CLASS -j DROP

$IPT -t filter -A OUTPUT -s

$PUBLIC_IP -j ACCEPT

$IPT -t filter -A OUTPUT -s

$PUBLIC_IP_CLASS -j

ACCEPT

$IPT -t

filter -A

OUTPUT -p

all

-m state –state NEW -j ACCEPT

$IPT

-t

filter

-A

OUTPUT

-p

all

-m state –state ESTABLISHED,RELATED -j ACCEPT

$IPT

-t

filter

-A

OUTPUT

-j

DROP

#FORWARD CHAIN

#\

#########################################################################

#

#/

#Restrictionam SMTP si DNS, vor folosi doar relay local

$IPT -t filter -A FORWARD -i $PRIVATE_NIC -s $PRIVATE_CLASS -p tcp –dport 25 -j DROP

$IPT -t filter -A FORWARD -i $PRIVATE_NIC -s $PRIVATE_CLASS -p tcp –dport 53 -j DROP

$IPT -t filter -A FORWARD -p icmp -i $PRIVATE_NIC -s $PRIVATE_CLASS -m limit –limit 5/s -j ACCEPT

$IPT -t filter -A FORWARD -i $PRIVATE_NIC -s $PRIVATE_CLASS -j ACCEPT

$IPT -t filter -A FORWARD -p icmp -i $PUBLIC_NIC -d $PRIVATE_CLASS -m limit –limit 5/s -j ACCEPT

$IPT -t filter -A FORWARD -i $PUBLIC_NIC -d $PRIVATE_CLASS -j ACCEPT $IPT -t filter -A FORWARD -j DROP

#NAT + mangle

$IPT -t nat -I POSTROUTING -s $PRIVATE_CLASS -o $PUBLIC_NIC -j SNAT –to $PUBLIC_IP

$IPT -t mangle -I PREROUTING -i $PUBLIC_NIC -j TTL –ttl-set=64

#exemplu de DNAT

$IPT -t nat -I PREROUTING -i $PUBLIC_NIC -s unamltip -d $PUBLIC_IP -p tcp –dport 3389 -j DNAT –to 192.168.1.211:3389

echo “1”> /proc/sys/net/ipv4/ip_forward echo “DONE”

#sleep 120

#iptables -F

                 Îmi pare rău,dar explicațiile vor veni data viitoare( când o să scriu despre routere linux,după cum vedeți mai sus ,avem mai multe plăci de rețea definite că eth0 și eth1,avem ip-uri interne și externe pentru plăcile respective,folosim și nat (network adress translation) ,deci este nevoie să o luăm pas cu pas.Cine are nelămuriri mă poate contacta.. se găsesc scripturi asemănătoare pe Internet , se găsesc foarte multe tutoriale,mult mai bune că ale mele..Dacă v-a plăcut,va mulțumesc,dacă nu, va mulțumesc că l-ați citit…sau că ați avut răbdare până la capăt.

Leave a Comment