Se você executar os programas como usuários diferentes, poderá usar o módulo owner
.
iptables -A OUTPUT -m owner --uid-owner javaauser -j ACCEPT
iptables -A OUTPUT -m owner --uid-owner javabuser -j REJECT
Eu tenho dois programas, ambos em Java.
O programa A foi escrito por mim. Se quiser estabelecer uma conexão externa, estou bem com isso.
O programa B não foi escrito por mim. Se quiser estabelecer uma conexão externa, não estou bem com isso.
Como posso configurar o iptables para permitir que java A
faça conexões de saída, mas java B
seja negado?
Se o iptables não puder ser usado para isso, que outras opções eu tenho?
Você deve bloquear a porta em que o programa não deseja que o acesso externo seja usado. Suponha que use a porta 30000:
# iptables -A OUTPUT -s 0/0 -d 0/0 -p tcp --dport 30000 -j DROP
Esta é uma regra simples, você pode aprender mais sobre este howto simples . Dependendo da distribuição que você usa, você também pode tentar o AppArmor , um firewall de aplicativo no nível do kernel.
Tags firewall