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:
FILTRE
: aquesta és la taula predeterminada, que conté les cadenes integrades per a:- INPUT : paquets destinats a endolls locals
- ENVANT: paquets encaminats a través del sistema
- SORTIDA: paquets generats localment
- PRORUTAMENT: s'utilitza per alterar un paquet tan aviat com es rep
- SORTIDA: s'utilitza per alterar paquets generats localment
- POSTROUTING: s'utilitza per alterar els paquets quan estan a punt de sortir
- PREOUTING: per alterar les connexions entrants
- SORTIDA: per alterar els paquets generats localment
- INPUT: per als paquets entrants
- POSTROUTING: per alterar els paquets quan estan a punt de sortir
- 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 taulaNAT
, 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 xarxa192.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 port25
al port2525
. 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 a200
. 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ó.