基于Python的服务器自动化运维系统设计
软件研发与应用SOHWARE DEVELOPMENT&APPLICATION
基于Python的服务器自动化运维系统设计
周利荣
(衢州职业技术学院,浙江衢州324000)
摘要:分析了服务器常见安全隐患,给出了检测这些安全隐患,解决这些安全隐患,以及用Python语言实现检测、处理服务器常见的安全问题。
关键词:运维系统;管理员权限;注册表访问;防火墙
保障网络服务器的安全是一项非常重要的工作,在网络服务器中存在着大量的重要信息,为网络终端提供各种服务,所以,网络服务器的安全尤为关键。如果网络服务器存在安全隐患,那么一旦被入侵,就会泄露重要的隐私,造成不可弥补的损失,甚至网络瘫痪。
运维工作如果采用原始的手工维护方式,在实际操作中较为复杂,需要许多专业知识(注册表访问regedit 命令,netstat命令,net命令,tasktist命令,netsh命令的格式功能等)。随着信息技术的发展,网络系统会产生大量的服务器数据(系统日志、防火墙日志),这些数据已经为人工运维工作带来了较大的困难,同时会增加较多的劳动力,也会造成运维失误的情况。因此积极地利用Python实现网络自动化维护,将促进工作效率的进一步提升,保证服务器的正常运行叫
1服务器常见安全隐患
(1)系统时间不正确。原因之一是CMOS没电了,导致计算机系统时间每次开机归零。原因之二是中毒,能够修改系统时间的病毒有很多,例如:trojan.time就是这样一种病毒。某些系统如图书管理系统对系统时间比较敏感,如出错,则可使读者的借期延长而造成逾期,暂停读者借书。
设置主页(2)计算机上存在共享资源。黑客如获取IP地址及登录帐号密码,则可对共享资源进行删除、复制、修改等非法操作。
(3)计算机上存在非法用户创建的恶意的管理员账号。网站被黑客入侵后,黑客会在服务器上创建隐藏的管理员账号,得到管理员权限,以后登入可用隐藏的管理员账号,给系统造成巨大危害。
(4)计算机有损坏的硬盘。虽然服务器提供了不同级别的数据冗余备份技术,但服务器硬盘存储着重要数据,硬盘损坏应及时了解并更换。
(5)计算机上存在可被黑客利用的开放端口。如黑客利用445端口可以在局域网中访问各种共享文件夹或共享打印机。病毒正是扫描电脑上的TCP445端口,以类似于蠕虫病毒的方式传播。53端口为DNS域名服务器所开放,主要用于域名解析。如果开放DNS 服务,黑客可以通过分析DNS服务器而直接获取服务器主机的IP地址,再利用53端口突破某些不稳定的防火墙,从而实施攻击。其他常见危险端口:99、111、113、119、135、137、161[2]。
(6)防火墙被关闭。防火墙能及时发现并处理计算机网络运行时可能存在的安全风险、数据传输等问题,关闭了防火墙受
黑客攻击的机会就大,防火墙对于每一一个电脑用户的重要性不言而喻。
(7)计算机上某些服务启动,可能被黑客利用。如ipc$和默认共享依赖的服务:lanmanserver即Server服务。
(8)浏览存在恶意插件。恶意插件可用于监视用户的上网行为,并把所记录的数据报告给插件程序的创建者,以达到投放广告,盗取帐号密码等非法目的。
(9)系统存在非法进程。不少病毒和木马是以用户进程的形式出现的,很多病毒或木马也能获得系统权限,并伪装成系统进程出现在系统中,伺机造成危害。
(10)计算机上存在被黑客植入的木马程序启动项。系统启动后,木马程序会窃取电脑中的有用信息。
2检测安全隐患
(1)如何知道系统时间是否正确?使用命令:net time W127.0.0.1。
(2)如何知道系统是否存在共享资源?使用命令: net share显示本地计算机上所有共享资源。
(3)如何知道系统是否存在非法用户创建的恶意管理员账号?使用命令:net user就会列出当前服务器里的所有账号。在正常的情况下备份所有账号,如果发现有增加且非合法用户创建,可认为是非法用户创建的恶
基金项目:衢州市指导性科技攻关项目项目,项目编 号:2021075。
作者简介:周利荣(1972-),男,讲师,硕士,研究方向:计算机密码学。
2022.565
敦电脑编程技巧与维护
意管理员账号。
(4)如何知道计算机有损坏的硬盘?系统日志有类似描述:事件类型:错误;事件来源:Disk;事件ID:7;用户:N/A;计算机:SERVERDATA;描述:设备De-vice\Harddisk0\DR0有坏块。
(5)如何知道计算机上的开放端口先初始化一个 TCP socket,再调用Python方法t_ex(host-name,port)方法连接目标地址,通过该方法返回的状态代码来判断连接是否成功,返回0代表连接成功,当前主机hostname的端口port为打开状态,反之为关闭状态⑶。
(6)如何知道防火墙被关闭使用命令:netsh fire­wall show state可显示操作模式、例外模式、多播/广播响应模式、通知模式是启用还是禁用。
(7)如何知道系统是否存在非法服务?使用命令net start可显示所有服务°在正常启动的情况下备份所有服务,如果发现有增加的服务项,且系统运行缓慢,可停止或禁用增加的服务项°
(8)如何知道浏览存在恶意插件打开360安全浏览器,在地址栏输入“se://plugins/”可知所有插件名字、版本、位置、状态等信息°
(9冤如何知道系统存在非法进程?使用命令tasklist 可显示进程名称、PID、会话名、会话、内存使用等情况°在正常启动的情况下备份进程,如果发现有增加的进程,且系统运行缓慢,可删除进程。
(10)如何知道系统是否存在非法启动项?注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows \CurrentVersion\Run;HKEY_LOCAL_MACHINE\SOFTWA-RE\Microsoft\Windows\CurrentVersion\RunOnce;HKEY_L-OCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current Version\Runservices下,或在注册表HKEY_CURRENT_ USER\Software\Microsoft\Windows\CurrentVersion\RunHK-EY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Cu-rrentVersion\RunOnce下可显示所有启动项,在正常启动的情况下备份启动项,如果发现有增加的启动项,且系统运行缓慢,可删除增加的启动项°
3解决安全隐患
(1冤系统时间不正确°手动设置为正确时间°
(2)计算机上存在共享资源。删除计算机上存在的共享资源,使用命令:net share共享名/delete,如net share ipc$/delete,net share c$/delete,可删除共享资源ipc$、c$°
(3)计算机上存在非法用户创建的恶意管理员账号。删除计算机上非法用户创建的恶意管理员账号,使用命令:net user账号名/delete,女口net user lili/delete 可删除账号lili°
(4)计算机有损坏的硬盘°读取系统日志,有硬盘损坏的描述,且硬盘LED灯状态为黄闪烁,手动更换°
(5)计算机上有开放端口°用netstat命令到端口对应的进程pid,用taskkill命令结束进程即可关闭端口°以8080端口为例,netstat-aonlfindstr"8080",如为9876;使用命令taskkill/pid9876结束进程即可关闭端口°
(6冤防火墙被关闭°开启防火墙,使用命令:netsh firewall set opmode mode=enable可启用防火墙。
(7)系统存在非法服务°暂时停止服务,使用命令:net stop服务名°
(8)浏览存在恶意插件。打开360安全浏览器,在地址栏输入“se://plugins/”可知所有插件名字、版本、位置、状态等信息°如果认为是恶意插件,单击“停用”按钮或删除.DLL文件。
(9)系统存在非法进程°使用命令:taskkill/f/t/im 进程名,删除进程°
(10)系统存在非法启动项°使用注册表编辑器,展开二(10)所述注册表,在右侧窗格中显示的就是启动项,如果要删除某项启动项,只要删除注册表中相关 键值即可°
4检测、处理服务器常见的安全问题
(1)获取系统时间°方法一:使用Python创建一个datetime类对象,即w(),使用strftime()方法,即dt.strftime('%Y-%m-%d%H:%M:%S')返回系统时间°方法二:库文件os是一个操作系统接口模块,用语句import os导入,os.popen()方法可用于调用DOS命令。使用语句os.popen(net time\\127.0.0.1)获取系统时间°
(2)计算机上存在共享资源°使用os.popen("net share&")语句调用net share命令显示本地计算机上所有共享资源,并将结果保存在中°前面4行为提示信息,按行读取文件中第5行开始的行,每一行保存在字符串str中,每一行有3列内容,第1列为共享资源名°用str.split()函数分隔字符串保存在列表str1中,str1[0]即为共享资源名°将所有共享名保存在列表str2中,并显示在标签中,用户在文本框entry1中输入共享资源名,执行os.popen("net share"+()+"/delete")语句即调用命令野net share共享名/delete”删除共享资源。
662022.5
电脑编程技巧与维护
软件研发与应用SOFTWARE DEVELOPMENT&APPLICATION
(3)计算机上有非法用户创建恶意的管理员账号。正常情况下使用os.popen("net user>")语句调用net user命令显示本地计算机上所有用户账号,并将结果保存在result1_old.tXt文件中,检测时执行os.popen ("net user&")语句。打开文件,前面4行为提示信息,按行读取第5行开始的行,每一行保存在字符串str中,每一行有3列内容,均为账号,用str.split()函数分隔成列表保存在str1中。打开文件,按行读取第5行开始的行,每一行保存在字符串str中,用str.split()函数分隔成列表保存在str2中。比较str1与str2,如果有增加的用户账号,则显示在标签中,用户在文本框entry1中输入非法用户账号,执行os.popen("net user"+()+"/delete")语句即调用命令野net user用户账号/delete冶删除用户账号。
(4)计算机有损坏的硬盘。按行读取系统日志的内容存放在str中,执行str.find(“事件ID:7冶)语句,返回值>0,可认为计算机有损坏的硬盘。
(5)计算机上存在开放端口。设开放端口为port,使用语句ret=os.popen("netstat-aonlfindstr"+str(port))及ad()将结果保存在str中,str中有5列信息:协议、本地地址、外部地址、状态、PID,可用str1=re. split('\n',str)函数按行分隔成列表保存在str1中,用str2=str1.split()函数将str1分隔成列表保存在str2中,str2[4]即为PID o如果str2[3]的值为"LISTENING",即某行的状态为:"LISTENING",则对应的str2[4]即为端口port对应的进程PID,使用语句os.popen ('tas
kkill/pid'+str2[4]+'/f')关闭端口⑶。
(6)防火墙被关闭。可用语句os.popen("netsh fire­wall show state&")获取防火墙状态保存在中,按行读取,每一行保存在字符串str中,用str.split()函数分隔成列表保存在str1中,str1[2]即为通知模式是启用还是禁用。如果是禁用状态,可用os. popen("netsh firewall set opmode mode二enable")命令开启防火墙。如果是启用状态,则给出提示。
(7)系统存在非法服务。正常情况下执行命令os.popen (n et start>)可得所有服务,并保存在res 中。检测时执行os.popen(net start&)可得所有服务,并保存在中。打开 文件,前面2行为提示信息,按行读取第3行开始的行,每一行保存在字符串str中,每一行只有一列内容,即为服务描述,用str2.append(str)函数保存在列表str2 中。打开文件,前面2行为提示信息,按行读取第3行开始的行,每一行保存在字符串str中,每一行只有一列内容,即为服务描述,用str3.append (str)函数保存在列表str3中。比较str2与str3,如果有增加的服务,则显示在标签中,交由用户判断是否为非法服务。如是非法服务,用户在文本框entry1中输入非法服务,执行命令os.popen("net stop"+())停止服务。
(8)浏览器存在恶意插件。将360安全浏览器主页设为“se://plugins/”,设变量browse存放浏览器地址,执行命令os.system(browse)即打开360安全浏览器。可知所有插件名字、版本、位置、状态等信息。如果认为是恶意插件,单击“停用”按钮或删除.DLL文件。
(9)系统存在非法进程。正常情况下执行命令os.popen (tasklist>)可得所有进程,并保存在 中。检测时执行os.popen(tasklist&)可得所有进程,并保存在中。打开 文件,前面3行为提示信息,按行读取第4行开始的行,每一行保存在字符串str中,每一行有3列内容,第一列为进程名。用str.split()函数分隔字符串保存在列表str1中,str1[0]即为进程名。将所有进程名保存在列表str2 中。打开文件,前面3行为提示信息,按行读取第4行开始的行,每一行保存在字符串str中,每一行有3列内容,第一列为进程名。用str.split。函数分隔字符串保存在列表str1中,str1[0]即为进程名。将所有进程名保存在列表str3中。比较str2与str3,如发现新进程,则显示在标签中,交由用户判断是否为非法进程,如是非法进程,用户在文本框entry1中输入进程名,执行命令os.popen("taskkill/f/t/im"+())停止进程。
(10)系统存在非法启动项。在正常启动的情况下使用方法winreg.ConnectRegistry()、winreg.OpenKey()备份启动项。检测时再次执行winreg.ConnectRegistry()、winreg.OpenKey()可得所有启动项,如果发现有增加的启动项,且系统运行缓慢,可使用winreg.DeleteKey(key, sub_key)、winreg.DeleteValue(key,value)删除启动项⑷。
5系统设计及实现
5.1主要模块
检测模块。用于检测常见安全隐患:系统时间不正确、共享资源、非法的管理员账号、通过系统日志检测是否有损坏的硬盘、开放端口、防火墙被关闭、非法服务、恶意插件、非法进程、非法启动项。
解决模块。用于解决常见安全隐患:校准系统时间、删除共享资源、删除非法的管理员账号、更换损坏的硬盘、关闭开放端口、启动防火墙、删除非法服务、删除恶意插件、删除非法进程、删除非法启动项。
2022.567
'敦电脑编程技巧与维护
文件模块。生成系统日志(检测计算机是否有损坏
的硬盘, 从系统日志中读取, 需要重新生成系统日志 )、
文 件 更 新 ( 删 除 、   等 文 件 ,
将   改名为 ,   改名为 re-   等操作)。
系统设置模块。设置IP 地址、浏览器地址。检测 端 口调用 Python  方法 t_ex  (hostname,port)
方法,参数hostname 即为IP 地址;检测浏览器存在恶 意插件,需打开360安全浏览器,需要浏览器地址(浏 览器安装位置)。5.2主要控件
顶层窗口 window ,容纳所有控件;列表框控件list-
box1,用于显示检测模块的结果,带水平滚动条、垂直
滚动条;检测模块菜单(含10个子菜单)、解决模块菜
单(含10个子菜单)、文件模块菜单(含2个子菜单)、
设置模块菜单(含2个子菜单)。
子窗口 window1,用于解决模块,包含:标签label1 ( 显 示 信 息 ), 输 入 控 件 entry1, 两 个 按 钮 button1 ( 删
除)、button2 (取消)。
5.3主要变量及函数
主要变量有 3 个: open_port= [ ], global  IP_address , global  browse 。 open_port  为列表, 存放开放端口 , 变量 IP_address  存放 IP  地址, 变量 browse  存放浏览器地址。
主要函数有两个:显示文件file 的内容的函数dis ­play  (file);列表比较函数 compare  (list1,ist2),返回 list2
比list1增加的元素数目,list1、ist2可以是进程、服务、 启动项、管理员账号。6关键问题的解决
6.1获取管理员权限
使用语句os.popen()调用dos 命令关闭进程、服务、
删除共享时提示:“发生系统错误5,拒绝访问”,发生 上述错误的原因是dos 命令没有以管理员身份运行。如 果程序以管理员身份运行, 则不会发生上述错误。 可以
定义 is_admin() 函数检测程序是否以管理员身份运行。def  is_admin():try:
#确定是否正在运行的进程由Admins 组中
#的用户启动
return  ctypes.windll.shell32.IsUserAnAdmin() except:
return  False
如果程序没有以管理员身份运行,贝」调用ctypes.win- dll.shell32.ShellExecuteW  (None,"runas", utable, _ file_, None, 1) 函数以获取管理员权限。
6.2 Windows 系统日志文件导出
Windows  运行过程中会出现大量的系统日志 、 应用
程序日志、 安全日志等, 通过日志的分析可以了解服务
器的负载、健康状况,可以分析客户的行为。如计算机 有损坏的硬盘, 在系统日志中有相应的描述。
但系统日志文件(扩展名为.evt)不能直接打开,须
使用   导出 Windows  的系统日志。  可以去微软下载, 用于系统日志的备 份、转储,将系统日志转储到制表符分隔的文本文件。
例:命令 dumpel  -f  e:\event.out  -l  system  是将系统日志
保存在文件e:\event.out 中。
6.3解决UAC  (用户账号控制功能)
用户以管理员身份去运行一个程序的时候,为防止 恶意软件和间谍软件在未经许可的情况下在计算机上进 行安装或对计算机进行更改, 总是要有一个提示框, 如
果选择“否”,则以普通用户权限运行,如果选择 “是”,贝」以管理员权限运行,但会弹出两个相同的程序
界面。用户可以选择禁用UAC,但对系统的安全存在 影响。
(1) 开始菜单->附件->系统工具->任务计划程序,
打开一个计划任务来运行所要运行的程序。
(2) 在“任务计划程序”窗口单击“创建任务...”,
弹出“创建任务”对话框。在“常规”选项卡中输入名 称:yw,勾选“使用最高权限运行”。
(3) 在“操作”选项卡中输入所要执行的操作:
“启动程序”及要执行的程序(exe 、com 、bat 等)所在
位置。
(4) 在设置选项卡中勾选“允许按需运行任务”、
“请勿启动新实例”。
(5) 为任务yw 创建快捷方式。就可以成功绕过
UAC 以管理员身份运行来运行。
参考文献
[1] 杨迎,李慧颖• Python 在网络运维中的应用[J].
现代信息科技, 2020, (4) : 122-124.
[2] Zhang  Yu. Analysis  of  port  scanning  attacks. Purdue
University  [D] . 2009.
[3] 王家军,张韵.计算机网络系统端口扫描及危险端
口关闭方法研究[J].工艺与技术,2019, (33): 99-100.
[4] 张昊,贺江敏.网络安全漏洞检测技术研究及应用
[J] . 网络空间安全, 2020, 11 (9) : 84-89.
68
电脑爲技巧与维护

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。