GNU/Linux >> Linux Esercitazione >  >> Linux

25 Esempi di regole IPtables Linux più utilizzate

A prima vista, le regole di IPTables potrebbero sembrare criptiche.

In questo articolo, ho fornito 25 regole pratiche di IPTables che puoi copiare/incollare e utilizzarle per le tue esigenze.

Questi esempi fungeranno da modelli di base per modificare queste regole in base alle tue esigenze specifiche.

Per un facile riferimento, tutte queste 25 regole di iptables sono in formato shell script:iptables-rules

1. Elimina le regole esistenti

Prima di iniziare a creare un nuovo set di regole, potresti voler ripulire tutte le regole predefinite e le regole esistenti. Usa il comando iptables flush come mostrato di seguito per farlo.

iptables -F
(or)
iptables --flush

2. Imposta criteri di catena predefiniti

La policy della catena predefinita è ACCEPT. Cambialo in DROP per tutte le catene INPUT, FORWARD e OUTPUT come mostrato di seguito.

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

Quando si imposta la politica predefinita della catena INPUT e OUTPUT come DROP, per ogni requisito di regola del firewall che si ha, è necessario definire due regole. cioè uno in entrata e uno in uscita.

In tutti i nostri esempi seguenti, abbiamo due regole per ogni scenario, poiché abbiamo impostato DROP come criterio predefinito sia per la catena INPUT che per quella OUTPUT.

Se ti fidi dei tuoi utenti interni, puoi omettere l'ultima riga sopra. vale a dire, non DROP tutti i pacchetti in uscita per impostazione predefinita. In tal caso, per ogni requisito di regola del firewall che hai, devi solo definire una sola regola. cioè definire la regola solo per l'ingresso, poiché l'uscita è ACCEPT per tutti i pacchetti.

Nota: Se non sai cosa significa una catena, dovresti prima familiarizzare con i fondamenti di IPTables.

3. Blocca un indirizzo IP specifico

Prima di procedere ulteriormente ci saranno altri esempi, se vuoi bloccare un indirizzo IP specifico, dovresti farlo prima come mostrato di seguito. Modifica "x.x.x.x" nell'esempio seguente con l'indirizzo IP specifico che desideri bloccare.

BLOCK_THIS_IP="x.x.x.x"
iptables -A INPUT -s "$BLOCK_THIS_IP" -j DROP

Questo è utile quando trovi alcune attività strane da un indirizzo IP specifico nei tuoi file di registro e desideri bloccare temporaneamente quell'indirizzo IP mentre fai ulteriori ricerche.

Puoi anche utilizzare una delle seguenti varianti, che blocca solo il traffico TCP sulla connessione eth0 per questo indirizzo IP.

iptables -A INPUT -i eth0 -s "$BLOCK_THIS_IP" -j DROP
iptables -A INPUT -i eth0 -p tcp -s "$BLOCK_THIS_IP" -j DROP

4. Consenti TUTTI gli SSH in entrata

Le seguenti regole consentono TUTTE le connessioni ssh in entrata sull'interfaccia eth0.

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

Nota :Se ti piace capire esattamente cosa significano tutti gli argomenti, dovresti leggere Come aggiungere le regole del firewall IPTables

5. Consenti SSH in entrata solo da una rete specifica

Le seguenti regole consentono connessioni ssh in entrata solo dalla rete 192.168.100.X.

iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

Nell'esempio precedente, invece di /24, puoi anche usare la maschera di sottorete completa. ovvero "192.168.100.0/255.255.255.0".

6. Consenti HTTP e HTTPS in entrata

Le seguenti regole consentono tutto il traffico web in entrata. cioè il traffico HTTP alla porta 80.

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

Le seguenti regole consentono tutto il traffico web sicuro in entrata. cioè il traffico HTTPS alla porta 443.

iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

7. Combina più regole insieme usando MultiPorts

Quando consenti connessioni in entrata dal mondo esterno a più porte, invece di scrivere regole individuali per ciascuna porta, puoi combinarle insieme utilizzando l'estensione multiporta come mostrato di seguito.

L'esempio seguente consente tutto il traffico SSH, HTTP e HTTPS in entrata.

iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISHED -j ACCEPT

8. Consenti SSH in uscita

Le seguenti regole consentono la connessione ssh in uscita. cioè quando ssh dall'interno verso un server esterno.

iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

Si prega di notare che questo è leggermente diverso dalla regola in entrata. cioè consentiamo sia lo stato NEW che ESTABLISHED sulla catena OUTPUT e solo lo stato ESTABLISHED sulla catena INPUT. Per la regola in entrata, è viceversa.

9. Consenti SSH in uscita solo a una rete specifica

Le seguenti regole consentono la connessione ssh in uscita solo a una rete specifica. cioè sei un ssh solo per la rete 192.168.100.0/24 dall'interno.

iptables -A OUTPUT -o eth0 -p tcp -d 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

10. Consenti HTTPS in uscita

Le seguenti regole consentono il traffico web sicuro in uscita. Questo è utile quando vuoi consentire il traffico Internet per i tuoi utenti. Sui server, queste regole sono utili anche quando vuoi usare wget per scaricare alcuni file dall'esterno.

iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

Nota:per il traffico web HTTP in uscita, aggiungi due regole aggiuntive come quelle sopra e cambia da 443 a 80.

11. Bilanciamento del carico del traffico web in entrata

Puoi anche bilanciare il carico del tuo traffico web in entrata usando le regole del firewall iptables.

Questo usa l'ennesima estensione di iptables. L'esempio seguente bilancia il carico del traffico HTTPS su tre diversi indirizzi IP. Per ogni 3° pacchetto, viene bilanciato il carico sul server appropriato (usando il contatore 0).

iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.101:443
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 1 -j DNAT --to-destination 192.168.1.102:443
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 2 -j DNAT --to-destination 192.168.1.103:443

12. Consenti ping dall'esterno all'interno

Le seguenti regole consentono agli utenti esterni di essere in grado di eseguire il ping dei tuoi server.

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

13. Consenti ping dall'interno verso l'esterno

Le seguenti regole ti consentono di eseguire il ping dall'interno verso qualsiasi server esterno.

iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

14. Consenti accesso in loopback

Dovresti consentire l'accesso di loopback completo sui tuoi server. cioè accedere utilizzando 127.0.0.1

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

15. Consenti rete interna a rete esterna.

Sul server firewall in cui una scheda Ethernet è collegata all'esterno e un'altra scheda Ethernet collegata ai server interni, utilizzare le seguenti regole per consentire la comunicazione tra la rete interna e la rete esterna.

In questo esempio, eth1 è connesso a una rete esterna (internet) ed eth0 è connesso a una rete interna (ad esempio:192.168.1.x).

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

16. Consenti DNS in uscita

Le seguenti regole consentono le connessioni DNS in uscita.

iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT

17. Consenti connessioni NIS

Se stai eseguendo NIS per gestire i tuoi account utente, dovresti consentire le connessioni NIS. Anche quando la connessione SSH è consentita, se non consenti le connessioni ypbind relative a NIS, gli utenti non saranno in grado di accedere.

Le porte NIS sono dinamiche. cioè quando ypbind si avvia assegna le porte.

Per prima cosa esegui un rpcinfo -p come mostrato di seguito e ottieni i numeri di porta. In questo esempio, utilizzava le porte 853 e 850.

rpcinfo -p | grep ypbind

Ora consenti la connessione in entrata alla porta 111 e alle porte utilizzate da ypbind.

iptables -A INPUT -p tcp --dport 111 -j ACCEPT
iptables -A INPUT -p udp --dport 111 -j ACCEPT
iptables -A INPUT -p tcp --dport 853 -j ACCEPT
iptables -A INPUT -p udp --dport 853 -j ACCEPT
iptables -A INPUT -p tcp --dport 850 -j ACCEPT
iptables -A INPUT -p udp --dport 850 -j ACCEPT

Quanto sopra non funzionerà al riavvio di ypbind, poiché quella volta avrà numeri di porta diversi.

Ci sono due soluzioni a questo:1) Usa l'indirizzo IP statico per il tuo NIS, o 2) Usa alcune tecniche intelligenti di scripting della shell per catturare automaticamente il numero di porta dinamico dall'output del comando "rpcinfo -p" e usa quelli sopra regole di iptables.

18. Consenti Rsync da una rete specifica

Le seguenti regole consentono la rsync solo da una rete specifica.

iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT

19. Consenti la connessione MySQL solo da una rete specifica

