一、RHEL 7系统审计
审计的目的:基于事先配置的规则生成日志,记录可能发生在系统上的事件(正常或者非正常),审计不会为系统提供额外的安全保护,但是它会发现和记录违反安全策略的人及其对应行为。
审计能够记录的日志内容:
a)日期与事件以及事件的结果;
b) 触发事件的用户;
c) 所有认证机制的使用都可以被记录,如ssh等
d) 对于关键数据文件的修改行为都可以被 记录

audit 审计分三个部分:1、控制规划:用于更改审计系统本身的配置和设置
2、文件系统的规划:文件或者目录监视
3、系统调用规划:用于监视由任何进程或者特定用户进行的系统调用
audit 主要用来记录安全信息。用于系统安全事件的追溯。记录内核信息、包括文件的读写、权限的更改;
auditctl :即时控制审计守护进程行为的工具;
auditd: audit守护进程负责把内核产生的信息写入到硬盘,这些信息由应用程序和系统活动触发产生;
/var/log/audit/audit.log
aureport :查看和生成审计报告的工具;
ausearch: 查找审计事件的工具;
auditspd : 转发事件通知给其他应用程序。而不是写入到审计日志文件中;
autrace : 一个用于跟踪进程的命令。
(syslog 日志系统用来记录系统中的各种信息。如硬件警报和软件日志,属于应用层,不能记录太多数据。
rsyslog 是在syslog基础上扩展的,可以理解为多线程增强的syslog。 如果audit因任何原因未运行,审计消息会发送到 rsyslog中。)
一、部署audit
主配置文件:/etc/audit/audit.conf
记录审计规划的文件: /etc/audit/audit.rules
查看文件:#man audit
1、安装audit软件包
#yum - y install audit
# cat /etc/audit/audit.conf
日志文件 :log_file =/var/log/audit/audit.log
# systemctl start auditd
#systemctl enable auditd
2、 配置审计
auditctl 命令控制审计系统并设置规划决定哪些行为会被记录。
auditctl [选项] filter ,action -S (系统调用号或者名字) syscall -F (规划域)condition -K (审计规则关键词) labal
—filter :user exit task exclude 说明哪个内核规则匹配过滤器应用在事件中
---- action :always 是 never 否 :是否审核事件
—syscall : 2 、 all 、 open等。(type=SYSCALL 值显示此消息由内核的系统调用发生的)
— condition : euid=0 ;arth=b64;
— lable :标记审核事件并检查日志
# auditctl -s 查询状态
# auditctl -l 查看规则
#auditctl -D 删除所有规则
3、定义临时规则
文件系统的规划 -----auditctl -w path -p [r w x a] -k key-name
----path 需要审计的文件和目录
----权限可以是:r w x a , a用来改变目录的属性
----key-name 方便识别是哪个规则生成的日志
修改配置文件 #/etc/audit/auditd.conf
11行 num_logs=5 日志轮询数目 默认为5,小于2不轮询
16行 max_log_file=6 日志文件大小,大于这个设定值就执行17行
17行 max_log_file_action=ROTATE 轮询
4、定义永久规则
写入规则记录文件:/etc/audit/rules.d/audit.rules
# vim /etc/audit/rules.d/audit.rules
-w /etc/passwd -p wa -k passwd_changes
-w /usr/sbin/fdisk -p x -k partition_disks
5、审计日志
5.1 定义一个规则
#auditctl -w /etc/ssh/sshd_config -p warx -k sshd_config
查看日志:#taif /var/log/audit/audit.log
-----type 类型
-----msg 为(time_stamp:ID),时间是data+%s
-----arch=c000003e ,代表x86_64(16进制)
----success=yes/no 事件是否成功
-----a0-a3是程序调用时前4个参数,16进制的编码
-----ppid 父进程ID
-----auid 是审核用户的ID su - test 依然能追踪su 前的账户
-----uid gid 用户和组
-----tty 从哪个终端执行的
-----comm=“cat” 用户在命令行执行的命令
-----exe ="/bin/cat" 实际程序的路径
-----key=“sshd_config” 关键字
-----type =CWD 用来记录当前工作目录
—cwd="/home/username"
------type=PATH
–ouid 对象所有者的id
—ogid 对象所有组的id
5.2 搜索日志
ausearch 默认会搜索文件: /var/log/audit/audit.log
----ausearch option -if file_name 指定文件名
#ausearch -k shhd_config -i 根据key搜索日志, -i为交互操作
生成所有用户失败事件的总结报告:
#ausearch -u --fialed --summary -i
生成系统调用事件报告
#aureport -s -i --summary
(图形化工具 :seaudit seaudit 允许用户查看和过滤日志文件的内容,支持syslog和audit 两种日志格式)
二、系统日志
2.1 一般包括系统启动时候的日志,包括自启动的服务: /var/log/boot.log
2.2 记录所有登录失败信息,非文本,使用 # last -f /var/log/btmp
2.3 cron计划任务的日志 :#/var/log/cron
2.4 记录跟内核缓冲信息的日志 :/var/log/dmesg
2.5 记录所有用户最近的信息 ,用lastlog 查看 # lastlog /var/log/lastlog
2.6 记录着系统运行电子邮件服务器的日志信息 :/var/log/maillog
2.7 记录整体系统信息 :/var/log/message
三、服务安全
-----Nginx 安全优化:最小化安装,删除不需要的模块、修改版本信息、限制并发、拒绝非法请求、防止buffer溢出
-----Mysql 安全优化:初始化安全脚本、密码安全、备份与还原、数据安全
-----Tomcat 安全优化:隐藏版本信息、降权启动、删除默认测试页面
nginx服务的安装:
安装依赖关系的包 :gcc gcc-c++ openssl openssl-devel zlib zlib-devel pcre pcre-devel
#yum -y install gcc gcc-c++ openssl openssl-devel zlib zlib-devel pcre pcre-devel
#tar -zxf nginx-1.12.2.tar.gz
#cd nginx-1.12.2/
#./configure (添加模块–with ;删除模块:–without ; #configure --help 查看)
#/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 启动nginx服务
#ps -ef | grep nginx 查看服务进程跟端口信息
# 验证nginx配置文件是否正确 :#cd /usr/local/nginx/sbin
# ./nginx -t
.#/configure >–without-http_autoindex_module \ 禁止自动索引文件目录模块
–without-http_ssi_module
3.1修改版本信息
3.2 隐藏版本号信息(server_tokens off)
#vim /usr/local/nginx/conf/nginx.conf
http {
server_token off; //在http 下面手动添加
}
## /usr/local/nginx/sbin/nginx -s reload 重新读取配置文件
#curl -I http://172.25.0.11
页面仍然显示nginx
# cd /root/nginx-1.12.2/
# vim +48 src/http/ngx_http_header_filter_module.c (将49行的nginx 换成自定义的,50行Server:定义;51行一样)
# ./configure
#make && make install
#killall nginx 杀死进程
#/usr/local/nginx/sbin/nginx 启动服务
#curl -I http://172.25.0.11
3.3 限制并发量
(DDOS攻击者会发送大量的并发量,占用服务资源,包括连接数、带宽等,这样会导致正常用户处于等待或者无法访问服务器的状态,nginx提供一个ngx_http_limit_req_module模块,可以降低DDOS攻击风险)
# vim /usr/local/nginx/conf/nginx.conf
http{

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
listen 80;
server_name localhost;
limit_req zone=one burst=5;
}
}
//limit_req_zone 语法:limit_req_zone key zone=name:size rate=rate;
上面的案例意思:将客户端ip信息存储在名为one的共享内存内,内存空间为10M,每秒仅接收一个请求,多余放漏斗,漏斗超过5个就报错,容量自己可以调整。
# /usr/local/nginx/sbin/nginx -s reload
客户端测试 # ab -c 100 -n 100 http://172.25.0.11/

