Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/sbin/nft
- #Limpiamos reglas existentes.
- flush ruleset
- #Creamos las tablas que vamos a utilizar con el nombre filter.
- # En todo momento voy a filtrar la entrada y salida de los
- #puertos de mi equipo y no los del equipo o servidor remoto.
- #No creo la tabla para NAT porque no lo voy a usar en este equipo.
- add table ip filter
- add table ip6 filter
- #Creamos la cadena que va a filtrar los paquetes antes de ingresarlos al
- #proceso con la política de bloqueo, luego abrimos.
- add chain ip filter input { type filter hook input priority 0; policy drop; }
- #Creamos las reglas para bloquear sitios comprobados como peligrosos o atacantes.
- #Variable que contiene las Ips de atacantes.
- define Prohibidos={184.168.113.82,207.171.166.22,72.21.210.29,72.21.206.80,54.245.112.177,\
- 37.230.114.78,37.187.86.215,80.87.131.12,144.76.0.242,144.76.1.130,107.20.224.135,\
- 76.164.226.146,184.154.139.166,239.255.255.250,200.123.197.170,54.204.5.184,\
- 54.231.0.128,23.235.44.193,207.244.65.143,72.10.36.226,162.125.18.133,52.201.32.182,157.249.32.164}
- #Agregamos las reglas que van a bloquear los sitios atacantes creando un
- #array con las direcciones prohibidas y mediante un bucle for.
- add rule ip filter input ip saddr $Prohibidos counter drop
- #Prohibo que se haga ping a mi equipo para evitar el icmp flood y similares.
- add rule ip filter input ip protocol icmp counter drop
- add rule ip filter input ct state invalid counter drop
- #Reglas que inspeccionan las cabeceras de los paquetes TCP para evitar los ataques DoS/DDoS más comunes.
- #Probado con hping3 y funciona.
- add rule ip filter input tcp flags & (fin|syn) == fin|syn counter drop
- add rule ip filter input tcp flags & (syn|rst) == syn|rst counter drop
- add rule ip filter input tcp flags & (fin|syn|rst|psh|ack|urg) < fin counter drop
- add rule ip filter input tcp flags & (fin|syn|rst|psh|ack|urg) == fin|psh|urg counter drop
- #Habilitación y protección de localhost
- add rule ip filter input iifname lo counter accept
- add rule ip filter input iifname != lo ip daddr 127.0.0.1/8 counter drop
- #Abrimos los puertos para conexiones establecidas por nosotros o relativas a estas.
- #No habilité el puerto SSH (22)
- define tcp_dport_input_accept={20,21,25,80,110,143,443,465,993,995,1024-65535}
- define udp_dport_input_accept={53,80,1024-65535}
- add rule ip filter input tcp dport $tcp_dport_input_accept ct state established,related counter accept
- add rule ip filter input udp dport $udp_dport_input_accept ct state established,related counter accept
- #Si bien la política de input es counter drop bloqueamos puertos conocidos usados por atacantes.
- define ports_input_drop={1,2-1024,1723,3306,5432,31337-31340}
- add rule ip filter input tcp dport $ports_input_drop counter drop
- add rule ip filter input udp dport $ports_input_drop counter drop
- #Cerramos el acceso a la ip local por la red cableada (enp2s0) y por wifi (wlp0s18f2u5 ).
- #La ip 255.255.255.255 no es aceptada por la sintaxis en concatenación por tanto necesita una regla propia.
- add rule ip filter input iifname enp2s0 ip saddr {10.0.0.0/24,172.16.0.0/24,\
- 192.168.0.0/24,224.0.0.0/22} counter drop
- add rule ip filter input iifname enp2s0 ip daddr 127.0.0.0/22 counter drop
- add rule ip filter input iifname enp2s0 ip daddr 255.255.255.255 counter drop
- add rule ip filter input iifname enp2s0 ip frag-off != 0 counter drop
- add rule ip filter input iifname wlp0s18f2u5 ip saddr {10.0.0.0/24,172.16.0.0/24,\
- 192.168.0.0/24,224.0.0.0/22} counter drop
- add rule ip filter input iifname wlp0s18f2u5 ip daddr 127.0.0.0/22 counter drop
- add rule ip filter input iifname wlp0s18f2u5 ip daddr 255.255.255.255 counter drop
- add rule ip filter input iifname wlp0s18f2u5 ip frag-off != 0 counter drop
- #Cerramos cualquier tráfico que no hubiera sido captado por reglas anteriores.
- add rule ip filter input counter counter drop
- #Creamos la cadena para output.
- add chain ip filter output { type filter hook output priority 0; policy drop; }
- #Estas reglas sobre IPs para bloquear son creadas porque tengo el ct state related habilitado.
- add rule ip filter output ip daddr $Prohibidos counter drop
- #Le damos salida a lo y a las conexiones establecidas por nosotros y relacionadas.
- add rule ip filter output oifname lo counter accept
- add rule ip filter output ct state established,related counter accept
- #Damos salida a nuestro sistema a la red con el ct state new
- define ports_tcp_output_new={20,21,25,80,110,143,443,465,993,995,1024-65535}
- define ports_udp_output_new={53,80,1024-65535}
- add rule ip filter output tcp sport $ports_tcp_output_new ct state new counter accept
- add rule ip filter output udp sport $ports_udp_output_new ct state new counter accept
- #Creamos la cadena que se va a encargar de los forward y las reglas que lo prohiben.
- #Mi equipo no requiere esa función.
- add chain ip filter noforward { type filter hook forward priority 0; policy drop; }
- add rule ip filter noforward counter drop
- #Por las dudas alguien meta mano a mi router creamos las cadenas para IPv6 y sus reglas para bloquear todo el tráfico.
- add chain ip6 filter input { type filter hook input priority 0; policy drop; }
- add rule ip6 filter input counter drop
- add chain ip6 filter output { type filter hook output priority 0; policy drop; }
- add rule ip6 filter output counter drop
- add chain ip6 filter noforward { type filter hook forward priority 0; policy drop; }
- add rule ip6 filter noforward counter drop
Advertisement
Add Comment
Please, Sign In to add comment