IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Discussion :

iptables : perte de connexion ssh lors de la configuration


Sujet :

Sécurité

  1. #1
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 122
    Points : 82
    Points
    82
    Par défaut iptables : perte de connexion ssh lors de la configuration
    Bjr,
    Sur un serveur, j'utilise les ports :
    • port 50022 : ssh
    • port 50080 : application web/java

    Au niveau d'iptables, j'ai défini quelques règles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    iptables -A INPUT -p tcp --dport 50080 -j ACCEPT
    iptables -A INPUT -p tcp --dport 50022 -j ACCEPT
    iptables -A INPUT -i lo -j ACCEPT
    iptables -P INPUT DROP
    iptables -A OUTPUT -p tcp --dport 50022 -j ACCEPT
    Ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    iptables -L --line-numbers
    Chain INPUT (policy DROP)
    num  target     prot opt source               destination         
    1    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:50080
    2    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:50022
    3    ACCEPT     all  --  anywhere             anywhere            
     
    Chain FORWARD (policy ACCEPT)
    num  target     prot opt source               destination         
     
    Chain OUTPUT (policy ACCEPT)
    num  target     prot opt source               destination         
    1    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:50022
    Celà fonctionne normalement, par contre si j'ajoute la règle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iptables -P OUTPUT DROP
    je perds la connexion : je ne comprends pas vu que j'ai la règle pour la chain OUTPUT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:50022
    Merci pour vos éclaircissements.

  2. #2
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    Forcément

    Le port 22 de la réponse est en port source ( plus en tant que destination )

    Donc tu peux remplacer cela par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    iptables -A OUTPUT -p tcp --sport 50022 -j ACCEPT
    Ou mieux ( pour éviter de refaire la même chose pour tous les services )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     iptables -A OUTPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

  3. #3
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 122
    Points : 82
    Points
    82
    Par défaut
    Bsr,
    Pas compris la réponse .... dans un premier temps

    becket répond :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    iptables -A OUTPUT -p tcp --sport 50022 -j ACCEPT
    Mais c'est ce que j'ai mis dans la chain OUTPUT
    Une deuxième lecture plus attentive me fait voir mon erreur : --dport != --sport
    C'est la punition Linux : on rappelle les précédentes commandes, on modifie les paramètres ..... et on en oublie un.
    Merci d'avoir vu l'erreur.

    Question complémentaire :
    • j'ai un client (no-ip) qui périodiquement effectue un dialogue avec un DNS dynamique en utilisant le port 8245
    • j'ai un script shell qui utilise le client de messagerie mutt pour envoyer un mail : protocole smtp, port 465


    Celà me donne les règles sur la chain OUTPUT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    iptables -A OUTPUT -p tcp --sport 8245 -j ACCEPT
    iptables -A OUTPUT -p tcp --sport 465 -j ACCEPT
    Doit-on mettre des règles sur la chain INPUT ?

    Plus généralement (c'est encore nébuleux chez moi), je me pose la question de la présence/absence de règles sur les réponses :
    Cas d'un serveur :
    • requetes entrantes -> règles chain INPUT
    • réponses sortantes du serveur -> nécessité de règles sur chain OUTPUT ??

    Cas d'un client :
    • requetes sortantes -> règles chain OUTPUT
    • réponses entrantes -> nécessité de règles chain INPUT ??

  4. #4
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    Citation Envoyé par hapalemur Voir le message

    Question complémentaire :
    • j'ai un client (no-ip) qui périodiquement effectue un dialogue avec un DNS dynamique en utilisant le port 8245
    • j'ai un script shell qui utilise le client de messagerie mutt pour envoyer un mail : protocole smtp, port 465


    Celà me donne les règles sur la chain OUTPUT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    iptables -A OUTPUT -p tcp --sport 8245 -j ACCEPT
    iptables -A OUTPUT -p tcp --sport 465 -j ACCEPT
    Doit-on mettre des règles sur la chain INPUT ?
    Par rapport à la question.

    Oui, si tu configures un DROP par défaut sur les chaines INPUT et OUTPUT, tu dois avoir une régle qui l'autorise quelque part.

    Comme je l'ai écrit, dans la première réponse, tu peux le faire de deux façons différentes :

    - Soit tu autorise port par port ce qui entre et ce qui sort ( ce qui peut être un peu fastidieux et une source d'erreur )
    - Soit tu autorises les ports qui entrent port par port et tu autorises la trafic "en relation" avec le modules state d'iptables

    Par rapport à ta proposition de règle :

    Tu sors vers une service, donc ce n'est pas un port source mais de destination ( --dport )

    Et finalement

    As tu vraiment besoin d'interdire le trafic qui sort par défaut ?

    Citation Envoyé par hapalemur Voir le message

    Plus généralement (c'est encore nébuleux chez moi), je me pose la question de la présence/absence de règles sur les réponses :
    Cas d'un serveur :
    • requetes entrantes -> règles chain INPUT
    • réponses sortantes du serveur -> nécessité de règles sur chain OUTPUT ??

    Cas d'un client :
    • requetes sortantes -> règles chain OUTPUT
    • réponses entrantes -> nécessité de règles chain INPUT ??
    TCP, c'est c'est le mode connecté. Donc pour que cela fonctionne, tu dois pouvoir recevoir des appels et envoyer des réponses.

    Mais on peut très facilement configurer tout cela.
    Imaginons que l'on héberge un serveur web ( 80 http - 443 https )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    iptables -P INPUT DROP 
    iptables -I INPUT -p tcp --dport 80 -j ACCEPT 
    iptables -I INPUT -p tcp --dport 443 -j ACCEPT 
     
    iptables -P OUTPUT  DROP 
    iptables -I OUTPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
    La dernière règle permet à tout le trafic qui a déjà une demande initiale --state ESTABLISHED de sortir. Tu ne dois le faire qu'une fois et pas à chaque port que tu veux autoriser en entrée.

  5. #5
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 122
    Points : 82
    Points
    82
    Par défaut
    Encore quelques soucis avec certaines règles.
    D'abord ce qui fonctionne, application web/java (port 50080) et ssh (port 50022); les règles dans leur écriture basique (on passera plus tard à l'écriture condensée -RELATED, ESTABLISHED)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    iptables -A INPUT -p tcp --dport 50080 -j ACCEPT
    iptables -A INPUT -p tcp --dport 50022 -j ACCEPT
    iptables -A INPUT -i lo -j ACCEPT
    iptables -P INPUT DROP
    iptables -A OUTPUT -p tcp --sport 50080 -j ACCEPT
    iptables -A OUTPUT -p tcp --sport 50022 -j ACCEPT
    iptables -P OUTPUT DROP
    :
    Avec ces règles, j'affiche la partie statique des pages web, mais je ne récupère pas les data qui sont obtenues par des requêtes Ajax. Pour un fonctionnement normal (accès aux data), je dois ajouter la règle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iptables -A OUTPUT -o lo -j ACCEPT
    Comprends pas la nécessité de rajouter l'interface loopback.

    J'ai encore quelques difficultés de compréhension de la notion de port source et de port destination.
    Après réflexion j'ai, si j'ai (bien) compris :

    Application serveur :
    • --> [INPUT] --> --dport
    • <-- [OUTPUT] <-- --sport

    Application cliente :
    • --> [OUTPUT] --> --dport
    • <-- [INPUT] <-- --sport

    Celà me donne les règles pour le client no-ip (port 8245) et pour le client de messagerie (smtp 465) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    iptables -A INPUT -p tcp --sport 465 -j ACCEPT
    iptables -A INPUT -p tcp --sport 8245 -j ACCEPT
     
    iptables -A OUTPUT -p tcp --dport 465 -j ACCEPT
    iptables -A OUTPUT -p tcp --dport 8245 -j ACCEPT
    Et avec cette configuration, celà ne fonctionne pas alors que si je mets -P ACCEPT sur les chaines [INPUT/OUTPUT] tout est OK.

  6. #6
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    Salut,

    J'espère que tu comprendra que je veille t'aider mais que je ne saurais pas te faire un cours en ligne pour expliquer en détail le fonctionnement d'iptables.

    Ce que tu dois retenir ( et en deux mots ) :

    Un pc ou un serveur peut jouer le rôle de client ou de serveur.

    • En tant que client on pose une question, qui demande quelque chose
    • En tant que serveur, on répond à une question, on fournit quelque chose



    Un échange : c'est : Le client demande, le serveur répond, le client demande, le serveur répond ... etc

    Pour faire analogie avec de la correspondance papier, on a un auteur et un destinataire.

    L'adresse : ip, correpond à l'adresse postale
    Le port au numero de porte à l'intérieur du batiment

    Donc Si Fred Rue F P 2356 écrit à LDLC Rue L port 80

    Un correspondance entre les deux :

    Auteur Fred Rue F Port 2356 -> Destinataire LDLC Rue L Port 80 : Bonjour
    Auteur LDLC Rue L Port 80 -> Destinataire Fred Rue F port 2386 : Bonjour également
    Auteur Fred Rue F Port 2356 -> Destinataire LDLC Rue L Port 80 : Ca va ?
    Auteur teur LDLC Rue L Port 80 -> Destinataire Fred Rue F port 2386 : Oui et toi ...
    ... etc etc


    Et finalement pour expliquer ce blocage, il y peut être d'autre service nécessaire.

    Le plus évident serait DNS ... no-ip ...

  7. #7
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 122
    Points : 82
    Points
    82
    Par défaut
    Citation Envoyé par becket
    Et finalement pour expliquer ce blocage, il y peut être d'autre service nécessaire.

    Le plus évident serait DNS ... no-ip ...
    Effectivement le client no-ip a besoin de la résolution de nom (udp/port 53)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    iptables -A INPUT -p udp --sport 53 -j ACCEPT
    iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
    Merci.
    Je vais m'attaquer au protocole smtp d'envoi de mail.

Discussions similaires

  1. Récupérer des valeurs d'environnement lors d'une connexion SSH
    Par ciols dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 25/05/2016, 10h50
  2. Réponses: 0
    Dernier message: 31/12/2008, 09h10
  3. Iptables pour refuser les connexions ssh sortantes
    Par NeilaK dans le forum Sécurité
    Réponses: 13
    Dernier message: 26/08/2006, 13h29
  4. Perte de connexion BD
    Par Sylvain James dans le forum XMLRAD
    Réponses: 2
    Dernier message: 30/10/2003, 10h23
  5. Perte de connexion (bis)
    Par rgarnier dans le forum XMLRAD
    Réponses: 7
    Dernier message: 28/05/2003, 11h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo