Sunteți pe pagina 1din 14

CONFIGURAREA LEGATURII DE RETEA SUB GNU-LINUX SI NOTIUNI

BAZICE DE SECURITATE -NETFILTER/IPTABLES

NOTA: Tutorialul este pentru nivel incepator/mediu .


Nu am sa incep sa descriu cum a fost dezvoltat sistemul de operare,nici sa explic filozifia
opensource,si nici nu am sa ating subiectul licentelor . Banuiesc ca lucrul acesta deja il stiti toti cei
care ati facut trecerea de la Microsoft la GNU-Linux. De aici, am sa scriu pe scurt,din comoditate (
nu ignoranta) -Linux. Acesta este cum am spus,un mic tutorial,pentru utilizatorii incepatori.
Conceptele se aplica pe orice distributie.
M-am gandit sa impart tutorialul mici capitole ,deci,sa incepem:

Capitolul 1: TCP/IP
Poate o sa spuneti, ca la ce va foloseste sa stiti toate aceste detalii,daca acum sistemele de
operare vin cu un installer prietenos,sau poate va ganditi ca daca ati instalat Linux, sunteti
protejati...,etc. Ei bine,nu este chiar asa..dar o sa ajungem si la subiectul acesta.
Am ales sa scriu putin despre protocoalele de retea,deoarece vom avea nevoie de cateva
notiuni pentru a configura un firewall, dar si pentru a intelege mai bine ce se intampla dincolo de ''
click '' . Pentru a putea comunica ,calculatoarele folosesc niste reguli de comunicatieProtocoale. Comunicatia intre calculatoare este similara cu cea umana, trebuie sa avem un sender
si un receiver ,sau mai bine spus sursa si destinatie. Sper sa ma fac inteleasa si sa nu va
plictisesc.Totusi, daca reusesc asta,imi cer scuze de pe acum.
TCP/IP reprezinta setul de protocoale ( se mai numeste si stiva tcp/ip ) pe care se bazeaza
Internetul. Este impartit pe patru niveluri sau straturi . Modelul OSI ( nu-l descriu aici ,caci nu
facem ccna,este impartit pe sapte straturi )
NIVEL APLICATIE
NIVEL TRANSPORT
NIVEL RETEA
NIVEL LEGATURA DE DATE SI FIZIC
OSI MODEL

TCP/IP MODEL

Nu voi dezvolta fiecare strat si protocol in parte,este foarte complex,si tema acestui tutorial nu
este retelistica,am sa ma opresc doar notiuni elementare ( ip , porturi si servicii, TCP, UDP,ICMP ).
IP (Internet Protocol)
Putem sa ne gandim la IP ,ca la un plic in care se trimite un mesaj. Cred ca este cel mai bun
exemplu. Cand trimitem o scrisoare avem un destinatar, cu numele si adresa sa, si o adresa a celui
care o trimite.Cam asa functioneaza si pachetele ip ..cu inca cateva informatii pe langa . Avem un
header in interiorul unui pachet(in general TCP) cu adresele sursa si destinatie,checksum si alte
informatii. Foarte utile pentru a afla mai multe sunt RFC-urile , ex RFC791 .
Adrese IP
In Internet fiecare calculator are asignata o adresa unica IP. Este formata din patru numere de la 0
la 255 separate prin trei puncte. Ex 209.127.112.153. Este formata din 4 bytes (32 biti in total )

O adresa IP este format din 2 parti:


1) Network Address (adresa retelei sau adresa firului)
2) Host Address (adresa hostului din retea). Deci biti componenti ai unei adrese IP se impart
in biti de retea si biti de host.
Toate hosturile din aceiasi retea trebuie sa aiba aceiasi Network Address. Un concept foarte
important,fara de care ip nu exista este si Network Mask .Scopul acesteia este de a
stabili care biti din IP sunt biti de retea si care sunt de host. Adresa IP nu exista fara masca,
intotdeauna se configureaza doar impreuna.
EX:
255.0.0.0 sau /8
Daca transformam aceasta masca in baza 2 observam ca primii 8 biti sunt 1. Rezulta ca primii 8
biti din adresa IP sunt biti de network, iar ultimii 24 de host.
Pe internet se gasesc foarte multe materiale ce explica binisor , eu am invatat de la un instructor
ccna, intr-un mod mult mai simplu..cine vrea sa stie mai multe ma poate intreba mai sunt carti , o
carte foarte utila este Network Administration Comptia + ,explica foarte clar conceptele ,trebuie
doar sa cititi .
Clasificarea adreselor ip
In functie de primii biti din primul octet exista 5 clase de IP-uri (definite de IANA in
rfc1700)

