IPTABLES questão - tentando DROP quaisquer conexões para 3306, exceto de 127.0.0.1 e VPN

1

Eu tenho um VPS onde configurei a VPN com sucesso. Eu me conecto com o cliente OpenVPN. A interface do servidor VPN é 10.8.0.1 e o cliente recebe 10.8.0. IP. E eu sou capaz de pingar 10.8.0.1. Eu também pareço ser capaz de fazer telnet para 10.8.0.1:80, 10.8.0.1:443, etc portas padrão com serviços de trabalho sobre eles, mas não 10.8.0.1:3306.

Esta é a conexão VPN impressa por ifconfig:

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:383 errors:0 dropped:0 overruns:0 frame:0
          TX packets:358 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:29356 (28.6 KiB)  TX bytes:149232 (145.7 KiB)

O MySQL não é vinculado a nenhum IP, por isso recebe conexões de qualquer lugar. Eu quero cortar sua visibilidade por IPTABLES.

Então adicionei essas regras a IPTABLES:

# allow connections from the vpn
iptables -A INPUT -s 10.8.0.0/24 -p tcp --dport 3306 -j ACCEPT
# allow local connections eg your scripts running locally
iptables -A INPUT -s 127.0.0.1 -p tcp --dport 3306 -j ACCEPT
# deny any other attempts of connecting to mysql
iptables -A INPUT -p tcp --dport 3306 -j DROP

Agora consigo conectar-me ao 127.0.0.1 do próprio servidor. Não consigo me conectar ao servidor pelo seu IP público. E eu não consigo me conectar a ele através do 10.8.0.1 (VPN IP).

Este é o meu IPTABLES completo:

[root@ddinvps mail]# iptables -L -n
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:1723
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
icmp_packets  all  --  0.0.0.0/0            0.0.0.0/0
tcp_packets  all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  10.8.0.0/24          0.0.0.0/0           tcp dpt:3306
ACCEPT     tcp  --  127.0.0.1            0.0.0.0/0           tcp dpt:3306
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:3306

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain icmp_packets (1 references)
target     prot opt source               destination
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 0
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 3
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 11
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 8
DROP       icmp --  0.0.0.0/0            0.0.0.0/0

Chain tcp_packets (1 references)
target     prot opt source               destination
ACCEPT     all  --  127.0.0.1            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:53
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:53
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:25
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:26
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:443
ACCEPT     tcp  --  10.3.124.200         0.0.0.0/0           tcp dpt:9102
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:143
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:993
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:110
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:10000
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0
DROP       udp  --  0.0.0.0/0            0.0.0.0/0

Alguma idéia?

    
por ddinchev 21.05.2012 / 12:53

2 respostas

4

Os pacotes estão sendo filtrados pela cadeia tcp_packets . Isso ocorre porque o comando iptables -A adicionou as novas regras ao final da corrente INPUT e o filtro funciona nas vitórias da primeira partida. A maneira mais fácil de resolver seu problema é adicionar suas regras ao início da cadeia INPUT usando o comando iptables -I , por exemplo,

iptables -I INPUT -s 10.8.0.0/24 -p tcp --dport 3306 -j ACCEPT

que irá inserir suas novas regras no início da Corrente.

    
por 21.05.2012 / 13:07
1

É obviuos que sua cadeia de tcp_packets elimina o tráfego antes de atingir sua regra.

Adicione esta regra no início da cadeia tcp_packets, ou na cadeia INPUT, mas antes de saltar tcp_packets

    
por 21.05.2012 / 12:58