Skript kontrollib OpenSSH logist ebaõnnestunud autentimisi ning lävendi ületamisel blokeerib IP aadressi: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Rsiitan (talk | contribs)
Created page with '<source lang="python"> #!/usr/bin/python import smtplib failures = {} kir=open("/etc/hosts.deny",'r+') fh = open("/home/risto/python/opensshsisend.py") for rida in fh.readlines()…'
 
Rsiitan (talk | contribs)
No edit summary
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
<source lang="python">
<source lang="python">
#!/usr/bin/python
#!/usr/bin/python
# -*- coding: utf-8 -*-
#Autor: Risto Siitan
#Ryhm:A22
#Skript kontrollib OpenSSH logist ebaõnnestunud autentimisi ning lävendi ületamisel blokeerib IP aadressi
#smtplib on vajalik e-maili saatmiseks
import smtplib
import smtplib
import sys
#loome sõnastiku
failures = {}
failures = {}
kir=open("/etc/hosts.deny",'r+')
#Kontrollime, kas logi fail on olemas:
fh = open("/home/risto/python/opensshsisend.py")
if len(sys.argv) < 2:
for rida in fh.readlines():
        print "Kasuta järgnevalt: <skripti nimi> <logifail>"
# IP-aadressid
        sys.exit(0)
if "Failed password" in rida:  
else:
r = rida.split()[12]
#avame hosts.deny ning vastava logi faili
if failures.has_key(r):
kir=open("/etc/hosts.deny",'r+')
failures[r] += 1
fh = open(sys.argv[1])
else:  
for rida in fh.readlines():
failures[r] = 1
#Leiame ebaõnnestunud sisse logimiste IP-aadressid ja lisame sõnastikku:
if "Failed password" in rida:  
r = rida.split()[12]
if failures.has_key(r):
failures[r] += 1
else:  
failures[r] = 1
#Omistame uue nime sõnastikule ning sorteerime suuremast väiksemaks(-arv):
massiiv = failures.items()
massiiv.sort(key = lambda (failures, arv):-arv)
for failures, arv in massiiv:
#Lisame lävendi(antud juhul 9):
if (arv > 9):
#Kirjutame lävendist üle olevad IP aadressid hosts.deny faili:
vana=kir.read()
kir.write(vana +'%s\n' % (failures))
kir.close()
fh.close()
#Saadame e-mailiga teavituse:
sender = 'user@mail.com'
receivers = ['user@mail.com']
message = """From: Automaat
To: Admin
Subject: Blokeeriti IP aadress
/etc/hosts.deny listi lisati uus IP aadress.
"""
try:
#elion - mail.neti.ee; starman - mail.starman.ee; uninet - smtp.uninet.ee; stv - mail.stv.ee)
  smtpObj = smtplib.SMTP('<teie smtp server>')
  smtpObj.sendmail(sender, receivers, message)       
  print "Email saadetud"
except smtplib.SMTPException:
  print "Error: Ei saanud email-i saata"


massiiv = failures.items()
massiiv.sort(key = lambda (failures, arv):-arv)
for failures, arv in massiiv:
# print failures, arv
if (arv > 9):
vana=kir.read()
kir.write(vana +'%s\n' % (failures))
kir.close()
fh.close()
sender = 'risto@siitan.com'
receivers = ['risto@siitan.com']
message = """From: From Person <from@fromdomain.com>
To: To Person <to@todomain.com>
Subject: Rünnakute teade
/etc/hosts.deny listi lisati uus IP aadress.
"""
try:
  smtpObj = smtplib.SMTP('localhost')
  smtpObj.sendmail(sender, receivers, message)       
  print "Email saadetud"
except smtplib.SMTPException:
  print "Error: Ei saanud email-i saata"
</source>
</source>

Latest revision as of 15:11, 26 May 2011

#!/usr/bin/python
# -*- coding: utf-8 -*-
#Autor: Risto Siitan
#Ryhm:A22
#Skript kontrollib OpenSSH logist ebaõnnestunud autentimisi ning lävendi ületamisel blokeerib IP aadressi
#smtplib on vajalik e-maili saatmiseks
import smtplib
import sys
#loome sõnastiku
failures = {}
#Kontrollime, kas logi fail on olemas:
if len(sys.argv) < 2:
        print "Kasuta järgnevalt: <skripti nimi> <logifail>"
        sys.exit(0)
else:
#avame hosts.deny ning vastava logi faili
	kir=open("/etc/hosts.deny",'r+')
	fh = open(sys.argv[1])
	for rida in fh.readlines():
#Leiame ebaõnnestunud sisse logimiste IP-aadressid ja lisame sõnastikku:
		if "Failed password" in rida: 
			r = rida.split()[12]
			if failures.has_key(r):
				failures[r] += 1
			else: 
				failures[r] = 1
#Omistame uue nime sõnastikule ning sorteerime suuremast väiksemaks(-arv):
	massiiv = failures.items()
	massiiv.sort(key = lambda (failures, arv):-arv)
	for failures, arv in massiiv:
#Lisame lävendi(antud juhul 9):
		if (arv > 9):
#Kirjutame lävendist üle olevad IP aadressid hosts.deny faili:
			vana=kir.read()
			kir.write(vana +'%s\n' % (failures))
	kir.close()
	fh.close()
 
#Saadame e-mailiga teavituse:
	sender = 'user@mail.com'
	receivers = ['user@mail.com']
 
	message = """From: Automaat
	To: Admin
	Subject: Blokeeriti IP aadress
	/etc/hosts.deny listi lisati uus IP aadress.
	"""
 
	try:
#elion - mail.neti.ee; starman - mail.starman.ee; uninet - smtp.uninet.ee; stv - mail.stv.ee)
	   smtpObj = smtplib.SMTP('<teie smtp server>')
	   smtpObj.sendmail(sender, receivers, message)         
	   print "Email saadetud"
	except smtplib.SMTPException:
	   print "Error: Ei saanud email-i saata"