Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Configuration iptables

12 réponses
Avatar
Julien Arlandis
Bonjour,

Je voudrais filtrer les connexions entrantes sur le port 8000 à
l'exception de la machine ayant pour IP 91.121.207.XX, avec iptable j'ai
exécuté les commandes suivantes :

sudo iptables -A INPUT -s 91.121.207.XX -p tcp --destination-port 8000 -m
state --state NEW,ESTABLISHED -j ACCEPT

sudo iptables -A OUTPUT -d 91.121.207.XX -p tcp --source-port 8000 -m state
--state ESTABLISHED -j ACCEPT

Mais le port 8000 reste accessible depuis n'importe quelle machine, quelle
en est la cause ?

Pour plus de sécurité je voudrais que le service n'écoute que sur l'ip
127.0.0.1, comment faire dans ce cas pour rediriger les connexions de
91.121.207.XX sur 127.0.0.1:8000 ?


--
Ce message a été posté avec Nemo : <http://news2.nemoweb.net/?Jid=8757681ccf3ac9ed24f1b2dd22fc4b34a9e3debe@news2.nemoweb.net>

10 réponses

1 2
Avatar
Pascal Hambourg
Salut,

Julien Arlandis a écrit :

Je voudrais filtrer les connexions entrantes sur le port 8000 à
l'exception de la machine ayant pour IP 91.121.207.XX, avec iptable j'ai
exécuté les commandes suivantes :

sudo iptables -A INPUT -s 91.121.207.XX -p tcp --destination-port 8000 -m
state --state NEW,ESTABLISHED -j ACCEPT

sudo iptables -A OUTPUT -d 91.121.207.XX -p tcp --source-port 8000 -m state
--state ESTABLISHED -j ACCEPT

Mais le port 8000 reste accessible depuis n'importe quelle machine, quelle
en est la cause ?



Qu'as-tu fait pour bloquer les autres connexions ?

Pour plus de sécurité je voudrais que le service n'écoute que sur l'ip
127.0.0.1, comment faire dans ce cas pour rediriger les connexions de
91.121.207.XX sur 127.0.0.1:8000 ?



Marchera pas : le noyau empêche de se connecter à 127.0.0.0/8 depuis
l'extérieur, même suite à une redirection DNAT.
Avatar
Julien Arlandis
Le 31/08/2014 à 11:29, Pascal Hambourg a écrit :
Salut,

Julien Arlandis a écrit :

Je voudrais filtrer les connexions entrantes sur le port 8000 à
l'exception de la machine ayant pour IP 91.121.207.XX, avec iptable j'ai
exécuté les commandes suivantes :

sudo iptables -A INPUT -s 91.121.207.XX -p tcp --destination-port 8000 -m
state --state NEW,ESTABLISHED -j ACCEPT

sudo iptables -A OUTPUT -d 91.121.207.XX -p tcp --source-port 8000 -m state
--state ESTABLISHED -j ACCEPT

Mais le port 8000 reste accessible depuis n'importe quelle machine, quelle
en est la cause ?



Qu'as-tu fait pour bloquer les autres connexions ?



Rien, j'ai peur de bloquer l'accès ssh à la machine. Ce que je veux c'est
bloquer seulement les connexions entrantes sur le port 8000 sauf pour
91.121.207.XX.

Yliur propose d'ajouter la règle
iptables -P INPUT DROP
mais si je fais ça, je pourrais plus me connecter à ma machine non?

Autre question, les règles persisteront elles après un redémarrage ?

Pour plus de sécurité je voudrais que le service n'écoute que sur l'ip
127.0.0.1, comment faire dans ce cas pour rediriger les connexions de
91.121.207.XX sur 127.0.0.1:8000 ?



Marchera pas : le noyau empêche de se connecter à 127.0.0.0/8 depuis
l'extérieur, même suite à une redirection DNAT.



D'accord.
Avatar
Yliur
Le Sun, 31 Aug 14 09:04:26 +0000
Julien Arlandis a écrit :

Bonjour,

Je voudrais filtrer les connexions entrantes sur le port 8000 à
l'exception de la machine ayant pour IP 91.121.207.XX, avec iptable
j'ai exécuté les commandes suivantes :

sudo iptables -A INPUT -s 91.121.207.XX -p tcp --destination-port
8000 -m state --state NEW,ESTABLISHED -j ACCEPT

sudo iptables -A OUTPUT -d 91.121.207.XX -p tcp --source-port 8000 -m
state --state ESTABLISHED -j ACCEPT

Mais le port 8000 reste accessible depuis n'importe quelle machine,
quelle en est la cause ?



Tu n'as pas fixé la politique par défaut : par défaut tout est déjà
autorisé. Il faut préciser la politique par défaut en entrée, en plus
de tes règles d'autorisation :
iptables -P INPUT DROP

Tu peux vérifier ce qui est fixé avec "iptables -L".

Il est possible de fixer aussi les politiques par défaut pour les
connexions sortantes (OUTPUT) et les redirections (? : je ne sais pas
ce que c'est) (FORWARD).

Attention, si tu interdis toutes les autres connexions en sortie tu ne
pourras plus ouvrir de connexions depuis cette machine. Si c'est un
serveur il se peut que ce soit correct (attention quand même pour les
mises à jour, l'accès aux serveurs de temps, ce genre de choses), pour
un poste client ce n'est sans doute pas ce que tu veux.


Pour plus de sécurité je voudrais que le service n'écoute que sur l'ip
127.0.0.1, comment faire dans ce cas pour rediriger les connexions de
91.121.207.XX sur 127.0.0.1:8000 ?



Là je ne sais pas.

Je ne vois pas tellement en quoi c'est plus sécurisé si tu fais une
redirection dessus. Que veux-tu faire exactement ? Pouvoir couper les
connexions depuis l'extérieur via le pare-feu ? Si tu supprimes la
règle d'autorisation, tu obtiens le même résultat, non ?
Avatar
Julien Arlandis
Le 31/08/2014 à 11:29, Yliur a écrit :
Le Sun, 31 Aug 14 09:04:26 +0000
Julien Arlandis a écrit :

Bonjour,

Je voudrais filtrer les connexions entrantes sur le port 8000 à
l'exception de la machine ayant pour IP 91.121.207.XX, avec iptable
j'ai exécuté les commandes suivantes :

sudo iptables -A INPUT -s 91.121.207.XX -p tcp --destination-port
8000 -m state --state NEW,ESTABLISHED -j ACCEPT

sudo iptables -A OUTPUT -d 91.121.207.XX -p tcp --source-port 8000 -m
state --state ESTABLISHED -j ACCEPT

Mais le port 8000 reste accessible depuis n'importe quelle machine,
quelle en est la cause ?



Tu n'as pas fixé la politique par défaut : par défaut tout est déjà
autorisé. Il faut préciser la politique par défaut en entrée, en plus
de tes règles d'autorisation :
iptables -P INPUT DROP




Dans ce cas je voudrais bloquer seulement le port 8000, sinon je vais
perdre la connexion distante avec mon serveur.


Tu peux vérifier ce qui est fixé avec "iptables -L".

Il est possible de fixer aussi les politiques par défaut pour les
connexions sortantes (OUTPUT) et les redirections (? : je ne sais pas
ce que c'est) (FORWARD).

Attention, si tu interdis toutes les autres connexions en sortie tu ne
pourras plus ouvrir de connexions depuis cette machine. Si c'est un
serveur il se peut que ce soit correct (attention quand même pour les
mises à jour, l'accès aux serveurs de temps, ce genre de choses), pour
un poste client ce n'est sans doute pas ce que tu veux.


Pour plus de sécurité je voudrais que le service n'écoute que sur l'ip
127.0.0.1, comment faire dans ce cas pour rediriger les connexions de
91.121.207.XX sur 127.0.0.1:8000 ?



Là je ne sais pas.

Je ne vois pas tellement en quoi c'est plus sécurisé si tu fais une
redirection dessus. Que veux-tu faire exactement ? Pouvoir couper les
connexions depuis l'extérieur via le pare-feu ? Si tu supprimes la
règle d'autorisation, tu obtiens le même résultat, non ?



Ça me semble plus sécurisé dans le sens où même en cas de plantage de
iptables (mauvaise config ou autre) le service reste inaccessible de
l'extérieur.
Avatar
Yliur
Le Sun, 31 Aug 14 09:40:19 +0000
Julien Arlandis a écrit :

Le 31/08/2014 à 11:29, Yliur a écrit :
> Le Sun, 31 Aug 14 09:04:26 +0000
> Julien Arlandis a écrit :
>
>> Bonjour,
>>
>> Je voudrais filtrer les connexions entrantes sur le port 8000 à
>> l'exception de la machine ayant pour IP 91.121.207.XX, avec iptable
>> j'ai exécuté les commandes suivantes :
>>
>> sudo iptables -A INPUT -s 91.121.207.XX -p tcp --destination-port
>> 8000 -m state --state NEW,ESTABLISHED -j ACCEPT
>>
>> sudo iptables -A OUTPUT -d 91.121.207.XX -p tcp --source-port 8000
>> -m state --state ESTABLISHED -j ACCEPT
>>
>> Mais le port 8000 reste accessible depuis n'importe quelle machine,
>> quelle en est la cause ?
>
> Tu n'as pas fixé la politique par défaut : par défaut tout est déjà
> autorisé. Il faut préciser la politique par défaut en entrée, en
> plus de tes règles d'autorisation :
> iptables -P INPUT DROP


Dans ce cas je voudrais bloquer seulement le port 8000, sinon je vais
perdre la connexion distante avec mon serveur.



Je n'ai sans doute pas bien compris ce que tu voulais faire,
excuse-moi...

Effectivement, toutes les connexions non explicitement autorisées
seront interdites. Il faudrait au moins autoriser ssh, sans se tromper.
Note que si je ne dis pas de bêtises si tu interdis d'établir une
connexion depuis l'extérieur ça ne casse pas ta connexion ssh en cours,
donc tu peux faire une vérification en tentant d'établir une autre
connexion depuis l'extérieur. Euh... mais vu que tu ne semble pas avoir
un accès physique à la machine, vérifie avant quand même.

En cas de redémarrage de la machine je crois qu'une sorte de
pseudo-démon iptables se charge de sauvegarder les règles quand la
machine s'éteint, mais je ne suis pas sûr et ça dépend sans doute de la
configuration du système, donc le fonctionnement chez moi n'est pas
forcément une bonne indication.

Pour ton filtre juste sur le port 8000, je pense qu'après ta règle qui
indique que les connexions sont acceptées tu peux écrire une autre
règle du genre :
sudo iptables -A INPUT --destination-port 8000 DROP

Si je ne dis pas de bêtises, le pare-feu utilise la première règle dont
les filtres correspondent et exécute l'ordre donné en fin de ligne.
Donc ta première ligne indique que certaines connexions sur le port
8000 sont acceptées. La deuxième règle indique que ce qui arrive pour
le port 8000 (et qui n'a pas été attrapé par la première règle) est
rejeté. Ça correspond peut-être plus à ce que tu veux.


> Tu peux vérifier ce qui est fixé avec "iptables -L".
>
> Il est possible de fixer aussi les politiques par défaut pour les
> connexions sortantes (OUTPUT) et les redirections (? : je ne sais
> pas ce que c'est) (FORWARD).
>
> Attention, si tu interdis toutes les autres connexions en sortie tu
> ne pourras plus ouvrir de connexions depuis cette machine. Si c'est
> un serveur il se peut que ce soit correct (attention quand même
> pour les mises à jour, l'accès aux serveurs de temps, ce genre de
> choses), pour un poste client ce n'est sans doute pas ce que tu
> veux.
>
>
>> Pour plus de sécurité je voudrais que le service n'écoute que sur
>> l'ip 127.0.0.1, comment faire dans ce cas pour rediriger les
>> connexions de 91.121.207.XX sur 127.0.0.1:8000 ?
>
> Là je ne sais pas.
>
> Je ne vois pas tellement en quoi c'est plus sécurisé si tu fais une
> redirection dessus. Que veux-tu faire exactement ? Pouvoir couper
> les connexions depuis l'extérieur via le pare-feu ? Si tu supprimes
> la règle d'autorisation, tu obtiens le même résultat, non ?

Ça me semble plus sécurisé dans le sens où même en cas de plantage de
iptables (mauvaise config ou autre) le service reste inaccessible de
l'extérieur.



iptables est juste l'interface de configuration du pare-feu réseau du
noyau je crois. Ça m'étonnerait que le pare-feu en question puisse
tomber en panne et que tout le trafic se mette à passer (mais un avis
plus éclairé serait apprécié).
Avatar
Julien Arlandis
Le 31/08/2014 à 12:29, Yliur a écrit :
Le Sun, 31 Aug 14 09:40:19 +0000
Julien Arlandis a écrit :

Le 31/08/2014 à 11:29, Yliur a écrit :
> Le Sun, 31 Aug 14 09:04:26 +0000
> Julien Arlandis a écrit :
>
>> Bonjour,
>>
>> Je voudrais filtrer les connexions entrantes sur le port 8000 à
>> l'exception de la machine ayant pour IP 91.121.207.XX, avec iptable
>> j'ai exécuté les commandes suivantes :
>>
>> sudo iptables -A INPUT -s 91.121.207.XX -p tcp --destination-port
>> 8000 -m state --state NEW,ESTABLISHED -j ACCEPT
>>
>> sudo iptables -A OUTPUT -d 91.121.207.XX -p tcp --source-port 8000
>> -m state --state ESTABLISHED -j ACCEPT
>>
>> Mais le port 8000 reste accessible depuis n'importe quelle machine,
>> quelle en est la cause ?
>
> Tu n'as pas fixé la politique par défaut : par défaut tout est déjà
> autorisé. Il faut préciser la politique par défaut en entrée, en
> plus de tes règles d'autorisation :
> iptables -P INPUT DROP


Dans ce cas je voudrais bloquer seulement le port 8000, sinon je vais
perdre la connexion distante avec mon serveur.



Je n'ai sans doute pas bien compris ce que tu voulais faire,
excuse-moi...

Effectivement, toutes les connexions non explicitement autorisées
seront interdites. Il faudrait au moins autoriser ssh, sans se tromper.
Note que si je ne dis pas de bêtises si tu interdis d'établir une
connexion depuis l'extérieur ça ne casse pas ta connexion ssh en cours,
donc tu peux faire une vérification en tentant d'établir une autre
connexion depuis l'extérieur. Euh... mais vu que tu ne semble pas avoir
un accès physique à la machine, vérifie avant quand même.

En cas de redémarrage de la machine je crois qu'une sorte de
pseudo-démon iptables se charge de sauvegarder les règles quand la
machine s'éteint, mais je ne suis pas sûr et ça dépend sans doute de la
configuration du système, donc le fonctionnement chez moi n'est pas
forcément une bonne indication.

Pour ton filtre juste sur le port 8000, je pense qu'après ta règle qui
indique que les connexions sont acceptées tu peux écrire une autre
règle du genre :
sudo iptables -A INPUT --destination-port 8000 DROP



Merci. La syntaxe ne passe pas,
iptables v1.4.14: unknown option "--destination-port"

C'est pénible ces pertes de temps avec les manuels de commande...
Avatar
Julien Arlandis
Le 31/08/2014 à 13:03, Julien Arlandis a écrit :
Le 31/08/2014 à 12:29, Yliur a écrit :
Le Sun, 31 Aug 14 09:40:19 +0000
Julien Arlandis a écrit :

Le 31/08/2014 à 11:29, Yliur a écrit :
> Le Sun, 31 Aug 14 09:04:26 +0000
> Julien Arlandis a écrit :
>
>> Bonjour,
>>
>> Je voudrais filtrer les connexions entrantes sur le port 8000 à
>> l'exception de la machine ayant pour IP 91.121.207.XX, avec iptable
>> j'ai exécuté les commandes suivantes :
>>
>> sudo iptables -A INPUT -s 91.121.207.XX -p tcp --destination-port
>> 8000 -m state --state NEW,ESTABLISHED -j ACCEPT
>>
>> sudo iptables -A OUTPUT -d 91.121.207.XX -p tcp --source-port 8000
>> -m state --state ESTABLISHED -j ACCEPT
>>
>> Mais le port 8000 reste accessible depuis n'importe quelle machine,
>> quelle en est la cause ?
>
> Tu n'as pas fixé la politique par défaut : par défaut tout est déjà
> autorisé. Il faut préciser la politique par défaut en entrée, en
> plus de tes règles d'autorisation :
> iptables -P INPUT DROP


Dans ce cas je voudrais bloquer seulement le port 8000, sinon je vais
perdre la connexion distante avec mon serveur.



Je n'ai sans doute pas bien compris ce que tu voulais faire,
excuse-moi...

Effectivement, toutes les connexions non explicitement autorisées
seront interdites. Il faudrait au moins autoriser ssh, sans se tromper.
Note que si je ne dis pas de bêtises si tu interdis d'établir une
connexion depuis l'extérieur ça ne casse pas ta connexion ssh en cours,
donc tu peux faire une vérification en tentant d'établir une autre
connexion depuis l'extérieur. Euh... mais vu que tu ne semble pas avoir
un accès physique à la machine, vérifie avant quand même.

En cas de redémarrage de la machine je crois qu'une sorte de
pseudo-démon iptables se charge de sauvegarder les règles quand la
machine s'éteint, mais je ne suis pas sûr et ça dépend sans doute de la
configuration du système, donc le fonctionnement chez moi n'est pas
forcément une bonne indication.

Pour ton filtre juste sur le port 8000, je pense qu'après ta règle qui
indique que les connexions sont acceptées tu peux écrire une autre
règle du genre :
sudo iptables -A INPUT --destination-port 8000 DROP



Merci. La syntaxe ne passe pas,
iptables v1.4.14: unknown option "--destination-port"

C'est pénible ces pertes de temps avec les manuels de commande...



Ça a fini par marcher en faisant

sudo iptables -A INPUT -p tcp --destination-port 27017 -j DROP

Merci.



--
Ce message a été posté avec Nemo : <http://news2.nemoweb.net/?
Avatar
Julien Arlandis
Le 31/08/2014 à 13:06, Julien Arlandis a écrit :
Le 31/08/2014 à 13:03, Julien Arlandis a écrit :
Le 31/08/2014 à 12:29, Yliur a écrit :
Le Sun, 31 Aug 14 09:40:19 +0000
Julien Arlandis a écrit :

Le 31/08/2014 à 11:29, Yliur a écrit :
> Le Sun, 31 Aug 14 09:04:26 +0000
> Julien Arlandis a écrit :
>
>> Bonjour,
>>
>> Je voudrais filtrer les connexions entrantes sur le port 8000 à
>> l'exception de la machine ayant pour IP 91.121.207.XX, avec iptable
>> j'ai exécuté les commandes suivantes :
>>
>> sudo iptables -A INPUT -s 91.121.207.XX -p tcp --destination-port
>> 8000 -m state --state NEW,ESTABLISHED -j ACCEPT
>>
>> sudo iptables -A OUTPUT -d 91.121.207.XX -p tcp --source-port 8000
>> -m state --state ESTABLISHED -j ACCEPT
>>
>> Mais le port 8000 reste accessible depuis n'importe quelle machine,
>> quelle en est la cause ?
>
> Tu n'as pas fixé la politique par défaut : par défaut tout est déjà
> autorisé. Il faut préciser la politique par défaut en entrée, en
> plus de tes règles d'autorisation :
> iptables -P INPUT DROP


Dans ce cas je voudrais bloquer seulement le port 8000, sinon je vais
perdre la connexion distante avec mon serveur.



Je n'ai sans doute pas bien compris ce que tu voulais faire,
excuse-moi...

Effectivement, toutes les connexions non explicitement autorisées
seront interdites. Il faudrait au moins autoriser ssh, sans se tromper.
Note que si je ne dis pas de bêtises si tu interdis d'établir une
connexion depuis l'extérieur ça ne casse pas ta connexion ssh en cours,
donc tu peux faire une vérification en tentant d'établir une autre
connexion depuis l'extérieur. Euh... mais vu que tu ne semble pas avoir
un accès physique à la machine, vérifie avant quand même.

En cas de redémarrage de la machine je crois qu'une sorte de
pseudo-démon iptables se charge de sauvegarder les règles quand la
machine s'éteint, mais je ne suis pas sûr et ça dépend sans doute de la
configuration du système, donc le fonctionnement chez moi n'est pas
forcément une bonne indication.

Pour ton filtre juste sur le port 8000, je pense qu'après ta règle qui
indique que les connexions sont acceptées tu peux écrire une autre
règle du genre :
sudo iptables -A INPUT --destination-port 8000 DROP



Merci. La syntaxe ne passe pas,
iptables v1.4.14: unknown option "--destination-port"

C'est pénible ces pertes de temps avec les manuels de commande...



Ça a fini par marcher en faisant

sudo iptables -A INPUT -p tcp --destination-port 27017 -j DROP

Merci.




Mais maintenant je ne parviens plus à me connecter en local sur le port
8000.

J'ai pourtant rajouté

sudo iptables -A INPUT -s 127.0.0.1 -p tcp --destination-port
8000 -m state --state NEW,ESTABLISHED -j ACCEPT

sudo iptables -A OUTPUT -d 127.0.0.1 -p tcp --source-port 8000
-m state --state ESTABLISHED -j ACCEPT

où me plantais-je ?
Avatar
Yliur
Le Sun, 31 Aug 14 11:16:48 +0000
Julien Arlandis a écrit :

> Ça a fini par marcher en faisant
>
> sudo iptables -A INPUT -p tcp --destination-port 27017 -j DROP
>
> Merci.
>

Mais maintenant je ne parviens plus à me connecter en local sur le
port 8000.

J'ai pourtant rajouté

sudo iptables -A INPUT -s 127.0.0.1 -p tcp --destination-port
8000 -m state --state NEW,ESTABLISHED -j ACCEPT

sudo iptables -A OUTPUT -d 127.0.0.1 -p tcp --source-port 8000
-m state --state ESTABLISHED -j ACCEPT



Là je ne sais pas trop, il faudra sans doute attendre que quelqu'un qui
connaît mieux le sujet passe...

Attention quand même, les règles se cumulent. Tu peux voir l'état
courant avec
iptables -L

C'est plus ça que les règles que tu as tapées qu'il faut regarder.

Les options -L -v (qui affiche les compteurs de paquets concernés par
chaque règle) et -Z (remise à zéro des compteurs) t'aideront peut-être
à voir où passent tes paquets quand tu tentes la connexion.
iptables -L -v
iptables -Z
Avatar
Francois Lafont
Le 31/08/2014 13:16, Julien Arlandis a écrit :

Mais maintenant je ne parviens plus à me connecter en local sur le port
8000.

J'ai pourtant rajouté

sudo iptables -A INPUT -s 127.0.0.1 -p tcp --destination-port
8000 -m state --state NEW,ESTABLISHED -j ACCEPT

sudo iptables -A OUTPUT -d 127.0.0.1 -p tcp --source-port 8000
-m state --state ESTABLISHED -j ACCEPT

où me plantais-je ?



Sauf erreur et si j'ai bien compris le fil, tu veux pouvoir
atteindre un service qui tourne sur le port 8000 de ton serveur
et cela uniquement via les IP 91.121.207.XX et 127.0.0.1. Dans
ce cas, sans être un expert iptables (qu'on me rectifie si je
dis des bêtises), c'est sur la chaîne INPUT que tu dois jouer.
Par ailleurs, si tu te définis une script « iptables », il vaut
mieux que celui-ci vire toutes les règles au départ afin de le
rendre idempotent et de pouvoir le rejouer autant de fois que
tu veux sans mettre la pagaille dans tes règles iptables.

Avec le script ci-dessous, le port 8000 de ton serveur devrait
être accessible uniquement pour l'hôte 91.121.207.XX et le
serveur lui-même (127.0.0.1).

--------------------------------------------------------
#!/bin/sh

# Je remets l'état par défaut d'un iptables « open bar ».
# En tout cas, c'est l'état par défaut sur une Debian
# Wheezy de base. Après, ça dépend sans doute de l'OS que
# tu utilises.
iptables -t filter -F
iptables -t filter -X
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
iptables -t filter -P OUTPUT ACCEPT

iptables -t nat -F
iptables -t nat -X
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT


# On accepte les paquets provenant de 91.121.207.XX
# et avec pour port de destination 8000. Je suppose
# que XX correspond ici à une « vraie » valeur
# que tu ne souhaites pas indiquer ici. Si tu voulais
# parler d'un réseau entier, alors il faut mettre une
# adresse CIDR.
iptables -A INPUT -s 91.121.207.XX -p tcp --destination-port 8000 -j ACCEPT

# Même chose pour les paquets dont l'adresse de destination est 127.0.0.1
# (paquets qui proviendront forcément de ton serveur lui-même) :
iptables -A INPUT -d 127.0.0.1 -p tcp --destination-port 8000 -j ACCEPT

# Enfin, tout autre paquet avec comme port de destination 8000 (en tcp) sera dropé.
iptables -A INPUT -p tcp --destination-port 8000 -j DROP
--------------------------------------------------------

Attention, ce script te détruira toutes les autres règles iptables
que tu as mises en place (s'il y en a). Autre détail important, je
n'ai absolument rien testé. Mais a priori, même si ce script est
foireux, je ne vois pas comment il pourrait te casser tes connexions
ssh. Enfin, ce script est à lancer à chaque démarrage du système
car les règles iptables ne persistent pas après un redémarrage.

Pour finir, même si je crois que cela a été dit déjà, normalement
il faudrait dans le script (juste après avoir effacé toutes les
règles) mettre des politiques par défaut qui ne laissent rien passer :

iptables -t filter -P INPUT DROP
# etc.

et ensuite ajouter des règles explicites pour faire passer
seulement ce dont on a besoin. Mais clairement, si on n'a pas
d'accès physique au serveur, on peut facilement se planter
et ne plus avoir d'accès ssh à la machine. Dans ce cas, il vaut
mieux tester avant sur une machine de test sur laquelle on a
un accès physique.

--
François Lafont
1 2