FTP e iptables. Conexão falha, mas as portas estão abertas

2

Eu instalei o proftp na minha máquina.

Com o iptables desativado, posso conectar-me à máquina, usando o ftp-client ou o telnet.
Com a conexão do iptables falha - telnet diz "Falha na conexão"

# works
telnet 192.10.10.11 22 

# connection failed
telnet 192.19.10.11 20
telnet 192.19.10.11 21

Eu encontrei este tópico , mas isso não ajudou.

Desde que eu abro as Portas 22 e 21,20 da mesma forma que todas devem ser acessadas através de telnet? Mas 22 obras e 21,20 falham. Alguma idéia de por que isso acontece?

sudo iptables -L -v

 Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere
  100  7136 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:ssh
    3   152 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:ftp
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpts:1010:1012
  586 78898 ACCEPT     udp  --  eth0   any     anywhere             anywhere             udp dpt:openvpn
    0     0 ACCEPT     all  --  tun+   any     anywhere             anywhere
  348 22567 ACCEPT     all  --  tap+   any     anywhere             anywhere
   69 10294 DROP       all  --  any    any     anywhere             anywhere

Chain FORWARD (policy DROP 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  --  any    lo      anywhere             anywhere
   95 11028 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp spt:ssh
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp spt:ftp-data
  354 55626 ACCEPT     udp  --  any    eth0    anywhere             anywhere             udp dpt:openvpn
    0     0 ACCEPT     all  --  any    tun+    anywhere             anywhere
  353 26295 ACCEPT     all  --  any    tap+    anywhere             anywhere
    4   392 DROP       all  --  any    any     anywhere             anywhere

iptables configurations:

#!/bin/sh

# Flushing all rules
iptables -F
iptables -X

# Setting default filter policy
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Allow unlimited traffic on loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Allow ssh on Port 22
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT



# Ports for FTP

#Allowing FTP Connections, including passive ports. (proftpd)
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT

# Allowing FTP Connections in active mode, where Data are passed through Port 20
sudo iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT

# Allowing Ports for Passive Mode connection, where Data is passed through ports
sudo iptables -A INPUT -p tcp --dport 1010:1012 -j ACCEPT




# allow connection via 1194 so that openVpn can use the network adapter
iptables -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp --dport 1194 -j ACCEPT
# allow connections via openVPN tun and tap interfaces
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A OUTPUT -o tun+ -j ACCEPT
iptables -A INPUT -i tap+ -j ACCEPT
iptables -A OUTPUT -o tap+ -j ACCEPT


# make sure nothing else comes or goes out of this box
iptables -A INPUT -j DROP
iptables -A OUTPUT -j DROP
    
por Skip 19.01.2014 / 16:23

2 respostas

4

Esta foi a solução. Eu não sei porque outras configurações não funcionaram!

# allowing active/passive FTP
iptables -A OUTPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
    
por 19.01.2014 / 21:09
1

Você iniciou proftp ? Há duas coisas que você precisa fazer ao configurar um serviço. Você tem a primeira coisa feita, com o firewall permitindo que as portas sejam abertas. Mas o telnet parece estar indicando que nada está escutando nas portas 20 & 21.

Você pode usar netstat e nmap para confirmar.

netstat

$ sudo netstat -tapn -4 | grep -E ':20 |:21 '

Eu não tenho o FTP em execução, por isso vou usar sshd como substituto para o meu exemplo.

$ sudo netstat -tapn | grep -E ':20 |:21 |:22 '
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      894/sshd            
tcp        0      0 192.168.1.20:51560      67.253.170.83:22        ESTABLISHED 5892/ssh            
tcp        0      0 192.168.1.20:39411      192.168.1.109:22        ESTABLISHED 21079/ssh           
tcp6       0      0 :::22                   :::*                    LISTEN      894/sshd            
tcp6       0      0 ::1:48375               ::1:22                  ESTABLISHED 27962/ssh           
tcp6       0      0 ::1:22                  ::1:48375               ESTABLISHED 27963/sshd: saml [p 

Aqui podemos ver o ID do processo para sshd , 894, que é o principal servidor sshd no meu sistema.

nmap

O Nmap é uma ferramenta para escanear para ver se as portas estão abertas em um sistema e se algo está escutando. Onde netstat trabalha a partir do "interior", nmap trabalha do lado de fora olhando para dentro.

$ sudo nmap -sS -P0 192.168.1.20

Starting Nmap 6.40 ( http://nmap.org ) at 2014-01-19 11:08 EST
Nmap scan report for 192.168.1.20
Host is up (0.000013s latency).
Not shown: 998 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
111/tcp open  rpcbind

Nmap done: 1 IP address (1 host up) scanned in 11.44 seconds

Aqui, podemos ver que apenas sshd e rpcbind têm permissão para acessar a LAN externa.

regras de iptable

Considerando que você pode se conectar via FTP quando o firewall está desativado, isso parece indicar um problema com suas regras. Tente estes em vez disso.

permitir porta 21 entrada / saída

$ sudo iptables -A INPUT  -p tcp -m tcp --dport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"
$ sudo iptables -A OUTPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"

permite a entrada / saída da porta 20 - ativa

$ sudo iptables -A INPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"
$ sudo iptables -A OUTPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"

permitir porta 20 de entrada / saída - passiva

$ sudo iptables -A INPUT -p tcp -m tcp --sport 1024: --dport 1024:  -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow passive inbound connections"
$ sudo iptables -A OUTPUT -p tcp -m tcp --sport 1024: --dport 1024:  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Allow passive inbound connections"

Fonte: Iptables para permitir o FTP de entrada

    
por 19.01.2014 / 17:10