Liste blanche autorisée IP (entrée / sortie) utilisant iptables


21

J'ai quelques plages d'adresses IP auxquelles je veux que mon serveur puisse se connecter et à partir duquel les utilisateurs peuvent se connecter. Tout le reste doit être bloqué.

Comment dois-je faire cela avec iptables?

Mon système d'exploitation est une distribution Linux basée sur Debian.

Réponses:


27

Je suggère de saisir un outil de configuration de pare-feu, tel un Firestarter , et de partir de là. Voici cependant quelques notions de base.

#Flush existing rules
iptables -F
# Set up default DROP rule for eth0
iptables -P INPUT DROP
# Allow existing connections to continue
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Accept everything from the 192.168.1.x network
iptables -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT
# Allow connections from this host to 192.168.2.10
iptables -A OUTPUT -o eth0 -d 192.168.2.10 -j ACCEPT

3
Vous savez que vous pouvez formater votre code dans des messages d'erreur de serveur, en utilisant le bouton 101010. De cette façon, vos commentaires ne sortiront pas comme des cris. Sélectionnez simplement (faites glisser votre souris sur) le code, puis cliquez sur le bouton 101010 au-dessus du champ de texte.
Jason Tan

2
Ahhh merci, je ne m'en étais pas rendu compte. Maintenant je sais :)
Zenham

1
+1 pour EXISTING, RELATED - trop de gens ne le font pas.
Alnitak

1
Pour l'amour de Dieu, veuillez définir la règle de DROP par défaut EN DERNIER! Je me suis enfermé (et tout le reste!) Hors d'une machine en suivant cet ordre d'opérations.
Bendoh

1
Terrible réponse. OP ne dit rien sur la suppression de toutes les connexions actuelles. Maintenant, je suis en lock-out parce que je supposais que la réponse du haut avait du sens.
omikes

14
iptables -I INPUT -s <allowed_ip> -j ACCEPT #(repeat this line as needed)
iptables -P INPUT DROP

Cela transformera votre système en un système inexistant pour les ordinateurs non autorisés.


7

Si vous souhaitez autoriser des plages arbitraires plutôt que des sous-réseaux entiers, vous pouvez utiliser le module iptables «iprange»:

iptables -P INPUT DROP

iptables -A INPUT -m iprange --src-range 192.168.1.30-50 -j ACCEPT

par exemple, autorisera le trafic provenant de toutes les machines dont l'adresse est comprise entre 192.168.1.30 et 192.168.1.50.

Si vous souhaitez autoriser le trafic entrant et sortant vers la même plage d'adresses IP, je vous suggère de créer une chaîne spécifique autorisant ces IP et ciblant toutes les cibles d'entrée et de sortie:

--définissez les politiques par défaut à abandonner:

iptables -P INPUT DROP

iptables -P OUTPUT DROP

--créer la nouvelle chaîne:

iptables -N allowed_ips

--si la source fait partie de la plage autorisée, acceptez

iptables -A allowed_ips -m iprange --src-range 192.168.1.30-50 -j ACCEPT

- Sinon, retournez à la chaîne d'appel pour poursuivre le traitement

iptables -A allowed_ips -j RETURN

- faire en sorte que tout le trafic entrant et sortant de la machine passe par notre nouvelle chaîne

iptables -A INPUT -j allowed_ips

iptables -A OUTPUT -j allowed_ips

et c'est tout! bien sûr, vous devrez peut-être des règles supplémentaires, telles que celle autorisant tout le trafic depuis / vers l'interface lo, etc.



0

Vous pouvez également utiliser ferm que j'utilise également au cours de la dernière année et qui m'a beaucoup aidé dans des cas tels que les règles de pare-feu conditionnelles.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.