it-swarm.it

iptables: consente alcuni ips e blocca tutte le altre connessioni

Come posso consentire determinati ips e bloccare tutte le altre connessioni in iptables?

27
David

Ho scritto un post sul blog sulle regole base di Iptables per l'utente desktop molto tempo fa e probabilmente dovresti leggerlo, e il suo articolo collegato su Designful Firewall Design . Ma pre kernel 2.6.39 (che include ipset e potresti volerlo usare per gli IP nella whitelist se hai più di 10 nella whitelist (dove 10 è arbitrario)).

Innanzitutto gestiamo lo stato che sappiamo di voler accettare o eliminare e le interfacce.

iptables -P FORWARD DROP # we aren't a router
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP # Drop everything we don't accept

Se vuoi solo fare un'autorizzazione solo tramite IP, senza stato

iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -A OUTPUT -d 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP

probabilmente ti imbatterai in problemi nel fare questo, e suggerisco di usare lo stato per semplificarti la vita. Ad esempio, non consentire -i lo e -o lo sicuramente causerà problemi per alcune applicazioni.

29
xenoterracide

Ecco un esempio (non testato!) Che blocca solo incoming connessioni. Sono consentite connessioni tramite l'interfaccia di loopback, provenienti da 192.168.3.x, ICMP o alla porta SSH. Tutte le altre connessioni vengono rifiutate.

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.3.0/24 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT

La regola seguente consentirà solo il tuo IP e bloccherà tutti gli altri IP sulla porta 22 o ssh. Prova con un nuovo terminale prima di disconnetterti.

iptables -I INPUT -p tcp ! -s yourIPaddress --dport 22 -j DROP
7
Ishtiyaque Noori

Ecco un esempio di lavoro completo.
Fa anche funzionare le applicazioni (ri: il mio commento su keepass non si avvia)

https://github.com/skironDotNet/linux-allow-only-single-ip

0
Pawel Cioch