As IPTables do Ubuntu permitem apenas um país

10

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 --dportatributo. 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
Austin Kregel
fonte

Respostas:

7

Você precisará adicionar o suporte ao iptables para geolocalização. Para fazer isso, você precisará seguir estas etapas:

# apt-get install xtables-addons-common
# mkdir /usr/share/xt_geoip
# apt-get install libtext-csv-xs-perl unzip
# /usr/lib/xtables-addons/xt_geoip_dl
# /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv

Isso permitirá que você faça coisas como:

iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

Isso bloquearia qualquer tráfego de saída para a China (CN). A complexidade das regras é com você, basicamente você não precisa de um script, basta anotar as regras que deseja aplicar e usá-las para que iptables-saveelas sejam carregadas sempre que você reiniciar.

nKn
fonte
Obrigado! Tenho outra pergunta, atualizei minha pergunta acima para refleti-la. Você saberia a resposta para isso?
Austin Kregel
A regra iria funcionar, mas você tem que mudar a direção dele, agora é OUTPUTe você precisará configurá-lo para INPUTe não usar --dst-cc, mas --src-ccem vez disso. Mas se a questão é se deve funcionar em combinação com qualquer outra iptablesregra existente , a resposta é sim.
NKn 5/11
o xt_geoip_dlcomando não funciona mais, ele requer um zip que existe does not mais
Martijn