一、re正则表达式模块
1.匹配普通字符
findall函数:在正则中找到匹配到的所有子串,并返回一个列表,如果没有匹配到就返回空
search函数:扫描整个字符串,并且返回第一个,如果没有成功匹配就返回空
2.元字符匹配
\d:获取所有数字0-9
\D:匹配非数字
\w:匹配所有单词字符,包括大小写、数字、下划线、中文
\W:匹配剩下的 空格、换行符、特殊字符
3.匹配空白字符
\s: ' '空格、\n换行符、\t制表符、\r回车符
4.{ } 匹配标定字符数量
5.特殊数量符号
特殊字符符号控制的是紧挨着该符号左边的字符or字符集
*:匹配前一个字符0 or 无限次
+:匹配前一个字符1 or 无限次
.:匹配除换行符\n意外的任意1个字符
6.字符组
把字符用()括起来,将匹配成的字符串分组
7.匹配参数模式
findall有默认的第三个参数,是参数模式
re.I :忽略大小写
re.S :匹配空白符
多个参数用管道符隔开
二、subprocess模块
执行命令并将输出劫持实现日志的监控
用于启动新的进程的模块,可以用于外部命令,获取进程的输出,向进程发送输入和等待进程结束。
多进程协同
1.os.system函数:缺点是阻塞式
2.multiprocessing模块:密集型的计算
3.subprocess模块
subprocess.Popen:底层,输入输出管道PIPE
subprocess.run:执行指定的命令,等待命令执行完成后返回一个对象
subprocess.call:执行指定命令,返回命令执行的状态
subprocess.check_call:上述功能,区别是会输出报错
subprocess.getoutput:执行命令,返回结果
创建两个进程通过管道符连接起来
三、日志分析
/var/log/cron 记录系统的定时任务
/var/log/cups 打印信息的日志
/var/log/message 记录系统重要信息日志
/var/log/btmp 登录失败
/var/log/lastlog 最后一次登录
/var/log/wtmp 成功登录记录
/var/log/secure 登录日志
/var/log/utmp 目前登录用户的信息
黑名单:/etc/hosts.deny 白名单:/etc/hosts.allow
登录成功:Accepted password for root from XXXX port
登录失败:Failed password for root from XXXX port XXX
服务:地址:允许/封禁 ssh/ftp/smb/telnet 关键字(all) 禁止or运行所有服务
Linux设置黑白名单实验
攻击机:kali 192.168.3.192;利用hydra进行用户名密码爆破
靶机:Centos 192.168.3.186
成功得到结果
查看靶机中的登录日志:cd /var/log vim secure
靶机中设置黑名单
编辑黑名单,封禁攻击机地址
攻击机已经登录失败
尝试爆破,已经无法连接了,证明黑名单设置成功
四、项目实现
项目实现逻辑梳理
step1:打开安全日志,了解哪些是在爆破
step2:对安全日志进行实时监控;查看失败还是成功
step3:解析日志每一行的内容,找出正在爆破的IP
step4:设置一个阈值,超过阈值之后直接封禁(把他的IP放入黑名单中)
脚本
总结
爆破阻断实现:要学会看安全日志分析哪些是攻击IP,找出尝试爆破的IP地址直接封禁此IP。