telnet 扫描公网IP的22号端口是否存在暴露问题,并及时发送邮件

#!/usr/bin/env python3
#coding: utf-8
import time
import commands
import os
import smtplib
import email.MIMEMultipart
import email.MIMEText
import email.MIMEBase
import mimetypes
import email.MIMEImage
#import MIMEImage

# 功能:扫描主机的22号端口是否开放并将成功的导出日志,如果有22号端口被检测到公开出去了,则导出日志,并立即发送邮件给责任人aochaunfei

    # 第一步:打开文件(文件存放了私网IP = 公网IP 22 格式),对文件的内容一行一行的读取,同时进行telnte操作
          # a.如果telnet返回值为0说明telnet成功,则公网的22号端口被公开出去,有被攻击的风险,那么将对应得 公共IP 写入到以一个时间打头的文件里面
          # b.反之则将 公网IP 写入到另外一个时间打头的文件里面作为区分

f = open("/lianxi/aochuanfei/telnet/telnet.txt","r")
ExposePort_log = open("/lianxi/aochuanfei/telnet/ExposePort/ExposePort.log","w")
NoExposePort_log = open("/lianxi/aochuanfei/telnet/NoExposePort/NoExposePort.log","w")

for ip_port in f.readlines():
    # 此处有问题,截取出来的不是
    # os.environ[‘ip_port‘] = str(ip_port)
    #ip = str(ip_port.strip())
    ip = ip_port.split("=")[-1].strip()
    print ip
    status = commands.getstatusoutput(‘telnet $ip‘)
    if status == 0:
        ExposePort_log.write(ip_port)
    else:
        NoExposePort_log.write(ip_port)

f.close()
ExposePort_log.close()
NoExposePort_log.close()

Time = time.strftime(‘%Y-%m-%d %H:%M:%S‘,time.localtime(time.time()))
commands.getstatusoutput(‘mv /lianxi/aochuanfei/telnet/ExposePort/ExposePort.log /lianxi/aochuanfei/telnet/ExposePort/$Time_ExposePort.log‘)
commands.getstatusoutput(‘mv /lianxi/aochuanfei/telnet/NoExposePort/NoExposePort.log /lianxi/aochuanfei/telnet/NoExposePort/$Time_NoExposePort.log‘)

    # 第二步:将暴露公网IP 22号端口的文件通过邮件附件的形式发送个邮箱

From = "[email protected]"
To = "[email protected],[email protected]"
file_name = "/lianxi/aochuanfei/telnet/ExposePort/$Time_ExposePort.log"     #附件名 

server = smtplib.SMTP("smtp.163.com")
server.login("aochuanfei","aixocm123")  #仅smtp服务器需要验证时 

# 构造MIMEMultipart对象做为根容器
main_msg = email.MIMEMultipart.MIMEMultipart()

# 构造MIMEText对象做为邮件显示内容并附加到根容器
text_msg = email.MIMEText.MIMEText("请注意附件里的公网的22号端口已经暴露",_charset="utf-8")
main_msg.attach(text_msg)

# 构造MIMEBase对象做为文件附件内容并附加到根容器
ctype,encoding = mimetypes.guess_type(file_name)
if ctype is None or encoding is not None:
    ctype=‘application/octet-stream‘
maintype,subtype = ctype.split(‘/‘,1)
file_msg=email.MIMEImage.MIMEImage(open(file_name,‘rb‘).read(),subtype)
print ctype,encoding

## 设置附件头
basename = os.path.basename(file_name)
file_msg.add_header(‘Content-Disposition‘,‘attachment‘, filename = basename)#修改邮件头
main_msg.attach(file_msg)

# 设置根容器属性
main_msg[‘From‘] = From
main_msg[‘To‘] = To
main_msg[‘Subject‘] = "请注意!!!"
main_msg[‘Date‘] = email.Utils.formatdate( )

# 得到格式化后的完整文本
fullText = main_msg.as_string( )

# 用smtp发送邮件
try:
    server.sendmail(From, To.split(‘,‘), fullText)
finally:
    server.quit()

  

时间: 2024-08-26 06:09:18

telnet 扫描公网IP的22号端口是否存在暴露问题,并及时发送邮件的相关文章

使用公网IP的非80端口访问内网中SharePoint2013的Web站点

