Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Intrebari srl nou

Amenintat cu moartea de un numar ...

La multi ani @AndReW99!

Alegere masina £15000 uk
 TVR vrea sa lanseze o platforma d...

Strategie investie pe termen lung...

Modulator FM ptr auto alimentat p...

orange cablu f.o. - internet fara...
 Robinet care comuta traseul

A fost lansata Fedora 40

Samsung S24 plus

Imi iau un Dell? (Vostro vs others)
 Abonati Qobuz?

transport -tren

Platforma electronica de eviden&#...

Cot cu talpa montat stramb in per...
 

Configurare firewall cu iptables

- - - - -
  • Please log in to reply
6 replies to this topic

#1
popescumarinel

popescumarinel

    Junior Member

  • Grup: Members
  • Posts: 51
  • Înscris: 01.02.2012
Salutare.
Am cumparat un domeniu si pana nu demult aveam gazduit siteul pe server-ul cuiva.
Mi-am cumparat banda garantat si am instalat CentOS 6.5 pe un PIV cu 2 G de RAM si am instalat si configurat apache, dns, vsftpd, sendmail, mysql si ssh.
Totul merge ok dar am selinux pe disable.
Incerc sa configurez iptables manual pentru a deschide doar ce am nevoie dar nu ma pricep foarte bine si de aceea va cer sfatul si ajutorul.
In primul rand doresc sa precizez urmatoarele:
- serevrul linux este si un router pentru o retea locala
- doresc sa pot accesa serverele mentionate mai sus din reteaua locala si din exterior
- as dori sa accesez din reteaua locala anumite programe aflate pe alte servere care folosesc anumite porturi

Astea ar fi cerintele mele am citit pe net destule documentatii si am procedat asa: am creat in /etc/config un fisier bash firewal pe care il accesez in /etc/rc.d/rc.local prin /etc/onfig/firewal
1. este bine cum am procedat? Acest fisier va fi ultimul executat? (in sensul sa nu imi scrie alte reguli dupa apelarea lui)
acest fisier contine: (eth0=interfata externa, eth1=interfata actre reteaua locala, ip_fix=ip-ul meu real)

Quote

#!/bin/sh
#!/bin/bash

iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -F -t nat

#dau net in reteaua interna
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source ip_fix

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

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

iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT   #aceasta linie o multiplic pentru 80, 443,25,3306

#pentru SSH (voi folosi un alt port ulterior)
iptables  -A INPUT -p tcp --dport 22 -j ACCEPT

iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT

iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

echo "1">/proc/sys/net/ipv4/ip_forward

