Por isso, pesquisei na Internet por um script que eliminaria todo o tráfego para todas as portas, exceto as portas http (80) e https (443), e permitiria o tráfego somente em todas as outras portas do país x ( onde no meu caso o país x é os EUA).
Eu não quero adicionar todos os IPs de todos os países, só quero permitir que ips do meu país bloqueiem quase todo o tráfego do mundo exterior. Ninguém fora do meu país deve ter acesso a ssh, ftp, smtp, etc. além de mim mesmo. Se isso mudar, adicionarei um caso especial quando se aproximar.
Nota lateral
Devo observar que encontrei uma pergunta que contém um script para ban ip by país usando tabelas ip , mas isso é muito de inserção extra que eu teria que fazer.
O script marcado como a melhor resposta bloqueará todo o tráfego desses IPs. Eu só quero bloquear o acesso a todas as portas, exceto para 80 e 443.
Atualizar
Com a seguinte regra,
iptables -A OUTPUT -m geoip --dst-cc CN -j DROP
eu seria capaz de modificá-lo e fazer algo como
iptables -A OUTPUT -m geoip --dst-cc CN --dport 80 -j ACCEPT
iptables -A OUTPUT -m geoip --dst-cc CN --dport 443 -j ACCEPT
iptables -A OUTPUT -m geoip --dst-cc CN -j DROP
Eu diria que isso permitiria que os ips da china acessassem a porta 80 e a porta 443 e isso diminuiria o restante. Esta suposição estaria correta? Se não, por que não?
Atualização 2
Depois de algumas bagunças, descobri que minha versão do Ubuntu não gosta do atributo --dport
. Então, ao invés de usar que aqueles de nós rodando o Ubuntu 14+ (pelo menos, eu tenho apenas o Ubuntu 14.04, 14.10 e 15.04 instalado em algumas máquinas) terá que usar -p PORT_NUMBER_OR_NAME
Então, isso seria parecido com
iptables -A OUTPUT -m geoip --dst-cc CN -p 443 -j ACCEPT
ou para tráfego de entrada,
iptables -A INPUT -m geoip --src-cc CN -p 443 -j ACCEPT