Então, eu procurei na net um script que reduza todo o tráfego para todas as portas, exceto as portas http (80) e https (443), e só permita o tráfego em todas as outras portas do país x (em que caso país x são os EUA).
Não quero adicionar todos os IPs de todos os países, apenas quero permitir ips do meu país e depois bloquear quase todo o outro tráfego do mundo exterior. Ninguém fora do meu país deve ter acesso ao ssh, ftp, smtp, ect. diferente de mim. Se isso mudar, adicionarei um caso especial quando ele se aproximar.
Nota
Devo observar que encontrei uma pergunta que contém um script para banir o IP por país usando tabelas de IP, mas isso é muita inserção extra que eu precisaria 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 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 assumiria que isso permitiria que os ips da china acessassem as portas 80 e 443 e eliminaria o resto. Essa suposição estaria correta? Se não, por que não?
Atualização 2
Depois de algumas brincadeiras, descobri que minha versão do Ubuntu não gosta do --dport
atributo. Então, ao invés de usar, aqueles que executam o Ubuntu 14+ (pelo menos, eu só tenho o Ubuntu 14.04, 14.10 e 15.04 instalado em algumas máquinas) terão que usar-p PORT_NUMBER_OR_NAME
Então isso pareceria
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