Ubuntu IPTables permite solo permitir 1 país

10

Así que he estado buscando en la red un script que elimine todo el tráfico a todos los puertos excepto los puertos http (80) y https (443), y luego solo permita el tráfico en todos los demás puertos del país x (donde está en mi caso país x es Estados Unidos).

No quiero agregar todas las IP de todos los países, solo quiero permitir ips de mi país y luego bloquear casi todo el resto del tráfico del mundo exterior. Nadie fuera de mi país debería tener acceso a ssh, ftp, smtp, ect. aparte de mi Si esto cambia alguna vez, agregaré un caso especial cuando se acerque.

Nota al margen

Debo señalar que encontré una pregunta que contiene un script para prohibir ip por país usando tablas de ip, pero eso es una gran cantidad de inserción adicional que tendría que hacer.

El script marcado como la mejor respuesta bloqueará todo el tráfico de esas IP. Solo quiero bloquear el acceso a todos los puertos, excepto a 80 y 443.

Actualizar

Con la siguiente regla,

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

sería capaz de modificarlo y hacer 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

Supongo que esto permitiría que los ips de China accedan al puerto 80 y al puerto 443 y dejaría caer el resto. ¿Sería correcta esta suposición? ¿Si no, porque no?

Actualización 2

Después de jugar un poco, descubrí que mi versión de Ubuntu no le gusta el --dportatributo. Entonces, en lugar de usar eso, aquellos de nosotros que ejecutamos Ubuntu 14+ (al menos, solo tengo Ubuntu 14.04, 14.10 y 15.04 instalados en algunas máquinas) tendremos que usar-p PORT_NUMBER_OR_NAME

Entonces eso se vería como

iptables -A OUTPUT -m geoip --dst-cc CN -p 443 -j ACCEPT

o para el tráfico entrante,

iptables -A INPUT -m geoip --src-cc CN -p 443 -j ACCEPT
Austin Kregel
fuente

Respuestas:

7

Deberá agregar el soporte de iptables para la geolocalización. Para hacerlo, deberá seguir estos pasos:

# 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

Esto te permitirá hacer cosas como:

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

Eso bloquearía cualquier tráfico saliente a China (CN). La complejidad de las reglas depende de usted, básicamente no necesita un script, simplemente escriba las reglas que desea aplicar y luego use iptables-savepara que se carguen cada vez que reinicie.

nKn
fuente
¡Gracias! Tengo otra pregunta, actualicé mi pregunta anterior para reflejarla. ¿Sabrías la respuesta?
Austin Kregel
La regla funcionaría, pero debe cambiar la dirección de la misma, ahora es así OUTPUTy necesitaría establecerla INPUTy no usarla, --dst-ccsino en su --src-cclugar. Pero si la pregunta es si debería funcionar en combinación con cualquier otra iptablesregla existente , la respuesta es sí.
nKn
el xt_geoip_dlcomando ya no funciona, requiere un zip que ya no existe
Martijn