Na verdade, iptables
é adequado muito bem para restringir isso. A tabela filter , em que os pacotes são permitidos ou bloqueados, tem três cadeias. Em cada cadeia, as regras podem ser definidas para corresponder aos pacotes e acionar uma ação se um pacote for correspondido. Contra qual cadeia de regras um pacote é correspondido depende da direção do pacote em relação ao host em que iptables
está em execução:
-
INPUT
: pacote de entrada destinado ao host local -
OUTPUT
: pacotes de saída originados do host local -
FORWARD
: Pacotes destinados a outro host e precisam ser encaminhados
Agora, por exemplo, se um pacote tiver que ser encaminhado e não tiver uma regra que corresponda à cadeia FORWARD
, ele será tratado de acordo com o policy definido nessa cadeia, que é por padrão: ACCEPT
. O pacote terá permissão para passar. Este comando mostrará as políticas e regras, se alguma delas estiver definida:
iptables -t filter -vnL
A tabela é especificada usando -t <table>
, filter
é a tabela padrão se nenhuma for especificada, então o seguinte comando é equivalente:
iptables -vnL
Para bloquear todos os pacotes para encaminhamento, a política dessa cadeia pode ser definida como REJECT
ou DROP
da seguinte maneira
iptables -P FORWARD REJECT
Agora, todos os pacotes a serem encaminhados serão rejeitados se nenhuma regra na cadeia FORWARD
os aceitar explicitamente.
Para o tráfego interno, você provavelmente deseja uma política REJECT
. Isso notificará os clientes imediatamente que o caminho está fechado. Você pode querer as regras DROP
para o tráfego originado de uma rede externa.
Para permitir explicitamente que determinados pacotes passem, as regras são anexadas a essas cadeias, que são correspondidas a um pacote principal na ordem em que essas regras foram definidas. Por exemplo, para permitir que todo o tráfego entre em eth0
e com base no encaminhamento seja encaminhado para eth1
:
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
E, por exemplo, para permitir que somente os pacotes da sub-rede 10.0.0.0/24
passem na direção oposta:
iptables -A FORWARD -i eth1 -o eth0 -s 10.0.0.0/24 -j ACCEPT
Para uma descrição detalhada de todos os parâmetros, consulte a página do iptables e o iptables-extensions manpage .