IPTables n'autorise que l'accès localhost

58

Au fil des années, j'ai eu du mal à comprendre iptables. Chaque fois que j'essaie de lire les pages de manuel, mes yeux commencent à briller.

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

Quelles conditions (ou configuration, si quelqu'un se sent généreux) dois-je utiliser Google pour autoriser uniquement l'hôte localhost à accéder à un port donné?

iptablessuck
la source
2
Sur quel port fonctionne ce service?
Bart De Vos
44344, c'est un service écrit en interne
iptablessuck
1
Je voudrais changer mon pseudo temporairement pour "iptablesrules" mais je ne peux pas
Art Shayderov
@ Art, ils ne font que sucer parce que je ne les comprends pas :)
iptablessuck
@iptablessuck en fait, on dirait que je peux le faire. Mais je ne vais pas parce que je ne suis pas sûr de pouvoir le changer :)
Art Shayderov

Réponses:

65

Si par service vous entendez un port spécifique, les deux lignes suivantes devraient fonctionner. Changez le "25" pour le port que vous essayez de restreindre.

iptables -A INPUT -p tcp -s localhost --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j DROP
Hyppy
la source
1
"Tout ce qui vient de localhost sur le port 25, acceptez" et la deuxième règle dit "Lâchez tout ce qui entre dans le port 25". La première ligne est traitée en premier, ce qui permet à localhost. Toute autre chose sera supprimée par la deuxième ligne. Oui?
iptablessuck
C'est correct!
Hyppy
4
@ Hyppy, comment voudriez-vous "annuler" cela?
Testeur
10
@tester tapez à nouveau ces commandes, mais remplacez-les -Apar-D
pepoluan
1
@Astronaut type 'sudo service iptables save' pour enregistrer les modifications. puis redémarrez. vous pouvez vérifier si les modifications ont été enregistrées en tapant 'sudo iptables -L'
Vinayak le
30

Je recommanderais:

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

Parce que les paquets auto-adressés n'ont pas nécessairement 127.0.0.1 comme source, mais ils «entrent» à partir de l' lointerface.

Maintenant, si vous voulez vraiment comprendre, iptablesla première chose à faire est de télécharger et d’imprimer de bons diagrammes expliquant les relations entre les netfiltertables. Voici deux excellents:

Enfin, lisez beaucoup de iptablesHOWTO. Les exemples pratiques vous aideraient à devenir vraiment rapide :)

Pepoluan
la source
ty! los'affiche pour moi après avoir utilisé ces commandes avec la dernière commande de ce lien cyberciti.biz/faq/howto-display-linux-iptables-loaded-rules iptables -L -v -n --line-numbers
2
@Gracchus Je trouve qu'il est beaucoup plus facile à utiliser iptables-save, enregistrer la sortie dans un fichier, l'éditer avec vimou emacs, et réimporter le fichier édité aveciptables-apply
pepoluan
Je pense que selon le cas d'utilisation, la deuxième règle devrait explicitement REJECTER au lieu de laisser tomber silencieusement. Est-il abandonné en silence en tant que meilleure pratique? Est-ce que REJECT est sécuritaire à utiliser?
M. Doomsbuster
1
@ tech-pro Oui, REJECT est sûr à utiliser. Cela dépend de ce que vous essayez d'accomplir et de votre volonté de faire preuve de courtoisie envers les personnes qui essaient d'utiliser le port. REJECT renverra un paquet TCP RST indiquant au client que la machine est en service mais que le port est fermé. Si vous fermez un port que les gens peuvent légitimement s'attendre à utiliser, alors REJECTER est une bonne chose. Si vous prévoyez uniquement des scanners de ports, DROP est préférable.
Law29
1
@ x-yuri Par exemple, je cours en unboundtant que cache DNS, devant dnscrypt-proxy. unboundse lie à 127.0.53.1:53, et dnscrypt-proxyse lie à 127.0.53.2:53. Lorsqu'une application demande à un serveur non lié ou à un proxy dnscrypt de résoudre un nom de domaine complet, devinez quelle est l'adresse source de proxy non lié / dnscrypt-proxy.
pepoluan