大家都知道sharepoint2013默认安装使用的80端口,http可以正常访问,但是如果你想做NAT到公网让其他城市的人通过公网IP访问你的网站,你该怎么做?不巧的是你用的是中国电信的宽带,默认的80端口给封杀了,你还能解决这个问题吗? 答案是:Yes 1.sharepoint扩展,具体是Externed web: 2.在防火墙中做NAT:例如公网IP是180.60.10.10,使用82端口,映射到内网192.168.11.201的80端口,如何做NAT可参考:http://daixuan.

利用Python3获取办公室的公网IP并修改阿里云安全组规则

阿里云Python SDK:SDK使用说明 API详情请参考:阿里云ECS API 安装依赖 #本文使用的Python版本为Python 3.7 pip install aliyun-python-sdk-core-v3 pip install aliyun-python-sdk-ecs 源代码 #!/usr/bin/python3 #coding=utf-8 ''' 当办公室的公网ip改变时,调用阿里云的API放行当前的公网IP和指定的端口 ''' import json import re

CentOS修改22默认端口 SSH默认端口

1.添加端口 vim /etc/ssh/sshd_config 将#Port 22的注释去掉并且换行加入Port 443 如果是不是增加,而是修改端口的话,建议先保留22端口,等新端口可以登录再去掉. 443其实是https使用的端口,3128是squid使用的端口.建议使用大端口,比如10000~65535以上. 重启SSH服务 /etc/init.d/sshd restart 2.防火墙开启443端口 vi /etc/sysconfig/iptables 加入-A INPUT -m stat

如何判断自己外网IP是否为真实公网IP,以及解决方案

    如何判断本地(路由器)分配的IP是否公网IP? 公网IP:全球唯一IP地址.(公网IP又分为静态公网IP和动态公网IP,如何分辨的话,进入路由器查看连接方式pppoe连接都是动态公网IP.) 有这么一种情况:拉的联通的带宽,分配的IP只能在联通内部访问,移动网络不能访问.这个IP最多只能算是"联通内的公网IP",不是真的公网IP. 有多种方法都可以判断本地(路由)IP是否公网IP,以下一一罗列以供小伙伴们参考. 一,经验法: 1,一般电信adsl带宽在未升级大带宽前是(动态)公

在局域网中通过端口号扫描服务器IP

简要说明                                                                                                                                                                                                                                                     

apache服务搭建虚拟目录和多网站,同端口同ip不同域名及同ip同域名不同端口号设置。

pache是一款Web服务器软件,有多种产品,可以支持SSL技术,支持多个虚拟主机. 它快速.可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中. 实验环境 一台linux6.5,ip为192.168.10.20.,DNS服务器ip地址为192.168.10.20: 一.创建虚拟目录配置 1.进入主配置文件设置 2.写入网页内容 3.去访问网页 4.创建虚拟目录 5.使用http://192.168.10.20/test/进行访问 二.搭建虚拟主机同端口同Ip不同域名

(转)内网网站发布到外网-nat123动态公网IP动态域名解析

环境描述: 路由器分配的是动态公网IP,且有路由器登录管理权限,网站服务器部署在路由器内部网络.如何将内网网站发布到外网大众访问? 解决方案: 内网使用nat123动态域名解析,将域名实时固定解析到路由公网IP,然后在路由器上做网站端口映射.外网访问网站时,使用动态解析域名. 实现过程: 1,明确网站内网访问地址端口,确保网站服务正常,在内网可以正常访问连接.如我内网网站访问地址是192.168.1.22:80.如果本地公网IP的80端口被屏蔽,可以更换其他网站端口,或使用nat123的80映射

linux下开启ftp的21号端口

1.先运行vsftpd服务: #service vsftpd start 2.通过iptables开放21号端口 (1) 先查看iptables设置: #iptables -nL Chain INPUT (policy ACCEPT) target     prot opt source               destination ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTA

家用电信光纤内网IP改为公网IP

本周想学习微信公众号的开发,经过一些列的准备 问题卡在了需要自己的网站和域名 二话不说买个域名 很便宜25元一年  然后想法是把家里的电脑当成服务器 用IIS搭建 然后问题来了  在路由器里设置了转发规则 但是外网却无法访问  甚至发现电脑的公网IP地址用其他外网的环境都没办法ping通 问题来了 各种查找 发现一个帖子和我情况很相似 http://www.cnblogs.com/jhjDream/p/3251894.html?utm_source=tuicool&utm_medium=refe