Se stai utilizzando MySQL, in genere non vuoi consentire la connessione diretta dall'esterno. Nella maggior parte dei casi, potresti avere un server web in esecuzione sullo stesso server in cui viene eseguito il database MySQL.

Tuttavia, il DBA e gli sviluppatori potrebbero dover accedere direttamente a MySQL dal proprio laptop e desktop utilizzando il client MySQL. In tal caso, potresti voler consentire alla tua rete interna di parlare direttamente con MySQL come mostrato di seguito.

iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT

20. Consenti traffico Sendmail o Postfix

Le seguenti regole consentono il traffico di posta. Può essere sendmail o postfix.

iptables -A INPUT -i eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT

21. Consenti IMAP e IMAPS

Le seguenti regole consentono il traffico IMAP/IMAP2.

iptables -A INPUT -i eth0 -p tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 143 -m state --state ESTABLISHED -j ACCEPT

Le seguenti regole consentono il traffico IMAPS.

iptables -A INPUT -i eth0 -p tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 993 -m state --state ESTABLISHED -j ACCEPT

22. Consenti POP3 e POP3S

Le seguenti regole consentono l'accesso POP3.

iptables -A INPUT -i eth0 -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT

Le seguenti regole consentono l'accesso POP3S.

iptables -A INPUT -i eth0 -p tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 995 -m state --state ESTABLISHED -j ACCEPT

23. Prevenire gli attacchi DoS

La seguente regola di iptables ti aiuterà a prevenire l'attacco Denial of Service (DoS) al tuo server web.

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

Nell'esempio sopra:

  • -m limit:utilizza l'estensione limit iptables
  • –limite 25/minuto:limita solo un massimo di 25 connessioni al minuto. Modifica questo valore in base alle tue esigenze specifiche
  • –limit-burst 100:questo valore indica che il limite/minuto verrà applicato solo dopo che il numero totale di connessioni avrà raggiunto il livello limit-burst.

24. Port Forwarding

L'esempio seguente instrada tutto il traffico che arriva alla porta 442 a 22. Ciò significa che la connessione ssh in entrata può provenire sia dalla porta 22 che dalla 422.

iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 --dport 422 -j DNAT --to 192.168.102.37:22

Se esegui quanto sopra, devi anche consentire esplicitamente la connessione in entrata sulla porta 422.

iptables -A INPUT -i eth0 -p tcp --dport 422 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 422 -m state --state ESTABLISHED -j ACCEPT

25. Registra i pacchetti eliminati

Potresti anche voler registrare tutti i pacchetti eliminati. Queste regole dovrebbero essere in fondo.

Innanzitutto, crea una nuova catena chiamata LOGGING.

iptables -N LOGGING

Quindi, assicurati che tutte le restanti connessioni in entrata passino alla catena LOGGING come mostrato di seguito.

iptables -A INPUT -j LOGGING

Quindi, registra questi pacchetti specificando un "prefisso log" personalizzato.

iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7

Infine, elimina questi pacchetti.

iptables -A LOGGING -j DROP

Tutte le 25 regole di iptables di cui sopra sono in formato shell script:iptables-rules

Articoli precedenti nella serie iptables:

  • Esercitazione sul firewall di Linux:tabelle IPTables, catene, nozioni fondamentali sulle regole
  • IPTables Flush:elimina/rimuove tutte le regole su RedHat e CentOS Linux
  • Linux IPTables:come aggiungere regole firewall (con l'esempio di SSH consentito)
  • Linux IPTables:esempi di regole in entrata e in uscita (SSH e HTTP)

Linux
  1. 40 comandi di base di Linux usati frequentemente

  2. I 7 spazi dei nomi Linux più utilizzati

  3. [Linux]:15 comandi YUM più utilizzati con esempi

  4. Comandi Linux più semplici con 10 esempi

  5. 7 Esempi di comandi Linux df

Comandi Linux usati frequentemente dagli amministratori di sistema Linux – Parte 4

Comandi Linux usati frequentemente dagli amministratori di sistema Linux – Parte 3

Comandi Linux usati frequentemente dagli amministratori di sistema Linux – Parte 2

Comandi Linux usati frequentemente dagli amministratori di sistema Linux – Parte 1

Linux du Command Esempi più utili

Come proteggere un firewall Linux con le regole IPtables