Permiterea FTP cu IPTables (Administrarea sistemului, Linux, Centos, Iptables, Ftp)

IOTAMAN a intrebat.

Scenariul meu actual implică permiterea diferitelor reguli, dar am nevoie ca ftp să fie accesibil de oriunde. Sistemul de operare este Cent 5 și folosesc VSFTPD. Se pare că nu reușesc să obțin o sintaxă corectă. Toate celelalte reguli funcționează corect.

## Filter all previous rules
*filter

## Loopback address
-A INPUT -i lo -j ACCEPT

## Established inbound rule
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

## Management ports
-A INPUT -s x.x.x.x/24 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/23 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s x.x.x.x/23 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/23 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT

## Allow NRPE port (Nagios)
-A INPUT -s x.x.x.x -p tcp -m state --state NEW -m tcp --dport 5666 -j ACCEPT
-A INPUT -s x.x.x.x -p tcp -m state --state NEW -m tcp --dport 5666 -j ACCEPT

##Allow FTP

## Default rules
:INPUT DROP [0:0]
:FORWARD DROP
:OUTPUT ACCEPT [0:0]
COMMIT

Următoarele sunt regulile pe care le-am încercat.

##Allow FTP
-A INPUT --dport 21 any -j ACCEPT
-A INPUT --dport 20 any -j ACCEPT

-A INPUT -p tcp --dport 21 -j ACCEPT
-A INPUT -p tcp --dport 20 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT


-A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 20 -j ACCEPT
-A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 21 -j ACCEPT

-A INPUT -s 0.0.0.0/0 -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -s 0.0.0.0/0 -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT

Comentarii

  • ați reparat formatarea, astfel încât să fie lizibilă. –  > Por Avery Payne.
  • im presupunând că folosiți Rackspace? tutorialul are acest defect. Urmați doar instrucțiunile lui @Evan Anderson. –  > Por Andres SK.
3 răspunsuri
Evan Anderson

Iată documentul la care trimit oamenii pentru ca aceștia să poată urma protocolul FTP: http://slacksite.com/other/ftp.html

  • Pentru a face FTP în mod activ, trebuie să permiteți conexiuni de intrare pe portul TCP 21 și conexiuni de ieșire din portul 20.
  • Pentru a face FTP în mod pasiv, trebuie să permiteți conexiunile de intrare la portul TCP 21 și conexiunile de intrare la un port generat aleatoriu pe computerul server (necesitând utilizarea unui modul conntrack în netfilter)

Nu aveți nimic referitor la: lanțul OUTPUT în mesajul dvs., așa că îl voi include și aici. Dacă lanțul OUTPUT este default-drop, atunci acest lucru contează.

Adăugați aceste reguli la configurația iptables:

iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT

Pentru a suporta modul pasiv FTP, trebuie să încărcați modulul ip_conntrack_ftp la pornire. Decomentați și modificați linia IPTABLES_MODULES din fișierul /etc/sysconfig/iptables-config astfel încât să se citească:

IPTABLES_MODULES="ip_conntrack_ftp"

Salvați configurația iptables și reporniți iptables.

service iptables save
service iptables restart

Pentru a exclude complet posibilitatea ca VSFTPD să fie o problemă, opriți VSFTPD, verificați că nu ascultă pe portul 21 cu „netstat -a” și apoi rulați un fișier :

nc -l 21

Acest lucru va porni netcat care ascultă pe portul 21 și va trimite un ecou de intrare în shell. De pe o altă gazdă, TELNET la portul 21 al serverului dumneavoastră și verificați dacă obțineți o conexiune TCP și dacă vedeți ieșirea în shell atunci când introduceți conexiunea TELNET.

În cele din urmă, porniți din nou VSFTPD, verificați dacă acesta ascultă pe portul 21 și încercați să vă conectați din nou. Dacă conexiunea la netcat a funcționat, atunci regulile iptables sunt în regulă. Dacă conexiunea la VSFTPD nu funcționează după ce netcat funcționează, atunci ceva este în neregulă cu configurația VSFTPD.

Comentarii

  • Mulțumesc pentru ajutor omule, sugestiile pe care le-ai prezentat pentru modul pasiv mi-au rezolvat problema. Apreciez ajutorul. –  > Por IOTAMAN.
  • Repornirea iptables va șterge toate modificările pe care le-ați făcut dacă nu aveți IPTABLES_SAVE_ON_STOP setat la „yes”. –  > Por Kevin M.
  • @Kevin: Absolut, un punct de vedere total bun! >smile< Voi lăsa o editare pe asta acum. –  > Por Evan Anderson.
  • @GLB03: Nici o problemă. Trăiesc la Server Fault… >smile< –  > Por Evan Anderson.
  • Acest răspuns nu a funcționat pentru mine, așa că pentru oricine altcineva care are această problemă, voi sublinia că acest lucru (și, de asemenea, deschiderea portului 21 de intrare / ieșire) a funcționat pentru mine: linuxquestions.org/questions/linux-security-4/… – –  > Por ehsanul.
Matt

Încearcă această regulă. Notă: $EXTIP este adresa IP externă pentru serverul FTP.

-A INPUT -i $EXTIP -m state --state NEW,ESTABLISHED,RELATED -p TCP -s 0.0.0.0 -d $EXTIP --dport 21 -j ACCEPT

Kornel

În cazul meu îmi lipsea modulul de kernel ip_conntrack_ftp. Acesta trebuie să fie încărcat. Așa că puteți încerca acest lucru:

modprobe ip_conntrack_ftp

Și, de asemenea, adăugați ip_conntrack_ftp la /etc/modules astfel încât să funcționeze după repornire