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.

Frank Bannister
la source

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
Zenham
la source
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.

Kevin M
la source
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.

Thiagodrv
la source
1

Une fois que vous êtes satisfait de vos règles, vous souhaiterez probablement les enregistrer . Les commentaires dans ce lien ont plusieurs options sur la façon de procéder.

Ufw est un générateur de règles iptables facile à utiliser pour les besoins simples . Le paquet est disponible dans debian unstable.

Essayez également Firestarter . Disponible en lenny.

Pas maintenant
la source
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.

Giomanda
la source