Quando executo o seguinte comando na minha instância do Ubuntu:
$ nmap host
Eu vejo que a porta 443 está aberta:
Starting Nmap 5.21 ( http://nmap.org ) at 2013-03-19 05:36 PDT
Nmap scan report for [host redacted] (ip address redacted)
Host is up (0.000034s latency).
rDNS record for [ip address redacted]: [host redacted]
Not shown: 995 closed ports
PORT STATE SERVICE
21/tcp open ftp
25/tcp open smtp
80/tcp open http
443/tcp open https
30000/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 0.13 seconds
No entanto, não consigo fazer telnet para a porta 443. Quando faço isso, vejo a seguinte entrada no meu syslog
Mar 19 05:39:30 localhost kernel: iptables denied: IN=eth0 OUT= MAC=f2:3c:91:ae:c6:7a:c8:4c:75:f5:d6:3f:08:00 SRC=(ip address redacted) DST=(ip address redacted) LEN=64 TOS=0x00 PREC=0x00 TTL=52 ID=23782 DF PROTO=TCP SPT=53375 DPT=443 WINDOW=65535 RES=0x00 SYN URGP=0
E a saída da cadeia ACCEPT iptables -L --line-numbers
:
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- anywhere anywhere
2 REJECT all -- anywhere 127.0.0.0/8 reject-with icmp-port-unreachable
3 ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
4 ACCEPT tcp -- anywhere anywhere tcp dpt:www
5 ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:30000
6 LOG all -- anywhere anywhere limit: avg 5/min burst 5 LOG level debug prefix 'iptables denied: '
7 REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
8 ufw-before-logging-input all -- anywhere anywhere
9 ufw-before-input all -- anywhere anywhere
10 ufw-after-input all -- anywhere anywhere
11 ufw-after-logging-input all -- anywhere anywhere
12 ufw-reject-input all -- anywhere anywhere
13 ufw-track-input all -- anywhere anywhere
14 ACCEPT tcp -- anywhere anywhere tcp dpt:https
Uma vez tentei usar o UFW, mas agora ele está desativado e estou usando apenas o iptables. Vejo que na linha 14 estou aceitando pacotes para a porta 443, mas na linha 7 estou rejeitando pacotes. O problema é com o posicionamento da regra? Se sim, como posso subir mais a cadeia? Ou é um problema com a própria regra?
Quando vejo o histórico do bash, acredito que essa foi a regra usada:
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
ATUALIZAÇÃO:
Acabei de resolver isso movendo a regra para mais longe e excluindo a regra que foi anexada:
$ iptables -I INPUT 6 -p tcp --dport 443 -j ACCEPT # add the rule to the 6th position
$ iptables -L
$ iptables -D INPUT 15 # delete line 15