-->
当前位置:首页 > 运维 > 正文内容

漏扫报告中的高危端口屏蔽

Luz1年前 (2023-08-18)运维1947

背景

扫描出很多漏洞,领导要求应急处理,可以不用管系统功能。

于是决定读取文件夹内的绿盟漏扫报告,提取漏洞对应端口,通过ssh连接服务器使用iptables进行端口屏蔽。

image.png

image.png


服务器漏洞端口屏蔽

import docx
import os
import time
from win32com import client as wc
import paramiko
#转换格式
path="G:\\"
word = wc.Dispatch("Word.Application")
files=[]
for file in os.listdir(path):
    if file.endswith(".doc"): #排除文件夹内的其它干扰文件,只获取".docx"后缀的word文件
        files.append(path+file)
for file in files:
    print(file)
    doc = word.Documents.Open(file) #打开word文件
    #time.sleep(1)
    doc.SaveAs("{}x".format(file), 12)#另存为后缀为".docx"的文件,其中参数12指docx文件
    doc.Close
word.Quit()  #格式转换
def run(host_ip, username, password, command):
    print(command)
    ssh = paramiko.SSHClient()
    try:
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(host_ip, 22, username, password)
        print('===================exec on [%s]=====================' % host_ip)
        stdin, stdout, stderr = ssh.exec_command(command, timeout=300)
        out = stdout.readlines()
        for o in out:
                print (o.strip('\n'))
    except:
        print('error, host is [%s]' % (host_ip))
    ssh.close()
        
path=os.getcwd()
word = wc.Dispatch("Word.Application")
files=[]
for file in os.listdir(path):
    if file.endswith(".docx"): #排除文件夹内的其它干扰文件,只获取".docx"后缀的word文件
        files.append(file)
for file in files:
    fn=file
    #print(fn)
    ip=file.split('.docx')[0]
    print(ip)
    index=0
    doc=docx.Document(fn)
    for i in doc.tables[1].rows:
        for col_index,cell in enumerate(i.cells):
            if index%4==0:
                index=index+1
                if('端口' in cell.text or '-' in cell.text or '22' in cell.text):
                    continue
                #print(cell.text)
                iptables='iptables -I INPUT -p tcp --dport '+cell.text+" -j DROP"
                run(ip,'root','password',iptables) #屏蔽端口
            else:
                index=index+1
    run(ip,'root','password','iptables -I INPUT -s 127.0.0.1 -j ACCEPT') #设置白名单
    run(ip,'root','password','iptables -I INPUT -s 172.21.201.0/24 -j ACCEPT') #设置白名单
    run(ip,'root','password','iptables -I INPUT -i lo -j ACCEPT')  #设置白名单
    
    print('\n\n')


屏蔽完以后再慢慢处理漏洞,注意要是漏洞涉及ssh端口的,一定要删掉,手动处理,不然屏蔽完就连不上了。

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。