3.4 拒绝非法的请求
GET 请求指定的页面信息,并返回实体主体
HEAD 类似GET,只是用户获取报头
POST 向指定资源提交数据进行处理请求
DELETE 请求服务器删除指定的页面
PUT 向服务器特定的位置上传资料
#curl -i -X GET http://172.25.0.11 - i 选项:访问服务器页面时,显示HTTP的头部信息
# curl -i -X HEAD http://172.25.0.11 -X 选项: 指定请求服务器的方法
设置让Nginx拒绝非法请求:
# vim /usr/local/nginx/conf/nginx.conf (如果用户使用非GET或者POST方式访问网站,则return返回444)
http {
server {
listen 80;
if ( requestmethod!(GET∣POST)request_method !~^(GET|POST)requestm​ethod! (GET∣POST) ) {
return 444;
}
}
}
# /usr/local/nginx/sbin/nginx -s reload
验证 : # curl -i -X HEAD http://172.25.0.11
curl: (52) Empty reply from server
3.5 防止buffer溢出
当客户端连接服务器时,服务器会启用各种缓存,用来存放连接的状态信息,如果攻击者发送大量的连接请求,而服务器不对缓存做限制的话,内存数据就有可能溢出(空间不足),调整各种buffer参数,可以有效降低溢出的风险。
# vim /usr/local/nginx/conf/nginx.conf
http {
client_body_buffer_size 1k;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 2 1k;
}
重启 # /usr/local/nginx/sbin/nginx -s reload
四、数据库安全
4.1 初始化安全脚本
安装完mariadb或者mysql 后,默认root没有密码,并提供了一个任何人都可以操作的test测试数据库。
脚本:mysql_secure_installation脚本,该脚本可以帮助管理员为root设置密码,并禁止root从远程其他主机登陆数据 库,并删除测试性数据库test.
# yum -y install mariadb mariadb-server
#systemctl start mariadb
# systemctl enable mariadb
#mysql_secure_installation 执行初始化安全脚本 (设置的密码为123456)
4.2 密码安全
手动修改数据库的密码:# mysqladmin -uroot -p123456 password ‘mysql’ (旧密码是123456,新密码mysql)
# mysql -uroot -pmysql
MariaDB [(none)]> set passwprd for root@‘localhost’=password(‘redhat’); (使用账户数据库,修改密码为redhat)
MariaDB [(none)]> select user,host,password from mysql.user;
这里有个问题,密码通过命令行修改,#history 就可以查看设置的密码是啥,因为历史记录中记录的是明文密码。
同时,数据库海有一个binlog日志有明文密码。
解决办法:1–设置history的记录数; 2–使用防火墙从TCP层设置ACL(禁止外网接触数据库)
4.3 数据备份与还原
4.3.1 备份数据库 (用户名为root 密码为redhat)
# mysqldump -uroot -predhat --all-databases > all.sql 备份所有的数据库
# mysqldump -uroot -predhat mydb > my.sql 备份mydb数据库
# mysqldump -uroot -predhat mydb table > table.sql 备份mydb 的table表
还原数据库
# mysqldump -uroot -predhat < all.sql 还原所有的数据库
# mysqldump -uroot -predhat mydb < my.sql 还原mydb数据库
# mysqldump -uroot -predhat mydb < table.sql 还原mydb 数据表
4.3.2 数据安全