2. am scris ceva gresit mai sus?
3. eu pentru serverul dns (port 53) am folosit atat protocolul tcp cat si udp. Trebuie sa folosesc -p udp si pentru celelalte porturi pe care le foloses, gen: 80, 20, 21, 443, 3306, etc? (eu nuimi dau seama cand sa pun tcp si cand udp sau cand sunt necesare ambele pentru un port)
4. este necesar ca pentru fiecare port sa mai pun si iptables -A OUTPUT -p port -j ACCEPT (nu inteleg pentru ce port este suficient doar INPUT si la care sunt necesare ambele. Din cate stiu eu o comunicare server client este permaneta : clientul cere un pachet, serverul trimite, clientul confirma primirea. In aceste conditii cred ca petru fiecare port trebuie sa am accept si pe OUTPUT. Cum este corect?
5. daca doresc sa mai adaug un port folosit de un program de pe un calc din reteaua locala care acceseaza un alt server (sa zic un yahoo messenger) este corect sa mai pun 2 linii:
iptables -A INPUT -p tcp --dport port -j ACCEPT
iptables -A OUTPUT -p tcp --dport port -j ACCEPT

Poate imi raspundeti punctual la cele 5 nelamuri ale mele. Evident ca voi puncta din nou acolo unde nu sunt lamurit.

Va multumesc anticipat pentru raspunsuri si amabilitatea de a incerca sa ma lamuriti (goluri sunt multe dar spre sa ma lamuresc si atunci voi fi multumit)

Edited by popescumarinel, 25 January 2014 - 21:35.


#2
popescumarinel

popescumarinel

    Junior Member

  • Grup: Members
  • Posts: 51
  • Înscris: 01.02.2012
Nici un sfat?

#3
popescumarinel

popescumarinel

    Junior Member

  • Grup: Members
  • Posts: 51
  • Înscris: 01.02.2012
Salutare.
Cred ca am pus prea multe intrebari si nu s-a bagat nimeni la un raspuns.
Va solicit acum ajutorul concret:
Eu pe server am apache, mysql, sendmail si ftp. La apache am deschis portul 80 pe INPUT, pentru ftp am deschis porturile 20 si 21 pentru cateva ip-uri interne si cateva externe.
Eu de pe site apelez la un moment dat ftp://domeniu.ro si afisez ce este acolo. Ce regula as putea scrie ca sa poata fi accesat ftp-ul cand este apelat de apache.
La fel cum pot face pentru send mail sa permita trimiterea doar acelor mesaje care sunt trimise doar de pe site?

Multumesc anticipat.

#4
popescumarinel

popescumarinel

    Junior Member

  • Grup: Members
  • Posts: 51
  • Înscris: 01.02.2012
Revin din nou: cum pot seta in iptables astfel incat serverul sa trimita doar mail-urile care vin de la 127.0.0.1 si la restul sa dea drop.

#5
MembruAnonim

MembruAnonim

    MembruAnonim

  • Grup: Banned
  • Posts: 398,284
  • Înscris: 08.10.2015

 popescumarinel, on 25 ianuarie 2014 - 21:22, said:

Astea ar fi cerintele mele am citit pe net destule documentatii si am procedat asa: am creat in /etc/config un fisier bash firewal pe care il accesez in /etc/rc.d/rc.local prin /etc/onfig/firewal

 popescumarinel, on 25 ianuarie 2014 - 21:22, said:

1. este bine cum am procedat? Acest fisier va fi ultimul executat? (in sensul sa nu imi scrie alte reguli dupa apelarea lui)
acest fisier contine: (eth0=interfata externa, eth1=interfata actre reteaua locala, ip_fix=ip-ul meu real)

Pe CentOS si alte distributii derivate din Red Hat poti modifica direct /etc/sysconfig/iptables daca nu exista il generezi tu cu comanda iptables-save -c > /etc/sysconfig/iptables care iti salveaza regulile din iptables curente plus counterii in fisierul specificat. La boot / reboot vor fi incarcate regulile din acel fisier, la reboot acel fisier este updatat.

 popescumarinel, on 25 ianuarie 2014 - 21:22, said:

2. am scris ceva gresit mai sus?
3. eu pentru serverul dns (port 53) am folosit atat protocolul tcp cat si udp. Trebuie sa folosesc -p udp si pentru celelalte porturi pe care le foloses, gen: 80, 20, 21, 443, 3306, etc? (eu nuimi dau seama cand sa pun tcp si cand udp sau cand sunt necesare ambele pentru un port)
4. este necesar ca pentru fiecare port sa mai pun si iptables -A OUTPUT -p port -j ACCEPT (nu inteleg pentru ce port este suficient doar INPUT si la care sunt necesare ambele. Din cate stiu eu o comunicare server client este permaneta : clientul cere un pachet, serverul trimite, clientul confirma primirea. In aceste conditii cred ca petru fiecare port trebuie sa am accept si pe OUTPUT. Cum este corect?
5. daca doresc sa mai adaug un port folosit de un program de pe un calc din reteaua locala care acceseaza un alt server (sa zic un yahoo messenger) este corect sa mai pun 2 linii:
iptables -A INPUT -p tcp --dport port -j ACCEPT
iptables -A OUTPUT -p tcp --dport port -j ACCEPT

2. Pare okay nu sunt prea atent acum sa zic exact;
3. 80/tcp, 20/tcp, 21/tcp, 443/tcp, 3306/tcp, 53/udp, 53/tcp, asa trebuie daca vrei mai exact cauta in /etc/services parca si de asemenea daca ai nmap instalat ai undeva in /usr un director nmap in care ai un fisier text cu definitiile porturilor cunoscute de exemplu 53/udp named, 53/tcp named, 80/tcp httpd, 22/tcp sshd, etc.
4. Pe INPUT ai deschise porturile necesare daemonilor care ruleaza pe acea masina si care vrei sa fie accesati de afara exemplu ai sshd pornit si vrei sa te conectezi de afara la acea masina prin ssh atunci permiti portul 22/tcp in firewall pe INPUT; OUTPUT este traficul care pleaca de la tine poti sa tai tot traficul cu iptables -P OUTPUT DROP si apoi sa permiti doar destinatii la care vrei sa dai voie adica la ce IPuri te poti conecta de pe acea masina. Cel mai bine lasi ACCEPT pe OUTPUT si pui DROP pe INPUT;
5. Daca lasi pe OUTPUT ACCEPT atunci nu mai trebuie sa adaugi nimic; vad ca pe INPUT ai deja regula iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT este corecta lasa sa treaca traficul legat de conexiunile stabilite de tine.

Asta pe scurt, mai era un topic pe aici legat de iptables in care parca am explicat un picut mai detaliat ce fac parametrii iptables si cum sa faci un fw asa de inceput ca mai apoi sa il coafezi dupa nevoi.

 popescumarinel, on 29 ianuarie 2014 - 12:45, said:

Eu pe server am apache, mysql, sendmail si ftp. La apache am deschis portul 80 pe INPUT, pentru ftp am deschis porturile 20 si 21 pentru cateva ip-uri interne si cateva externe.
Eu de pe site apelez la un moment dat ftp://domeniu.ro si afisez ce este acolo. Ce regula as putea scrie ca sa poata fi accesat ftp-ul cand este apelat de apache.

Tie iti functioneaza din moment ce dai ftp://domeniu.tld si iti listeaza continutul directorului.

 popescumarinel, on 29 ianuarie 2014 - 12:45, said:

La fel cum pot face pentru send mail sa permita trimiterea doar acelor mesaje care sunt trimise doar de pe site?

 popescumarinel, on 29 ianuarie 2014 - 17:49, said:

Revin din nou: cum pot seta in iptables astfel incat serverul sa trimita doar mail-urile care vin de la 127.0.0.1 si la restul sa dea drop.

Cele 2 cerinte de mai sus sunt aproximativ identice. Se rezolva din configul sendmail-ului in care specifici ca vrei sa asculte doar pe 127.0.0.1 pe port 25/tcp alte conexiuni pe acel port nu vor exista pentru ca sendmail va asculta doar pe loopback nu si pe alte IPuri.

PS: Pentru teste cu daemoni si iptables foloseste cu incredere nmap si telnet. nmap -sS -P0 -PN -sU -p 20,21,22,53,80,110.143.443,3308,8080 127.0.0.1 sau nmap -sS -P0 -PN -sU -p 20,21,22,53,80,110.143.443,3308,8080 $IP_ETH+ unde $IP_ETH+ este un IP de pe interfetele de retea de pe acea masina. nmap iti va spune ce porturi ai deschise si ce protocol folosesc porturile deschise. Comanda de mai sus scaneaza pentru porturi deschise si tcp si udp, scaneaza doar lista de porturi de dupa -p sau poti sa scanezi tot cu -p 1-65535 doar ca dureaza mai mult ca o sa scaneze fiecare port in parte si tcp si udp.
Alternativa este:
telnet $IP_ETH+ 20
telnet $IP_ETH+ 21
telnet $IP_ETH+ 22
telnet $IP_ETH+ 53
telnet $IP_ETH+ 80
telnet $IP_ETH+ 110
telnet $IP_ETH+ 143
telnet $IP_ETH+ 443
telnet $IP_ETH+ 3308
telnet $IP_ETH+ 8080

Adica telnet ip port daca portul este deschis atunci te vei conecta la acel ip/port altfel conexiunea va fi inchisa.

#6
popescumarinel

popescumarinel

    Junior Member

  • Grup: Members
  • Posts: 51
  • Înscris: 01.02.2012
Multumesc pentru precizari.

Quote

Tie iti functioneaza din moment ce dai ftp://domeniu.tld si iti listeaza continutul directorului.
Mie imi functioneaza dar as dori sa nu functioneze de oriunde.
Eu am facut in acest moment sa poata fi accesat doar de la anumite ip-uri dar m-ar interesa ca daca un user sta pe site-ul meu si are pe site un link cu ftp://domeniu.ro sa poata accesa ftp.
Daca ar scrie direct in browser, fara sa plece cu cererea de pe site sa nu poata deschide pagina.
Ceva cum am la postfix (daca intra pe formularul de pe site poate sa trimita mail oriunde altfel nu
Nu stiu daca se poate asa ceva deoarece eu nu inteleg urmatoarele lucruri (nu imi sunt clare)

1.Plecand de la urmatoarele 2 reguli:
iptables -A INPUT -p tcp --dport 25 -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Daca cineva scrie in browser http://domeniu.ro va accesa apache pe portul 80.
Acum daca pe site are un formular de contact [(wordpress, etc) si are configurat pe server postfix cu (inet_interfaces=localhost, adica sa trimita numai mail-urile care vin de la localhost)] si da sent totul se trimite corect.
Daca in loc de regula de sus folosesc iptables -A INPUT -p tcp --dport 25 -s ip_extern -j ACCEPT este acelasi lucru?
Adica acest 127.0.0.1 este acelasi cu ip-ul de pe eth1 (catre reteaua interna) si ip-ul de pe eth0 care este catre reteaua externa?

2. daca este corect ce am spus mai sus atunci de ce daca dau echo continut | mail -s titlu root@localhost nu il trimite
iar pe echo continut | mail -s titlu [email protected] il trimite
Precizez ca incerc acest lucru conectat remote pe sistem si OUTPUT are ACCEPT implicit
Nu sunt ambele mail-uri plecate de pe localhost?

3. daca am INPUT DROP urmata de reculi cu ACCEPT (se taie tot de la inceput si apoi se lasa cate ceva) este acelasi lucru cu reguli de ACCEPT urmate de INPUT DROP (se lasa cate ceva si pentru cele la care nu s-a dat accept le tai)
Sunt doua moduri total diferite dar eu am inteles ca sunt echivalente.

Edited by popescumarinel, 30 January 2014 - 14:39.


#7
DaCosta

DaCosta

    Member

  • Grup: Members
  • Posts: 528
  • Înscris: 25.06.2007
Quick note: la regulile tale de mai sus, poti sa uiti de vsftpd in passive mode.
Ca si sugestii usor de aplicat:

1) ca sa nu multiplici X linii de netfilter care permit accesul la porturi, "abuzeaza" de match-ul pe porturi multiple, ex:
$PATH_TO_IPTABLES -A INPUT -p tcp -m multiport --dport 20:22,80,443,$ALTELE -j ACCEPT
O sa-ti faca ruleset-ul mai usor de citit.
2) s-a inventat de ceva vreme o dracie numita "ipset", care nu-i greu de configurat si are sintaxa asemanatoare cu iptables - posibil sa-ti faca viata mai usoara
3) n-ar strica sa intelegi un strop mai mult partea "stateful" din netfilter - te va ajuta sa-ti simplifici destul de mult constructia unui firewall

Ca si nota distincta: firewall-ul va lucra pana la layer4 (by default, stiu ca poate duce si l7 inspection), pe partea de security ar mai fi de facut cateva lucruri suplimentare la application level - spânzura de el in continuare un host-based ids/ips (fail2ban, ossec, etc). Par a se intelege destul de usor si cu un ruleset scris ad-labam.

Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate