Con iptables del kernel completamente vuoto ( iptables -F
), questo farà ciò che chiedi:
# iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j DROP
Ciò dice che tutti gli indirizzi LAN possono comunicare con la porta TCP 22, che localhost riceve la stessa considerazione (sì, 127. * non solo 127.0.0.1) e che i pacchetti di ogni altro indirizzo che non corrispondono a quelle prime due regole vengono inseriti senza cerimonie in il secchio . È possibile utilizzare REJECT
invece DROP
se si desidera un rifiuto attivo (TCP RST) invece di rendere la porta TCP 22 un buco nero per i pacchetti.
Se la tua LAN non utilizza il blocco 192.168.0. *, Dovrai naturalmente modificare l'IP e la maschera sulla prima riga in modo che corrispondano allo schema IP della tua LAN.
Questi comandi potrebbero non fare ciò che desideri se nel tuo firewall sono già configurate alcune regole. (Di ' iptables -L
come root per scoprirlo.) Quello che succede spesso è che una delle regole esistenti prende i pacchetti che stai cercando di filtrare, in modo che l'aggiunta di nuove regole non abbia alcun effetto. Sebbene sia possibile utilizzare -I
anziché -A
con il iptables
comando per unire nuove regole nel mezzo di una catena anziché aggiungerle, di solito è meglio scoprire come vengono popolate le catene all'avvio del sistema e modificare tale processo in modo che le nuove regole vengano sempre installate in l'ordine corretto.
RHEL 7+
Sui recenti sistemi di tipo RHEL, il modo migliore per farlo è quello di utilizzare firewall-cmd
o il suo equivalente GUI. Questo dice al firewalld
demone del sistema operativo ciò che vuoi, che è ciò che effettivamente popola e manipola ciò che vedi attraverso iptables -L
.
RHEL 6 e versioni precedenti
Sui vecchi sistemi di tipo RHEL, il modo più semplice per modificare le catene di firewall quando si ordinano le cose è modificare /etc/sysconfig/iptables
. Gli strumenti firewall GUI e TUI del sistema operativo sono piuttosto semplicistici, quindi una volta che inizi ad aggiungere regole più complesse come questa, è meglio tornare ai vecchi file di configurazione. Fai attenzione, una volta che inizi a fare questo, rischi di perdere le modifiche se usi mai gli strumenti del firewall del sistema operativo per modificare la configurazione, poiché potrebbe non sapere come gestire regole artigianali come queste.
Aggiungi qualcosa del genere a quel file:
-A RH-Firewall-1-INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 22 -j DROP
Dove lo aggiungi è un po 'complicato. Se trovi una linea in quel file di cui parla --dport 22
, sostituiscila semplicemente con le tre righe sopra. Altrimenti, dovrebbe probabilmente andare prima della fine della prima riga esistente -j ACCEPT
. Generalmente, dovrai acquisire familiarità con il modo in cui funziona iptables , a quel punto il punto di inserimento corretto sarà ovvio.
Salvare quel file, quindi dire service iptables restart
per ricaricare le regole del firewall. Assicurati di farlo mentre sei loggato nella console, nel caso in cui le dita vengano modificate! Non ti vuoi bloccare fuori dal tuo computer mentre sei loggato su SSH.
La somiglianza con i comandi sopra non è una coincidenza. Gran parte di questo file è costituito da argomenti per il iptables
comando. Le differenze rispetto a quanto sopra sono che il iptables
comando viene eliminato e il INPUT
nome della catena diventa la RH-Firewall-1-INPUT
catena specifica specifica di RHEL . (Se ti interessa esaminare il file in modo più dettagliato, vedrai prima nel file in cui hanno essenzialmente rinominato la INPUT
catena. Perché? Non potrei dirlo.)