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