部分内容等后续补充!!
五、使用diff和patch工具打补丁
在linux系统中diff命令可以生成补丁文件,然后使用patch 命令为有问题的程序打补丁。
5.1 使用diff对比文件的差异
5.2 使用diff生成补丁文件

例子:#vim test1.sh
# vim test2.sh
# diff test1.sh test2.sh 查看文件差异
#diff -u test1.sh test2.sh 查看差异及包含头部信息
diff 命令: -u 输出统一的内容的头部信息(打补丁使用),计算机知道哪个文件需要修改
-r 递归对比目录中的所有资源 (可以对比目录)
-a 所有的文件视为文本 (包括二进制)
-N 无文件视为空文件
----N 说明: ----A目录下没有txt文件,B目录下有txt文件
diff比较A B 时,默认会提示txt只有B里面有,(无法对比差异,修复文件)补丁信息会说明如何从空文件修改后变为txt文件。
5.3 使用patch命令为旧版本打补丁
#yum -y install patch
#systemctl start patch
#diff -u test1.sh test2.sh > test.patch
#patch -p0 <test.patch 打补丁
#patch -RE <test.patch 还原旧版本 ,反向修复
patch :(选项) — -pnum (num为数字,指定删除补丁文件中多少层路径前缀)
— -p0 则整个路径不变
— -p1 则修改除了第一路径外的剩下路径的内容
— -p2 同上
— -R (reverse)反向修复,-E 修复后如果为空文件则删除该文件

