Descobri isso. Meu conjunto de regras original bloqueou tudo muito bem. O problema era que neste servidor, localhost resolve (via / etc / hosts) para :: 1 (o loopback IPv6) primeiro. Essas regras não funcionaram por causa disso. Depois que eu removi essa entrada do meu arquivo / etc / hosts, consegui que tudo funcionasse bem. Meu script de teste é assim:
#!/bin/bash iptables --flush iptables -A INPUT -i lo -p tcp --dport 0:1024 -j ACCEPT iptables -A OUTPUT -o lo -p tcp --dport 0:1024 -j ACCEPT iptables --policy INPUT DROP iptables --policy OUTPUT DROP iptables --policy FORWARD DROP iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT iptables -A INPUT -j REJECT #iptables -I INPUT 1 -i lo -p tcp --dport 10001 -m state --state NEW,ESTABLISHED -j ACCEPT #iptables -I OUTPUT 1 -o lo -p tcp --dport 10001 -m state --state NEW,ESTABLISHED -j ACCEPT
Com as duas últimas linhas ativadas, posso abrir uma conexão de encaminhamento local ssh na porta 10001. Com elas desativadas, não consigo. Perfeito!