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

Réseau/Web Python Discussion :

Python : surveillance SSH


Sujet :

Réseau/Web Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 17
    Points : 6
    Points
    6
    Par défaut Python : surveillance SSH
    Bonsoir à tous et toutes

    je me permets d'écrire ici afin de demander 2 -3 infos concernant le Python. Voila très débutant en la matière j'aimerai créer un script qui surveille et ban des adresses IP après un nombre X de tentative de connexion en ssh sur un serveur web (je sais que fail2ban fait tout cela).


    Voici ma démarche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    import os
    import pickle
    import re
     
    ##  Definition des variables
    #############################
     
    MAX_ESS = 6
    #DELAY =
     
    # Mettre ici les adresses IP autorisees a faire une connexion SSH
    AUTH_IP = ['192.168.1.1','192.168.2.1']
     
    #Saisir ici l'adresse mail de l'administrateur
    EMAIL = "pierre.martin@hotmail.fr"
     
    ##  Changement du port SSH par defaut : 22 -> 22022
    ###################################################
     
    ssh_config = open("sshd_config.txt","r")
    chaine=ssh_config.read().replace('Port 22','Port 22022')
    ssh_config.close()
    f=open("sshd_config.txt",'w')
    f.write(chaine)
    f.close()
     
     
    ##  Mise en place des regles
    ####################################################
     
    ## Ajout de la regle qui permet de surveiller les connexions SSH
    os.system("iptables -t filter -A INPUT -m conntrack --ctstate NEW -m tcp -p tcp --dport ssh -j LOG --log-prefix \"IPT-IN-SSH\" ")
    os.system("iptables -t filter -A INPUT -m conntrack --ctstate NEW -m tcp -p tcp --dport ssh -j ACCEPT")
     
    # creation du fichier log
    os.system("touch /VAR/LOG/SSH_CONNEXIONS")
     
    # redirection des logs ssh vers le fichier adequate
    #/var/log/logauth.log
    prefix = ["IPT-IN-SSH"]
    FICH_LOG = open ("logauth.log.txt","r")
    FICH_SSH_LOG = open ("SSH_CONNEXIONS.txt","a")
    chaine=FICH_LOG.read()
    for prefix in chaine :
        pickle.dump (chaine, FICH_SSH_LOG) # copie toutes les lignes contenant le prefix dans le fichier log ssh mais la ca marche poooo!!!!!! 
    FICH_LOG.close()
    FICH_SSH_LOG.close()
     
    # creation du fichier IP a BANNIR
    os.system("touch /var/log/BAN_IP")
     
    # recherche des adresses IP et copie vers fichier BAN_IP
    # comptabilisation du nombre de tentative si superieur a MAX_ESS -> BAN + envoie mail vers admin
     
    balise = 'Failed password for invalid user a from '
    balise2 = 'Failed password for root from '
    end_balise = ' port'
    motif = balise + '.*' + end_balise
    motif1= balise2 + '.*' + end_balise
     
    FICH_SSH_LOG = open ("SSH_CONNEXIONS.txt","r")
    BAN_IP = open("BAN_IP.txt","a")
     
    texte = FICH_SSH_LOG.read()
    FICH_SSH_LOG.close()
    .......
    et la je suis paumé je vois pas comment d'une part filtrer les adresses IP pour les mettre dans un fichier tiers, et de l'autre compter le nombre de ligne afin de lancer une commande...
    si quelqu'un pouvait mettre sur une piste...

    Merci

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Est-ce-que ce ne serait pas plus simplement ceci que tu veux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    prefix = "IPT-IN-SSH"   # Pourquoi une liste ["IPT-IN-SSH"] ?
    FICH_LOG = open ("logauth.log.txt","r")
    FICH_SSH_LOG = open ("SSH_CONNEXIONS.txt","a")
    lines = FICH_LOG.readlines()
    for line in lines:
        if prefix in line:
            FICH_SSH_LOG.write(line)  # Qu'est-ce que pickle vient faire là ?
    FICH_LOG.close()
    FICH_SSH_LOG.close()

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    deja merci pour la réponse.
    j'ai cherché un peu partout sur la toile, comment rediriger une chaine de caractère vers un fichier et je suis tombé sur pickle. Le but de l'ajout prefixe était de permettre de repérer vite les log SSH. Cette partie du code marche nikel, je n'avais pas pensé a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lines = FICH_LOG.readlines()
    for line in lines:


    en attendant j'ai commencé à avancer dans mon script en essayant de comptabiliser les nombres de tentatives de connexions, si > a 6 et ne fait pas partie des adresses autorisées le but sera de les ban.

    Quand j'aurai un peu plus avancé je me permettrais de revenir vers vous

    encore merci

Discussions similaires

  1. [Python 3.X] Script python de surveillance H24
    Par JokerAs dans le forum Général Python
    Réponses: 3
    Dernier message: 11/05/2015, 16h28
  2. Python et SSH
    Par otobenzina dans le forum Réseau/Web
    Réponses: 5
    Dernier message: 20/08/2012, 12h40
  3. Connexion SSH sur un script Python
    Par otobenzina dans le forum Linux
    Réponses: 1
    Dernier message: 28/05/2012, 13h25
  4. Conseil Python + SSH pour gerer du cisco
    Par hell_de_phoenix dans le forum Réseau/Web
    Réponses: 4
    Dernier message: 13/06/2011, 21h14
  5. Surveiller les connexion SSH
    Par evguen dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 22/08/2008, 17h35

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