六、AIDE 系统入侵检测
Advanced Intrusion Detection Environment
是系统自带的一个入侵检测工具,主要目的是检查文件的一致性,包括文件是否被更改,文件属性是否发生变化,
文件被修改的时间等。一旦出现AIDE监控的文件被篡改的情况,就会发出警告,通知系统管理员。
6.1 配置AIDE
6.1.1安装包:]# yum -y install aide

6.1.2 查看配置文件/etc/aide.conf 里的默认规则
]# cat /etc/aide.conf | grep -A20 ‘These’
##These are the default rules.

6.1.3 aide常用的命令
aide : -i, --init 初始化数据库
-C , – check 检查数据库
-u , --update 更新数据库

6.1.4 配置监控规则
例如,监控/etc/shadow 文件为例
——先修改配置文件/etc/aide.conf 将88行之后的内容全部注释掉#,
然后再结尾添加:/etc/shadow NORMAL

6.1.5 测试
]# aide --init 初始化数据库
]# useradd testuser 创建一个测试用户
]# aide --check 检查数据库
Couldn’t open file /var/lib/aide/aide.db.gz for reading 报错:
因为没有aide.db.gz文件,此时还不能对文件进行监控
]# cd /var/lib/aide/
aide]# mv aide.db.new.gz aide.db.gz
aide]# ll
aide]# aide -C
###All files match AIDE database. Looks okay! (因为之前没有数据库相当于这个第一个,所有没有报错)
]# useradd testuser2
]# aide -C
AIDE 0.15.1 found differences between database and filesystem!! 发出警告!!
并提示了发生变化的文件changed files,以及文件大小,时间mtime 和ctime

注意:检测完之后可以用 aide -u 更新数据库,更新之后也会重新生成 /var/lib/aide/aide.db.gz。
因为每次更新或初始化时都会生成 /var/lib/aide/aide.db.gz,而数据库读取的文件是aide.db.gz
所以,要把aide.db.new.gz重命名为aide.db.gz。

RHEL 7系统审计、系统日志文件、服务安全及打补丁 AIDE 系统入侵检测相关推荐

  1. Linux系统之AIDE(入侵检测工具)

    AIDE简介: AIDE(Advanced Intrusion Detection Environment,高级入侵检测环境)是个入侵检测工具,主要用途是检查文档的完整性.能够使用下列算法: sha1 ...

  2. deepin系统中.txt文件图标显示内容问题_深度系统Deepin 20最新正式版发布:从DDE到应用全面升级-Deepin 20,深度系统 ——快科技(驱动之家旗下媒体)-...

    距离Deepin 20正式版发布一个月后,社区版本迎来了第一次更新(1003). 本次从DDE到应用全面进行了升级,对桌面环境.应用进行功能优化和问题修复,同时本次也推送磁盘管理器.相机应用,邮件和手 ...

  3. iOS 屏蔽系统更新描述文件更新!快把烦人的系统更新提示关掉!

    我们以前分享过关于 iOS 系统屏蔽系统更新提示的方法,但是可能文章中提及的 App 过于敏感,文章被删除了! 刚好有人问 iOS 系统更新提示怎么去掉?而前段时间描述文件又更新了可以使用了,由于前段 ...

  4. deepin系统中.txt文件图标显示内容问题_深度系统Deepin 20最新正式版发布:全面升级_业界资讯...

    距离Deepin 20正式版发布一个月后,社区版本迎来了第一次更新(1003). 本次从DDE到应用全面进行了升级,对桌面环境.应用进行功能优化和问题修复,同时本次也推送磁盘管理器.相机应用,邮件和手 ...

  5. linux和windows双系统互拷文件乱码问题,linux和windows双系统互拷文件乱码问题

    如果你需要在linux下面用到windows下的文件,拷贝上去后经常发现中文显示乱码..原因是Windows中默认的文件格式是 GBK(gb2312),而Linux一般都是UTF-8.比较繁琐的方法是 ...

  6. deepin系统中.txt文件图标显示内容问题_深度系统更新(deepin 20 1003)

    距离deepin 20正式版发布一个月后,社区版本迎来了第一次更新(1003).本次从DDE到应用全面进行了升级,对桌面环境.应用进行功能优化和问题修复,同时本次也推送磁盘管理器.相机应用,邮件和手机 ...

  7. linux系统下 新建文件夹,使用ln命令在Linux系统中创建连接文件

    导读 在Linux中ln命令用来为文件创建连接,连接类型分为硬连接(Hard Link)和符号连接(Symbolic Link)两种,默认的连接类型是硬连接.如果要创建符号连接必须使用"-s ...

  8. android 服务日志文件,Android系统日志文件位置

    有几种方法可以查看系统日志 – 但是查找日志文件的位置要比较困难.我将列出3个选项,允许您查看日志(在设备或计算机上),但我不知道它们保存在哪里.我可能错了,但从我收集的内容来看,Android系统并 ...

  9. 弹性文件服务(Scalable File Service,SFS)

    弹性文件服务(Scalable File Service,SFS) 弹性文件服务(Scalable File Service,SFS)提供按需扩展的高性能文件存储(NAS),可为云上多个弹性云服务器( ...

最新文章

  1. 兀键和6键怎么判断_湖南槽钢经销商告诉您,槽钢的优劣状况应该怎么判断,注意这6点...
  2. 2018年薪资最高的15个技术岗
  3. 干旱对数据中心的影响
  4. python自定义函数找最大值_python – 查找用户定义函数的局部最大值和最小值
  5. ps里面怎么插入流程图_学会这3个方法,5分钟能绘制出好看又高级的流程图
  6. [css] 写一个动画,向上匀速移动100px,向下以1.5倍速度移动200px,一直反复循环
  7. LeetCode 931. 下降路径最小和(动态规划)
  8. 理解 loader 的工作流
  9. oracle tcp 上限,操作系统用户最大进程数限制maxuproc
  10. hdu1023-----卡特兰数
  11. 阿里云服务器搭建k8s
  12. qs计算机圣安排名,2020年QS世界大学排名圣安德鲁斯大学排名第100
  13. react Hook useState()
  14. Candide3人脸动画模型
  15. 面向对象开发期末复习概述(三)
  16. 用大白菜装centos7_u盘安装centos 卡住大白菜怎么用u盘装win7系统
  17. golang web 服务器 request 与 response 处理
  18. Qt 微内核架构实践
  19. mysql之连接查询
  20. threejs封装加载 .glb 格式模型,修改贴图

热门文章

  1. 终极WordPress安全指南-分步指南(2020)
  2. Python练习题1.变量类型练习 华氏温度转摄氏温度 圆面积周长计算 判断闰年
  3. JSON是什么,有什么用,怎么写json
  4. 亚利桑那州立大学周纵苇:研习 U-Net ——现有的分割网络创新 | AI 研习社74期大讲堂...
  5. 《乐高EV3机器人搭建与编程》一2.1 零件储存箱
  6. Ubuntu 18.04 ———(Intel RealSense D435i)运行VINS-Mono
  7. 学软件测试英语差,学习软件测试常见问题:英语不好可以学会软件测试吗?
  8. Sentinel整合Dubbo限流实战
  9. Android APP架构设计——MVP的使用示例
  10. 操作记录-2020-11-08:精简代码处理RNA_seq数据