Bitii primului
octet

Primul Octet

Nr total de retele Nr. de hosturi in


fiecare retea

ClasaA

0xxxxxx

0-127*

128

16777216-2

Clasa B

10xxxxxx

128-191

16384

65536-2

Clasa C

110xxxxx

192-223

2097152

256-2

Clasa D

1110xxxx

224-239

N/A

N/A

Clasa E

1111xxx

240-255

N/A

N/A

Clasa A

Clasa B

Clasa C

Clasa D
- este o clasa speciala folosita pentru multicast. Nu se configureaza interfete sau placi de retea cu
aceasta adresa .
Clasa E (Rezervata pt studii si cercetari )

PORTURI
Acum ca stim cate ceva despre Ip, ne oprim la un alt concept deosebit de important
-porturile. Cand informatia trece de la un calculator la altul , se transmite de la o aplicatie server
catre o aplicatie client. Fiecare program (serviciu ) server are un port predeterminat pe care
asculta ,asteptand cererile clientilor. ( programul client) .Clientul este construit ca sa trimita cereri
catre portul predefinit al serverului. IANA ( Internet Asigned Numbers Authority ) a rezervat
anumite porturi la care se cupleaza anumite servicii si clientii lor. Cateva exemple :
PORT
21
23
25
80
110

SERVICIU
FTP
Telnet
mail ( SMTP)
http (WWW)
pop3

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--(5%)
//////////////////////////////////////////////////////////
Porturile de la 0 la 1023 sunt rezervate. Doar root (UID 0)se poate conecta la aceste porturi
,cunoscute ca si porturi privilegiate. Pentru porturile superioare de la 1024 la 65.535 se poate
conecta oricine inclusiv root. Mai multe informatii se pot gasi la RFC 791.
Nota : RFC ( Request for comments ) , IANA,IETF sunt ca un must-read in domeniul nostru.

TCP (TRANSMITION CONTROL PROTOCOL )


TCP reprezinta mai mult de 90% din media traficului LAN . Creaza o conexiune intre
client si server printr-o metoda de stabilire a conexiunii prin trei cai :
1. Clientul ( Ex.un client FTP ) trimite un pachet TCP/IP catre server pe portul 21 . In headerul
acestui pachet care cere sa se conecteze la serverul FTP , se activeaza ( 1) bitul SYN si ceilalti biti
pe 0 ( ACK,RST,UR).Pachetul contine de asemenea un numar aleator cu initierea secventei .
Acest tip de conexiune se numeste three way handshake .

Cand serverul asculta cererile , vede pachetul cu bitul SYN activat, activeaza bitul ACK
( acum atat SYN cat si ACK au valoarea 1 ) ,incrementeaza numarul de secventa si trimite pachetul
ca raspuns.
Cand clientul primeste pachetul SYN-ACK ,incrementeaza numarul de secventa si sterge
( pune bitul pe 0 ) SYN ,lasand doar ACK cu valoarea 1.
Dupa ce serverul primeste pachetul ACK ,abandoneaza coada de asteptare si conexiunea se
stabiliste. Sunt multe explicatii referitoare la acest tip de conexiune, nu stiu daca a mea este cea mai
clara. Imaginea de mai sus ( luata de pe google) este destul de explicita. Cei care sunt interesati ,pot
cauta cursuri cccna cu instructori autorizati, sau pot gasi chiar curricula de la cisco pe net . Oricum,
retineti aceasta schema ,este de maxima importanta pentru a intelege cum functioneaza stabilirea
conexiunilor.
De ce am scris despre asta daca tutorialul pana la urma se vrea a fi unul despre
firewall pentru incepatori? Pentru caa este necesar sa intelegem cum un firewall face
distinctia intre conexiunile noi si cele stabilite.

UDP ( USER DATAGRAM PROTOCOL )


