python端口扫描报警

简介:

前言

     服务器安全问题,对于我们运维人员来说都是不可忽视的,虽然我们没有安全工程师那么牛掰,但是我们也要尽量的避免被黑,即使我们被黑了,上面跑了别的应用,我们要立刻马上收到报警信息,尽量减少损失。好了说重点,今天我写了python端口扫描的脚本,如果开启了异常的端口,管理员会立马收到邮件信息,看代码!

一、端口扫描脚本

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
68
69
70
71
72
73
74
#!/usr/bin/python
#coding=utf8
#Author zhaodong
#www.tshare365.com
import  sys,os,nmap
import  multiprocessing
import  httplib,smtplib
from  email.MIMEText  import  MIMEText
from  email.Header  import  Header
reload (sys)
sys.setdefaultencoding( 'utf8' )
#设置收件人邮箱改成你自己的
mailto_list = [ 'zhaodong@tshare365.tv' ]
mail_host = "smtp.163.com"   #设置服务器
mail_user = "tshare365@163.com"     #用户名
mail_pass = "www.tshare365.com"    #密码
mail_postfix = "163.com"   #发件箱的后缀
def  send_mail(to_list,sub,content):
         me = "服务器端口异常报警" + "<" + mail_user + "@" + mail_postfix + ">"
         msg  =  MIMEText(content,_subtype = 'plain' ,_charset = 'utf_8' )
         msg[ 'Subject' =  sub
         msg[ 'From' =  me
         msg[ 'To' =  ";" .join(to_list)
         try :
            server.login(mail_user,mail_pass)
            server.sendmail(me, to_list, msg.as_string())
            server.close()
            return  True
         except  Exception, e:
            print  str (e)
            return  False
def  HostCheck(ipaddr):
         nm  =  nmap.PortScanner()
         call  =  nm.scan(ipaddr,  '22-65535' # scan host 127.0.0.1, ports from 22 to 443
         nm.command_line()  # get command line used for the scan : nmap -oX - -p 22-443 127.0.0.1
         nm.scaninfo()  # get nmap scan informations {'tcp': {'services': '22-443', 'method': 'connect'}}
         nm.all_hosts()  # get all hosts that were scanned
         for  host  in  nm.all_hosts():
                 for  proto  in  nm[host].all_protocols():
                         pass
                 lport  =  nm[host][proto].keys()
                 lport.sort()
                 for  port  in  lport:
                         if  port  in  White_PORT:
                                 print  line
                         else :
                                 line  =  "HOST:  %s\tTCP/UDP: %s\tPORT : %s\t  异常端口"  %  (host, proto, port)
                                 = file ( '/tmp/Problem_info.txt' , 'a' )
                                 f.write( "\r\n" )
                                 f.write(line)
                                 f.close()
  
if  __name__  = =  "__main__" :
         INPUT_IP  =  os.path.join(os.getcwd(), "IP.txt" )
         INPUT_IP_LINES  =  sum ( 1  for  line  in  open (INPUT_IP))
         OPEN_INPUT_IP  =  open (INPUT_IP)
         if  INPUT_IP_LINES >  30 :
                 process_number  =  30
         else :
                  process_number  =  INPUT_IP_LINES
         #设置白名单端口 
         White_PORT = [ 22 , 80 , 3306 ]
         pool  =  multiprocessing.Pool(processes = process_number)
         for  IP  in  OPEN_INPUT_IP.readlines():
                 IP  =  IP.strip( '\n' )
                 pool.apply_async(HostCheck,(IP,))
         pool.close()
         pool.join()
         #判断Problem_info文件是否存在
         if  os.path.exists( "/tmp/Problem_info.txt" ):
                 infor = os.popen( "cat /tmp/Problem_info.txt" ).read()
                 #发送邮件报警
                 send_mail(mailto_list, "zhaodong" ,infor)
                 os.system( "rm -rf /tmp/Problem_info.txt" )

注释: 如果代码是放在/root/目录下 ,需要在/root/ 目录下建立一个IP.txt 的文件,在里面写上你需要扫描的IP。

二、报警邮件

98










本文转自 xinsir999 51CTO博客,原文链接:http://blog.51cto.com/xinsir/1616106,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
网络协议 安全 测试技术
21.2 Python 使用Scapy实现端口探测
Scapy 是一款使用纯Python编写的跨平台网络数据包操控工具,它能够处理和嗅探各种网络数据包。能够很容易的创建,发送,捕获,分析和操作网络数据包,包括TCP,UDP,ICMP等协议,此外它还提供了许多有用的功能,例如嗅探网络流量,创建自定义协议和攻击网络的安全测试工具。使用Scapy可以通过Python脚本编写自定义网络协议和攻击工具,这使得网络安全测试变得更加高效和精确。
94 0
21.2 Python 使用Scapy实现端口探测
|
14天前
|
监控 Python
Python监控主机是否存活,并发报警邮件
Python监控主机是否存活,并发报警邮件
|
Web App开发 存储
Python+selenium 自动化-操作已启用的chrome浏览器实例演示,chrome启用调试端口方法
Python+selenium 自动化-操作已启用的chrome浏览器实例演示,chrome启用调试端口方法
506 0
Python+selenium 自动化-操作已启用的chrome浏览器实例演示,chrome启用调试端口方法
|
6月前
|
Python
python 扫描局域网主机、爆破端口
python 扫描局域网主机、爆破端口
48 0
|
6月前
|
网络协议 Python
21.13 Python 实现端口流量转发
端口流量转发(Port Forwarding)是一种网络通信技术,用于将特定的网络流量从一个端口或网络地址转发到另一个端口或地址。它在网络中扮演着一个非常重要的角色,在Python语言中实现端口转发非常容易。如下这段代码实现了一个基本的TCP端口映射,将本地指定端口的流量转发到指定的远程IP和端口。实现方式是在接收到本地客户端连接请求后,创建一个线程,将本地连接和远程连接之间的数据传输通过线程分别实现,这样就实现了数据在本地和远程之间的单向流动,从而实现了TCP端口映射。
138 0
21.13 Python 实现端口流量转发
|
6月前
|
Python
144 python网络编程 - UDP端口问题
144 python网络编程 - UDP端口问题
16 0
|
9月前
|
Python
【从零学习python 】74. UDP网络程序:端口问题与绑定信息详解
【从零学习python 】74. UDP网络程序:端口问题与绑定信息详解
123 0
|
9月前
|
Linux Python
【从零学习python 】71. 网络端口及其作用
【从零学习python 】71. 网络端口及其作用
54 0
|
Python
python脚本基于端口开启服务识别信息收集
python脚本基于端口开启服务识别信息收集
191 0
|
Python
Python编程:Tornado获取客户端的端口port
Python编程:Tornado获取客户端的端口port
73 0