74 votes

IPTables ne permet que l'accès à localhost

J'ai lutté tout au long des années pour obtenir une compréhension solide d'iptables. Chaque fois que j'essaie de lire les pages du manuel, mes yeux commencent à se couvrir de buée.

J'ai un service auquel je veux seulement permettre à l'hôte local d'avoir accès.

Quels termes (ou configuration, si quelqu'un se sent généreux) dois-je rechercher sur Google pour permettre à l'hôte localhost d'avoir accès à un port donné ?

2 votes

Sur quel port ce service fonctionne-t-il ?

0 votes

44344, il s'agit d'un service rédigé en interne

2 votes

J'aimerais changer mon pseudo temporairement pour 'iptablesrules' mais je n'y arrive pas.

85voto

Hyppy Points 15356

Si par service vous voulez dire un port spécifique, alors les deux lignes suivantes devraient fonctionner. Remplacez le "25" par le port que vous voulez restreindre.

iptables -A INPUT -p tcp -s localhost --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j DROP

2 votes

"Tout ce qui vient de localhost vers le port 25, accepter" et la seconde règle dit "Laisser tomber tout ce qui arrive au port 25". La première ligne est traitée en premier, autorisant localhost, et tout ce qui vient d'ailleurs sera rejeté par la deuxième ligne. Oui ?

1 votes

C'est exact !

4 votes

@Hyppy, comment pouvez-vous "annuler" cela ?

35voto

Zsolt Sz. Points 347

Je vous le recommande :

iptables -A INPUT -i lo -p tcp --dport $APP_PORT -j ACCEPT
iptables -A INPUT -p tcp --dport $APP_PORT -j DROP

En effet, les paquets auto-adressés n'ont pas nécessairement 127.0.0.1 comme source, mais ils " entrent " tous à partir de l'adresse IP. lo interface.

Maintenant, si vous vraiment veulent comprendre iptables la première chose à faire est de télécharger et d'imprimer de bons schémas expliquant les relations de la netfilter tables. En voici deux excellentes :

Enfin, lisez beaucoup de iptables HOWTO's. Les exemples pratiques vous aideront à vous mettre rapidement à niveau :)

0 votes

Ty ! lo s'affiche pour moi après avoir utilisé ces commandes et la dernière commande de ce lien cyberciti.biz/faq/howto-display-linux-iptables-loaded-rules iptables -L -v -n --line-numbers

2 votes

@Gracchus Je trouve que c'est beaucoup plus facile à utiliser iptables-save enregistrer le résultat dans un fichier, l'éditer avec vim o emacs et réimporter le fichier modifié en utilisant iptables-apply

0 votes

Je pense qu'en fonction du cas d'utilisation, la deuxième règle devrait explicitement REJETER au lieu de laisser tomber silencieusement. L'abandon silencieux est-il une bonne pratique ? L'utilisation de REJECT est-elle sûre ?

0voto

Lawrence I. Siden Points 103

J'ai eu un problème similaire. J'ai configuré iptables pour refuser les requêtes entrantes provenant de tous les ports, à l'exception de ceux que je souhaite spécifiquement autoriser. Je n'ai pas pris la peine d'autoriser 27107 parce que j'ai pensé à tort qu'iptables n'affectait que le trafic provenant d'autres hôtes, et que je n'avais pas besoin d'exposer cette instance de mongodb au monde extérieur.

J'avais tort à propos d'iptables. Lorsque j'ai ajouté cette règle, cela a fonctionné à nouveau :

-A INPUT -p tcp -m tcp -s localhost --dport 27017 -j ACCEPT

Cela indique à netfilter d'accepter le trafic entrant sur le port 27017 tant qu'il provient de l'hôte local.

Si je veux accéder à cette instance de Mongo depuis un autre hôte (comme mon ordinateur portable), je peux toujours le faire avec une commande Tunnel IP .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X