Este un protocol neorientat catre conexiuni. Se foloseste cand integritatea datelor nu este
importanta. In timp ce TCP foloseste o serie de reguli stricte pentru a asigura transmisia datelor
intacte ,asamblate in ordinea corecta si fara erori ,UDP face exact contrariul.
UDP/IP ( gasim scris in mod curent doar UDP) , se foloseste pentru pachetele mici si fara
semnificatie . Pachetele pot sa ajunga sau nu la destinatia lor. Se foloseste pentru interogari DNS
,unde toate informatia incape intr-un singur pachet. Daca pachetul nu ajunge ,DNS intreba din nou
pana acesta ajunge la destinatie.
ICMP (INTERNET CONTROL MESSAGE PROTOCOL )
Pachetul Ping . Nu foloseste porturi ci comunica cu placa Ethernet ,dar foloseste types
pentru identificare.
ICMP type 0 este un pachet de cereri eco.Se foloseste pentru a testa conexiunea retelei intre
doua puncte. Se completeaza cu tipul 8 ca raspuns a lui eco.
Foarte multe persoane,paranoice in ceea ce priveste securitatea blocheaza ICMP(si eu am
facut-o ), totusi nu este o idee chiar foarte buna .De exemplu Linux foloseste ICMP pentru a
descoperi MTU( Unitate maxima de transmisie .O face trimitand pachete mari (1500biti) marcate cu
bitul DNF( Do not fragment) . Daca in drumul sau un router ar trebui sa defragmenteze un pachet ,
nu ar putea ,si l-ar trimite inapoi .Atunci Linux ar trimite alt pachet mai mic si ar continua pana
cand pachetul ar trece. De asemenea nu este o idee buna sa blocam pachetele de tipul 3 care ne
indica ca un host este unreacheable(eu am facut-o ,o sa va arat si cum daca totusi doriti asta) pentru
ca comunicatia ar deveni foarte lenta.
Mai sunt multe de scris despre icmp dar altadata...

2.CONFIGURAREA RETELEI SUB DEBIAN ( si derivate) -COMENZI DE BAZA


Teoretic ,in zilele noastre totul este functional dupa ce instalam sistemul de operare ,cel
putin pentru utilizatorii caznici,insa nu este rau daca invatam cateva comenzi de baza pentru
configurarea/depanarea retelei .
Principalele comenzi sunt :
ifconfig, ( se foloseste pentru a configura,initia,opri dispozitivul interfatei de retea dar si pentru a
afla ip-ul si alte date ale retelei folosind consola.
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 ( in cazul meu este ifconfig -a ( indica toate interfatele de retea) dar si
iwconfig .
Atat pentru ifconfig cat si pt orice comanda din Linux exista man( ex : man ifconfig ) ,un utilitar de

nadejde, deoarece nu toti stim toate comenzile sau optiunile 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
Verifica daca dispozitivul este up trimitand o cerere de tip eco ICMP dispozitivului .
Man ping :) acolo aveti toate optiunile si explicatiile necesare pentru a intelege cat mai bine aceasta
comanda .
Comanda traceroute
Numele este destul de sugestiv . Se foloseste pentru a vedea ce ruta folosesc pachetele
pentru a ajunge la destinatie, sau unde se opresc in cazul in care nu au ajuns.
Comanda netstat
Obtinem informatii despre cum sunt rutate pachetele ,conexiuni deschise , porturi deschise
si gata pentru a accepta conexiuni. Vine insotita de optiuni : netstat -avn , un exemplu .
Acestea sunt comenzile pe care orice utilizator de linux ar trebui sa le stie.. De asemenea ne
mai poate fi util sa reinitiem manul placa de retea :
/etc/init.d/network stop/start/restart

3. FIREWALL IP ,FILTRARE PACHETE,IPTABLES


Nu o sa scriu aici despre ipmasquerade(( deghizare desi se face cu iptables si NAT,pentru
ca am de gand sa o fac in urmatorul tutorial ( linux routers ) .
:) Bun...sa incepem!
Din ce stiu eu,avem doua tipuri de firewall ( nu stau sa dau definitia unui firewall ,nu cred ca
este necesar in zilele noastre ) .
Firewall aplicatie proxy
Firewall la nivel de retea pe baza filtrarii pachetelor ( ceea ce vom si folosi)
Firewall proxy se imparte in :Standard- un client se conecteaza a un port special si este
redirectionat pentru a iesi prin alt port.
Transparent -clientul nu foloseste un port special ci un software .

Desi acum pe Linux gasim programe firewall instalate( necesita doar mici configurari) ele
folosesc in background iptables,asa ca personal prefer sa interactionez cu acest utilitar.Da,iptables
este doar un utilitar cu ajutorul caruia aplicam niste reguli pentru filtrarea pachetelor. Corect ar fi sa
spune netfilter/iptables .
Netfilter vine ca modul al kernelului Linux si ne permite sa interceptam/manipulam
pachetele de retea.
Cand folosim un firewall la nivel de retea prin filtrare de pachete, putem da sau nega accesul
din si in interiorul hostului bazandu-ne pe diferite variabile ca de exemplu :
-adresa sursa, protocol, numar de port,continut.
Un firewall bine configurat ( optiuni avansate) ne poate ajuta sa invingem atacurile de tip
spoofing, DoS, si chiar sa transformam reteaua intr-o retea invizibila pentru exterior.
Nucleul Linux defineste trei tabele de reguli :
1.filter -folosita pentru filtrarea de pachete ---> cu lanturile INPUT,OUTPUT, FORWARD
2. nat -pentru sistemul NAT cu lanturile PREROUTING,OUTPUT,POSTROUTING
3. mangle utilizata pentru verificarea specializata a pachetelor INPUT,OUTPUT,FORWARD
PREROUTING,POSTROUTING

* Cand un pachet intra in sistem trece prin interfata de retea,atunci,nucleul decide daca pachetul
este destinat masinii locale -Lantul INPUT sau altui calculator -lantul FORWARD. Procesul este
asemanator si la iesirea unui pachet, doar ca se foloseste lantul OUTPUT.
Prin lantul PREROUTING trec pachetele inainte ca ruta lor catre destinatie sa fie stabilita si prin
lantul POSTROUTING dupa ce au fost rutate , dar inainte de a iesi din sistem.

Schema 1.

Schema 2.

Fiecare lant contine niste reguli si ii sunt aplicate niste actiuni ( ACCEPT,DROP,REJECT ) .
Daca regula specifica actiunea ACCEPT ,pachetul nu mai este verificat ci este lasat sa treaca, daca
are DROP ,nu ii este permis sa ajunga la destinatie,iar daca are REJECT ,nu se permite trecerea
catre destinatie dar este trimis un pachet de eroare expeditorului.
Cam astea sunt cateva notiuni minime despre cum functioneaza un firewall pe Linux. Multi
cred ca iptables este firewall linux,insa este gresit.Iptables este doar un program..cu care executam
niste comenzi pentru a manipula lanturile si regulile din firewall...dupa parerea mea de nespecialist
ar fi ca o interfata pentru netfilter .

Iptables are urmatoarea sintaxa :


iptables comanda regula [ optiuni ]
Comenzi : -A lant regula (Adauga una sau mai multe reguli la sfarsitul lantului specificat )
-I lant (numar_regula / regula [optiuni] insereaza una sau mai multe reguli in lant la
inceputul acestuia
-D lant [numar_regula / regula [optiuni] -sterge una sau mai multe reguli
-L -afiseaza regulile continute de un anumit/sau toate lanturile
-F ( flush) sterge toate regulile
Mai sunt destule comenzi (see netfilter.org :) ,man iptables ) dar daca le voi scrie pe toate
voi face un tutorial cat Zidul Chinezesc.
Specificarea regulilor :
-s adresa {masca} specifica adresa sursa a pachetului ( in general ip ,dar pot fi si nume de
retea sau masina)
-d specifica adresa destinatie
-p (protocol) specifica protocolul de incapsulare al pachetului (icmp,udp,tcp,sau all ) .
-i / -o -interfata de retea prin care iese/intra pachetul
-j actiune -specifica actiunea ce va fi indeplinita cand pachetul corespunde unei regu
Optiuni pentru pachete tcp,udp,icmp
--sport ,--dport (port ) -indica portul sursa al pachetului ( source port) si portul destinatie al
pachetului (destination port)
--tcp-flags
--sy n
--icmp-type (tip) specifica tipul de mesaj icmp
Acestea sunt niste notiuni teoretice de baza...nu stiu totul pe deasupra,apelez la google cand am
ceva de facut si nu stiu,insa baza cam aceasta este...cu mici +/- .
Iata si exemplu de firewall de baza 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

Dupa cum puteti vedea prima linie iptables -F ,ne indica stergerea regulilor ,dam accept interfetei
loopback /(127.0.0.1/32 ) atat pe chainul INPUT cat si pe OUTPUT .
Dupa cum vedeti in liniile de mai jos am incercat sa folosesc teoria mai sus scrisa..dar le-am
comentat deorece acum nu am nici un apache instalat pe sistem,dar puteti investiga ce face acea
linie,deja v-am dat suficiente indicii..
Predeterminat ,in sistemul Linux toate chainurile sunt pe ACCEPT. Acest lucru se poate
vedea prin comanda iptables -vnL . Vom obtine 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
0 0 ACCEPT all -- loopback *
0.0.0.0/0
0 0 REJECT icmp -- *
*
0.0.0.0/0
icmp-net-unreachable
475 120K ACCEPT all -- *
*
0.0.0.0/0
RELATED,ESTABLISHED

destination
0.0.0.0/0
0.0.0.0/0
0.0.0.0/0

icmptype 8 reject-with
state

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
0 0 ACCEPT all -- *
loopback 0.0.0.0/0
523 72872 ACCEPT all -- *
*
0.0.0.0/0
NEW,RELATED,ESTABLISHED

destination
0.0.0.0/0
0.0.0.0/0

state

Pentru a nu fi nevoiti de fiecare data sa rulam scriptul,cei care folosesc Debian si derivate ,
adaugam calea unde se afla scriptul in fisierul /etc/rc.local. Acest lucru va face incarcarea regulilor
la bootarea sistemului.

!! 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
$IPT -t filter -A INPUT -p tcp
ESTABLISHED,RELATED -j ACCEPT
$IPT -t filter -A INPUT -p udp
$IPT -t filter -A INPUT -p udp
ESTABLISHED,RELATED -j ACCEPT

-i $PUBLIC_NIC -m state --state NEW


-i $PUBLIC_NIC -m state --state

-j DROP

-i $PUBLIC_NIC -m state --state NEW


-i $PUBLIC_NIC -m state --state

-j DROP

$IPT -t filter -A INPUT -p tcp


$IPT -t filter -A INPUT -p tcp
ESTABLISHED,RELATED -j ACCEPT
$IPT -t filter -A INPUT -p udp
$IPT -t filter -A INPUT -p udp
ESTABLISHED,RELATED -j ACCEPT

-i $PRIVATE_NIC -m state --state NEW


-i $PRIVATE_NIC -m state --state

-j DROP

-i $PRIVATE_NIC -m state --state NEW


-i $PRIVATE_NIC -m state --state

-j DROP

$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
$IPT -t filter -A OUTPUT -s
$IPT -t filter -A OUTPUT -s

$PRIVATE_NIC -d ! $PRIVATE_CLASS -j DROP


$PUBLIC_IP -j ACCEPT
$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
--limit
$IPT -t
$IPT -t
--limit
$IPT -t

filter
5/s -j
filter
filter
5/s -j
filter

-A FORWARD
ACCEPT
-A FORWARD
-A FORWARD
ACCEPT
-A FORWARD

-p icmp -i $PRIVATE_NIC -s $PRIVATE_CLASS -m limit


-i $PRIVATE_NIC -s $PRIVATE_CLASS -j ACCEPT
-p icmp -i $PUBLIC_NIC -d $PRIVATE_CLASS -m limit
-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

Imi pare rau,dar explicatiile vor veni data viitoare( cand o sa scriu despre routere linux,dupa
cum vedeti mai sus ,avem mai multe placi de retea definite ca eth0 si eth1,avem ip-uri interne si
externe pentru placile respective,folosim si nat (network adress translation) ,deci este nevoie sa o
luam pas cu pas.Cine are nelamuriri ma poate contacta.. se gasesc scripturi asemanatoare pe
Internet , se gasesc foarte multe tutoriale,mult mai bune ca ale mele..Daca v-a placut,va
multumesc,daca nu, va multumesc ca l-ati citit...sau ca ati avut rabdare pana la capat.

S-ar putea să vă placă și