Comment autoriser certains IPS et bloquer toutes les autres connexions dans iptables?
Comment autoriser certains IPS et bloquer toutes les autres connexions dans iptables?
Réponses:
J'ai écrit un article de blog sur les règles de base d'Iptables pour l'utilisateur de bureau il y a longtemps et vous devriez probablement le lire, ainsi que son article lié sur la conception d'un pare-feu avec état . Mais pré noyau 2.6.39 (qui inclut ipsetet vous voudrez peut-être l'utiliser pour la liste blanche des IP si vous avez plus de 10 à ajouter à la liste blanche (où 10 est arbitraire)).
Commencez par gérer les états que nous savons que nous voulons accepter ou supprimer, et les interfaces.
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
Si vous voulez juste faire une autorisation par IP uniquement, sans état
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
vous êtes susceptible de rencontrer des problèmes en faisant cela, et je suggère d'utiliser l'état pour vous faciliter la vie. Par exemple, ne pas autoriser -i loet -o loentraînera certainement des problèmes pour certaines applications.
iptables -Fcela censé effacer toutes les règles, je ne peux même pas faire de ping sur
Voici un exemple (non testé!) Qui bloque uniquement les connexions entrantes . Les connexions via l'interface de bouclage, provenant de 192.168.3.x, ICMP, ou vers le port SSH sont autorisées. Toutes les autres connexions sont rejetées.
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
lodans l'exemple ci-dessus est exclu de la correspondance d'état et toujours autorisé.
La règle ci-dessous autorisera uniquement votre IP et bloquera toutes les autres IP sur le port 22 ou ssh. Testez avec un nouveau terminal avant de vous déconnecter.
iptables -I INPUT -p tcp ! -s yourIPaddress --dport 22 -j DROP
yourIPaddress-je ajouter quelques adresses IP et plages? Et si j'utilise SSH sur un port non standard comme 2888, alors la commande changerait le 22dans votre exemple en 2288? En outre, cela bloquera-t-il également rsync, sftp, etc. sur ce serveur de toutes les adresses IP, à l'exception de celles autorisées?
-p tcpest important ici car --dportne fonctionne pas sans lui. Je suggérerais également d'utiliser -j REJECTau lieu de DROPcar REJECTrend le port identique au port fermé et DROPrend les paquets destinés à ce port troués noirs. En pratique, un attaquant distant peut détecter DROPdes ports configurés à partir de ports réellement fermés.
Voici un exemple de travail complet.
Fait également fonctionner les applications (re: mon commentaire sur le non-démarrage de keepass)