25 regles útils del tallafoc d'IPtable que tots els administradors de Linux haurien de conèixer


configurar el tallafoc de manera que compleixi els requisits del sistema i dels usuaris tant per a les connexions entrants com sortints, sense deixar el sistema vulnerable a atacs.

Aquí és on els iptables són útils. Iptables és un tallafoc de línia d'ordres de Linux que permet als administradors del sistema gestionar el trànsit entrant i sortint mitjançant un conjunt de regles de taula configurables.

Iptables utilitza un conjunt de taules que tenen cadenes que contenen un conjunt de regles integrades o definides per l'usuari. Gràcies a ells un administrador del sistema pot filtrar correctament el trànsit de xarxa del seu sistema.

Segons el manual d'iptables, actualment hi ha 3 tipus de taules:

    1. FILTRE : aquesta és la taula predeterminada, que conté les cadenes integrades per a:
      1. INPUT  : paquets destinats a endolls locals
      2. ENVANT: paquets encaminats a través del sistema
      3. SORTIDA: paquets generats localment

      1. PRORUTAMENT: s'utilitza per alterar un paquet tan aviat com es rep
      2. SORTIDA: s'utilitza per alterar paquets generats localment
      3. POSTROUTING: s'utilitza per alterar els paquets quan estan a punt de sortir

      1. PREOUTING: per alterar les connexions entrants
      2. SORTIDA: per alterar els paquets generats localment
      3. INPUT: per als paquets entrants
      4. POSTROUTING: per alterar els paquets quan estan a punt de sortir
      5. ENVANT: per als paquets encaminats a través de la caixa

      En aquest article, veureu algunes ordres útils que us ajudaran a gestionar el vostre tallafoc de Linux box mitjançant iptables. Per al propòsit d'aquest article, començaré amb ordres més senzilles i passaré a les més complexes fins al final.

      1. Inici/Atura/Reinicia el tallafocs Iptables

      En primer lloc, hauríeu de saber com gestionar el servei iptables en diferents distribucions de Linux. Això és bastant fàcil:

      ------------ On Cent/RHEL 7 and Fedora 22+ ------------
      # systemctl start iptables
      # systemctl stop iptables
      # systemctl restart iptables
      
      ------------ On Cent/RHEL 6/5 and Fedora ------------
      # /etc/init.d/iptables start 
      # /etc/init.d/iptables stop
      # /etc/init.d/iptables restart
      

      2. Comproveu totes les regles del tallafoc d'IPtables

      Si voleu comprovar les vostres regles existents, utilitzeu l'ordre següent:

      # iptables -L -n -v
      

      Això hauria de retornar una sortida similar a la següent:

      Chain INPUT (policy ACCEPT 1129K packets, 415M bytes)
       pkts bytes target prot opt in out source destination 
       0 0 ACCEPT tcp -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
       0 0 ACCEPT udp -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
       0 0 ACCEPT tcp -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
       0 0 ACCEPT udp -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
      Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
       pkts bytes target prot opt in out source destination 
       0 0 ACCEPT all -- * lxcbr0 0.0.0.0/0 0.0.0.0/0 
       0 0 ACCEPT all -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0
      Chain OUTPUT (policy ACCEPT 354K packets, 185M bytes)
       pkts bytes target prot opt in out source destination

      Si preferiu comprovar les regles d'una taula específica, podeu utilitzar l'opció -t seguida de la taula que voleu comprovar. Per exemple, per comprovar les regles de la taula NAT, podeu utilitzar:

      # iptables -t nat -L -v -n
      

      3. Bloqueja l'adreça IP específica al tallafocs d'IPtables

      Si trobeu una activitat inusual o abusiva des d'una adreça IP, podeu bloquejar aquesta adreça IP amb la regla següent:

      # iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP
      

      On heu de canviar \xxx.xxx.xxx.xxx\ amb l'adreça IP real. Aneu amb compte quan executeu aquesta ordre, ja que podeu bloquejar accidentalment la vostra adreça IP. L'opció -A afegeix la regla al final de la cadena seleccionada.

      En cas que només vulgueu bloquejar el trànsit TCP des d'aquesta adreça IP, podeu utilitzar l'opció -p que especifica el protocol. D'aquesta manera, l'ordre tindrà aquest aspecte:

      # iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP
      

      4. Desbloquegeu l'adreça IP al tallafocs d'IPtables

      Si heu decidit que ja no voleu bloquejar les sol·licituds d'una adreça IP específica, podeu suprimir la regla de bloqueig amb l'ordre següent:

      # iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP
      

      L'opció -D elimina una o més regles de la cadena seleccionada. Si preferiu utilitzar l'opció més llarga, podeu utilitzar --delete.

      5. Bloqueja el port específic del tallafocs d'IPtables

      De vegades és possible que vulgueu bloquejar les connexions entrants o sortints en un port específic. És una bona mesura de seguretat i hauríeu de pensar realment en aquest tema quan configureu el vostre tallafoc.

      Per bloquejar les connexions sortints en un port específic, utilitzeu:

      # iptables -A OUTPUT -p tcp --dport xxx -j DROP
      

      Per permetre connexions entrants, utilitzeu:

      # iptables -A INPUT -p tcp --dport xxx -j ACCEPT
      

      En ambdós exemples canvieu \xxx\ pel port real que voleu permetre. Si voleu bloquejar el trànsit UDP en lloc de TCP, simplement canvieu \tcp\ amb \udp\ a la regla iptables anterior.

      6. Permet múltiples ports a les taules IP mitjançant Multiport

      Podeu permetre diversos ports alhora, utilitzant multiport, a continuació podeu trobar aquesta regla tant per a connexions entrants com sortints:

      # iptables -A INPUT  -p tcp -m multiport --dports 22,80,443 -j ACCEPT
      # iptables -A OUTPUT -p tcp -m multiport --sports 22,80,443 -j ACCEPT
      

      7. Permet l'interval de xarxa específic en un port concret de les taules IP

      És possible que vulgueu limitar determinades connexions en un port específic a una xarxa determinada. Suposem que voleu permetre connexions sortints del port 22 a la xarxa 192.168.100.0/24.

      Podeu fer-ho amb aquesta comanda:

      # iptables -A OUTPUT -p tcp -d 192.168.100.0/24 --dport 22 -j ACCEPT
      

      8. Bloqueja Facebook a IPtables Firewall

      A alguns empresaris els agrada bloquejar l'accés a Facebook als seus empleats. A continuació es mostra un exemple de com bloquejar el trànsit a Facebook.

      Nota: si sou administrador del sistema i necessiteu aplicar aquestes regles, tingueu en compte que els vostres companys poden deixar de parlar amb vosaltres :)

      Primer cerqueu les adreces IP utilitzades per Facebook:

      # host facebook.com 
      facebook.com has address 66.220.156.68
      
      # whois 66.220.156.68 | grep CIDR
      CIDR: 66.220.144.0/20
      

      A continuació, podeu bloquejar aquesta xarxa de Facebook amb:

      # iptables -A OUTPUT -p tcp -d 66.220.144.0/20 -j DROP
      

      Tingueu en compte que l'interval d'adreces IP utilitzat per Facebook pot variar al vostre país.

      9. Configurar el reenviament de ports a IPtables

      De vegades és possible que vulgueu reenviar el trànsit d'un servei a un altre port. Podeu aconseguir-ho amb la següent comanda:

      # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT --to-port 2525
      

      L'ordre anterior reenvia tot el trànsit entrant a la interfície de xarxa eth0, des del port 25 al port 2525. Podeu canviar els ports amb els que necessiteu.

      10. Bloqueja la inundació de xarxa al port Apache amb IPtables

      De vegades, les adreces IP poden sol·licitar massa connexions als ports web del vostre lloc web. Això pot causar molts problemes i per evitar aquests problemes, podeu utilitzar la regla següent:

      # iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/minute --limit-burst 200 -j ACCEPT
      

      L'ordre anterior limita les connexions entrants de per minut a 100 i estableix un límit de ràfega a 200. Podeu editar el límit i el límit-burst segons els vostres requisits específics.

      11. Bloqueja les sol·licituds de ping entrants a les taules IP

      A alguns administradors del sistema els agrada bloquejar les sol·licituds de ping entrants per problemes de seguretat. Tot i que l'amenaça no és tan gran, és bo saber com bloquejar aquesta sol·licitud:

      # iptables -A INPUT -p icmp -i eth0 -j DROP
      

      12. Permet l'accés de bucle invers

      L'accés al bucle (accés des de 127.0.0.1) és important i sempre hauríeu de deixar-lo actiu:

      # iptables -A INPUT -i lo -j ACCEPT
      # iptables -A OUTPUT -o lo -j ACCEPT
      

      13. Manteniu un registre dels paquets de xarxa deixats a les IPtables

      Si voleu registrar els paquets perduts a la interfície de xarxa eth0, podeu utilitzar l'ordre següent:

      # iptables -A INPUT -i eth0 -j LOG --log-prefix "IPtables dropped packets:"
      

      Podeu canviar el valor després de \--log-prefix\ amb alguna cosa que vulgueu. Els missatges estan registrats a /var/log/messages i podeu cercar-los amb:

      # grep "IPtables dropped packets:" /var/log/messages
      

      14. Bloqueja l'accés a una adreça MAC específica a les taules IP

      Podeu bloquejar l'accés al vostre sistema des d'una adreça MAC específica mitjançant:

      # iptables -A INPUT -m mac --mac-source 00:00:00:00:00:00 -j DROP
      

      Per descomptat, haureu de canviar \00:00:00:00:00:00\ amb l'adreça MAC real que voleu bloquejar.

      15. Limiteu el nombre de connexions simultànies per adreça IP

      Si no voleu establir massa connexions simultànies des d'una única adreça IP en un port donat, podeu utilitzar l'ordre següent:

      # iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT
      

      L'ordre anterior no permet més de 3 connexions per client. Per descomptat, podeu canviar el número de port perquè coincideixi amb un servei diferent. També el --connlimit-above s'hauria de canviar perquè coincideixi amb el vostre requisit.

      16. Cerca dins de la regla IPtables

      Un cop hàgiu definit les regles d'iptables, voldreu cercar de tant en tant i pot ser que hàgiu de modificar-les. Una manera senzilla de cercar dins de les vostres regles és utilitzar:

      # iptables -L $table -v -n | grep $string
      

      A l'exemple anterior, haureu de canviar $table amb la taula real dins de la qual voleu cercar i $string amb la cadena real que esteu buscant.

      Aquí teniu un exemple:

      # iptables -L INPUT -v -n | grep 192.168.0.100
      

      17. Definiu una nova cadena IPTables

      Amb iptables, podeu definir la vostra pròpia cadena i emmagatzemar-hi regles personalitzades. Per definir una cadena, utilitzeu:

      # iptables -N custom-filter
      

      Ara podeu comprovar si el vostre filtre nou hi és:

      # iptables -L
      
      Chain INPUT (policy ACCEPT)
      target prot opt source destination
      
      Chain FORWARD (policy ACCEPT)
      target prot opt source destination
      Chain OUTPUT (policy ACCEPT)
      target prot opt source destination
      Chain custom-filter (0 references)
      target prot opt source destination

      18. Esborra les cadenes o les regles del tallafoc d'IPtables

      Si voleu netejar les vostres cadenes de tallafoc, podeu utilitzar:

      # iptables -F
      

      Podeu esborrar les cadenes d'una taula específica amb:

      # iptables -t nat -F
      

      Podeu canviar \nat\ amb la taula real de les cadenes que voleu esborrar.

      19. Deseu les regles d'IPtables en un fitxer

      Si voleu desar les regles del tallafoc, podeu utilitzar l'ordre iptables-save. Podeu utilitzar el següent per desar i emmagatzemar les vostres regles en un fitxer:

      # iptables-save > ~/iptables.rules
      

      Depèn de vostè on emmagatzemarà el fitxer i com li posarà el nom.

      20. Restaura les regles d'IPtables des d'un fitxer

      Si voleu restaurar una llista de regles d'iptables, podeu utilitzar iptables-restore. L'ordre té aquest aspecte:

      # iptables-restore < ~/iptables.rules
      

      Per descomptat, el camí al fitxer de regles pot ser diferent.

      21. Configura les regles d'IPtables per al compliment de PCI

      És possible que alguns administradors del sistema hagin de configurar els seus servidors perquè siguin compatibles amb PCI. Hi ha molts requisits per part de diferents proveïdors de compliment PCI, però n'hi ha pocs de comuns.

      En molts dels casos, haureu de tenir més d'una adreça IP. Haureu d'aplicar les regles següents per a l'adreça IP del lloc. Tingueu molta cura quan feu servir les regles següents i feu-les servir només si esteu segur del que esteu fent:

      # iptables -I INPUT -d SITE -p tcp -m multiport --dports 21,25,110,143,465,587,993,995 -j DROP
      

      Si utilitzeu cPanel o un tauler de control similar, és possible que també hàgiu de bloquejar els seus ports. Aquí teniu un exemple:

      # iptables -I in_sg -d DEDI_IP -p tcp -m multiport --dports  2082,2083,2095,2096,2525,2086,2087 -j DROP
      

      Nota: per assegurar-vos que compliu els requisits del vostre proveïdor de PCI, comproveu-ne acuradament l'informe i apliqueu les regles requerides. En alguns casos, és possible que també hàgiu de bloquejar el trànsit UDP en determinats ports.

      22. Permetre connexions establertes i relacionades

      Com que el trànsit de xarxa està separat entre l'entrada i la sortida, voldreu permetre el trànsit d'entrada establert i relacionat. Per a connexions entrants fes-ho amb:

      # iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
      

      Per a ús sortint:

      # iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
      

      23. Elimina paquets no vàlids en IPtables

      És possible que alguns paquets de xarxa estiguin marcats com a no vàlids. Algunes persones poden preferir registrar aquests paquets, però altres prefereixen deixar-los caure. Per eliminar els paquets no vàlids, podeu utilitzar:

      # iptables -A INPUT -m conntrack --ctstate INVALID -j DROP 
      

      24. Bloqueja la connexió a la interfície de xarxa

      Alguns sistemes poden tenir més d'una interfície de xarxa. Podeu limitar l'accés a aquesta interfície de xarxa o bloquejar connexions des de determinada adreça IP.

      Per exemple:

      # iptables -A INPUT -i eth0 -s xxx.xxx.xxx.xxx -j DROP
      

      Canvieu \xxx.xxx.xxx.xxx amb l'adreça IP real (o xarxa) que voleu bloquejar.

      25. Desactiveu els correus de sortida mitjançant IPTables

      Si el vostre sistema no ha d'enviar cap correu electrònic, podeu bloquejar els ports de sortida als ports SMTP. Per exemple, podeu utilitzar això:

      # iptables -A OUTPUT -p tcp --dports 25,465,587 -j REJECT
      

      Conclusió

      Iptables és un tallafoc potent del qual us podeu beneficiar fàcilment. És vital que tots els administradors del sistema aprenguin almenys els conceptes bàsics d'iptables. Si voleu trobar informació més detallada sobre iptables i les seves opcions, us recomanem que llegiu el seu manual:

      # man iptables
      

      Si creieu que hauríem d'afegir més ordres a aquesta llista, compartiu-les amb nosaltres, enviant-les a la secció de comentaris a continuació.