O comando -A para iptables simplesmente "anexa" uma regra. Então, se você é um conjunto de regras existente, é assim:
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
E você corre:
# /sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
Então, é claro, isso terminará após a regra REJECT (porque você disse para anexar a regra ao conjunto de caracteres existente). Você tem algumas escolhas:
- Você pode simplesmente editar
/etc/sysconfig/iptablesmanualmente, inserir as regras desejadas e executarservice iptables restart. - Você pode usar a ferramenta
lokkitpara modificar o firewall. Por exemplo,lokkit -p 80:tcp. Isso atualizará automaticamente/etc/sysconfig/iptables, bem como o firewall ativo. - Você pode usar o sinal
-I <num>paraiptablespara inserir a regra na posição especificada na lista. O--line-numbersflag pode ser útil para descobrir o que<num>deve ser. Você precisará executarservice iptables savedepois de fazer as alterações dessa maneira.
Se você realmente quiser fazer esse tipo de coisa usando apenas comandos de acréscimo, precisará realizar uma pequena configuração primeiro. Crie uma nova cadeia (chamada, talvez, allow_services ):
iptables -N allow_services
Adicione uma regra à sua corrente INPUT no local apropriado que pula para essa nova cadeia:
iptables -I INPUT 5 -j allow_services
E, a partir daí, você pode simplesmente adicionar novos serviços à cadeia allow_services :
iptables -A allow_services -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
Supondo que você coloque sua regra de salto (a opção -j ) antes da% final REJECT , isso fará o que você parece estar perguntando.