cesarzeta

nftables.conf

Mar 20th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.44 KB | None | 0 0
  1. #!/usr/sbin/nft
  2.  
  3. #Limpiamos reglas existentes.
  4.  
  5. flush ruleset
  6.  
  7. #Creamos las tablas que vamos a utilizar con el nombre filter.
  8. # En todo momento voy a filtrar la entrada y salida de los
  9. #puertos de mi equipo y no los del equipo o servidor remoto.
  10. #No creo la tabla para NAT porque no lo voy a usar en este equipo.
  11.  
  12. add table ip filter
  13. add table ip6 filter
  14.  
  15.  
  16. #Creamos la cadena que va a filtrar los paquetes antes de ingresarlos al
  17. #proceso con la política de bloqueo,  luego abrimos.
  18.  add chain ip filter input { type filter hook input priority 0; policy drop; }
  19.  
  20. #Creamos las reglas para bloquear sitios comprobados como peligrosos o atacantes.
  21.  
  22. #Variable que contiene las Ips de atacantes.
  23.  
  24. define Prohibidos={184.168.113.82,207.171.166.22,72.21.210.29,72.21.206.80,54.245.112.177,\
  25.             37.230.114.78,37.187.86.215,80.87.131.12,144.76.0.242,144.76.1.130,107.20.224.135,\
  26.             76.164.226.146,184.154.139.166,239.255.255.250,200.123.197.170,54.204.5.184,\
  27.             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}
  28.            
  29. #Agregamos las reglas que van a bloquear los sitios atacantes creando un
  30. #array con las direcciones prohibidas y mediante un bucle for.
  31.  
  32. add rule ip filter input ip saddr $Prohibidos counter drop
  33.  
  34.  
  35. #Prohibo que se haga ping a mi equipo para evitar el icmp flood y similares.
  36.  
  37. add rule ip filter input ip protocol icmp  counter drop
  38. add rule ip filter input ct state invalid counter drop
  39.  
  40. #Reglas que inspeccionan las cabeceras de los paquetes TCP para evitar los ataques DoS/DDoS más comunes.
  41. #Probado con hping3 y funciona.
  42.  
  43. add rule ip filter input tcp flags & (fin|syn) == fin|syn counter drop
  44. add rule ip filter input tcp flags & (syn|rst) == syn|rst counter drop
  45. add rule ip filter input tcp flags & (fin|syn|rst|psh|ack|urg) < fin counter drop
  46. add rule ip filter input tcp flags & (fin|syn|rst|psh|ack|urg) == fin|psh|urg counter drop
  47.  
  48. #Habilitación y protección de localhost
  49.  
  50. add rule ip filter input iifname lo  counter accept
  51. add rule ip filter input iifname != lo ip daddr 127.0.0.1/8  counter drop
  52.  
  53. #Abrimos los puertos para conexiones establecidas por nosotros o relativas a estas.
  54. #No habilité el puerto SSH (22)
  55.  
  56. define tcp_dport_input_accept={20,21,25,80,110,143,443,465,993,995,1024-65535}
  57. define udp_dport_input_accept={53,80,1024-65535}
  58.  
  59. add rule ip filter input tcp dport $tcp_dport_input_accept ct state established,related counter accept
  60. add rule ip filter input udp dport $udp_dport_input_accept ct state established,related counter accept
  61.  
  62. #Si bien la política de input es counter drop bloqueamos puertos conocidos usados por atacantes.
  63.  
  64. define ports_input_drop={1,2-1024,1723,3306,5432,31337-31340}
  65.  
  66. add rule ip filter input tcp dport $ports_input_drop counter drop
  67. add rule ip filter input udp dport $ports_input_drop counter drop
  68.  
  69. #Cerramos el acceso a la ip local por la red cableada (enp2s0) y por wifi (wlp0s18f2u5 ).
  70. #La ip 255.255.255.255 no es aceptada por la sintaxis en concatenación por tanto necesita una regla propia.
  71. add rule ip filter input iifname enp2s0 ip saddr {10.0.0.0/24,172.16.0.0/24,\
  72.     192.168.0.0/24,224.0.0.0/22}  counter drop
  73. add rule ip filter input iifname enp2s0 ip daddr 127.0.0.0/22 counter drop
  74. add rule ip filter input iifname enp2s0 ip daddr 255.255.255.255  counter drop
  75. add rule ip filter input iifname enp2s0 ip frag-off != 0  counter drop
  76.  
  77. add rule ip filter input iifname wlp0s18f2u5 ip saddr {10.0.0.0/24,172.16.0.0/24,\
  78.     192.168.0.0/24,224.0.0.0/22}  counter drop
  79. add rule ip filter input iifname wlp0s18f2u5 ip daddr 127.0.0.0/22 counter drop
  80. add rule ip filter input iifname wlp0s18f2u5 ip daddr 255.255.255.255  counter drop
  81. add rule ip filter input iifname wlp0s18f2u5 ip frag-off != 0  counter drop
  82.  
  83.  
  84. #Cerramos cualquier tráfico que no hubiera sido captado por reglas anteriores.
  85.  
  86. add rule ip filter input counter counter drop
  87.  
  88. #Creamos la cadena para output.
  89.  
  90. add chain ip filter output { type filter hook output priority 0; policy drop; }
  91.  
  92. #Estas reglas sobre IPs para bloquear son creadas porque tengo el ct state related habilitado.
  93.  
  94. add rule ip filter output ip daddr $Prohibidos counter drop
  95.  
  96. #Le damos salida a lo y a las conexiones establecidas por nosotros y relacionadas.
  97.  
  98. add rule ip filter output oifname lo counter accept
  99. add rule ip filter output ct state established,related counter accept
  100.  
  101. #Damos salida a nuestro sistema a la red con el ct state new
  102.  
  103. define ports_tcp_output_new={20,21,25,80,110,143,443,465,993,995,1024-65535}
  104. define ports_udp_output_new={53,80,1024-65535}
  105.  
  106. add rule ip filter output tcp sport $ports_tcp_output_new ct state new counter accept
  107. add rule ip filter output udp sport $ports_udp_output_new ct state new counter accept
  108.  
  109. #Creamos la cadena que se va a encargar de los forward y las reglas que lo prohiben.
  110. #Mi equipo no requiere esa función.
  111.  
  112. add chain ip filter noforward { type filter hook forward priority 0; policy drop; }
  113. add rule ip filter noforward counter drop
  114.  
  115. #Por las dudas alguien meta mano a mi router creamos las cadenas para IPv6 y sus reglas para bloquear todo el tráfico.
  116.  
  117. add chain ip6 filter input { type filter hook input priority 0; policy drop; }
  118. add rule ip6 filter input counter drop
  119.  
  120. add chain ip6 filter output { type filter hook output priority 0; policy drop; }
  121. add rule ip6 filter output counter drop
  122.  
  123. add chain ip6 filter noforward { type filter hook forward priority 0; policy drop; }
  124. add rule ip6 filter noforward counter drop
Advertisement
Add Comment
Please, Sign In to add comment