系统审计
什么是审计
- 基于事先配置的规则生成日志,记录可能发生在系统上的事件
- 审计不会为系统提供额外的安全保护,但是会发现并记录违反安全策略的人及其对应的行为
审计能记录的日志内容:
- 日期与事件、事件结果
- 出发事件的用户
- 所有认证机制的使用都可以被记录,如ssh
- 对关键文件数据的修改行为等
审计的案例:
- 监控文件访问
- 监控系统调用
- 记录用户运行的命令
- 审计可以监控网络访问行为
ausearch
,根据条件过滤审计日志aureport
,生成审计报告
yum -y install audit
systemctl start auditd
systemctl enable auditd
文件 | 说明 |
---|---|
/var/log/audit/audit.log |
日志文件 |
/etc/audit/auditd.conf |
配置文件 |
/etc/audit/rules.d/audit.rules |
规则文件 |
auditctl -h # 查看帮助
auditctl -l # 查看规则
auditctl -s # 查看状态
auditctl -D # 删除所有规则
1)定义临时规则
定义文件系统规则,语法:
auditctl -w path -p permission -k key_name
- path为需要审计的文件或目录
- 权限可以是r/w/x/a(a:文件或目录的属性发生改变)
- key_name为可选项,方便区分哪些规则生成特定的日志项
例:
auditctl -w /etc/passwd -p wa -k passwd_change
auditctl -w /usr/sbin/fdisk -p x -k disk_part
auditctl -w /etc -p w -k etc_change
2)定义永久规则
vim /etc/audit/rules.d/audit.rules # 规则文件
-w /etc/passwd -p wa -k passwd_change # 写到文件末尾
-w /usr/sbin/fdisk -p x -k disk_part
-w /etc -p w -k etc_change
- 日志查询
ausearch -k KEY_NAME
ausearch -k passwd_change
ausearch -k disk_part
ausearch -k etc_change
查询结果解析:
1.执行的命令是什么 comm="fdisk" exe="/usr/sbin/fdisk"
2.谁执行的 uid=0
3.执行成功了吗 success=yes
4.什么时间执行的 time->Sat Feb 8 22:20:37 2020
网站服务安全
1)nginx:
1.删除不需要的模块
./configure --without-http_autoindex_module # 取消默认模块的安装
./configure --help # 查看默认安装的模块
/usr/local/nginx/sbin/nginx -V # 查看编译时的选项
2.修改版本信息
vim /nginx-1.12.2/src/http/ngx_http_header_filter_module.c
49 static u_char ngx_http_server_string[] = "Server: tomcat" CRLF;
50 static u_char ngx_http_server_full_string[] = "Server: tomcat" NGINX_VER CRL F;
51 static u_char ngx_http_server_build_string[] = "Server: tomcat" NGINX_VER_BU ILD CRLF;
重新编译安装 ./configure && make && make install
vim /usr/local/nginx/conf/nginx.conf
38 server_tokens off;
curl -i IP # 测试
3.限制并发
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 key zone=name:size rate=rate;
- 将客户端IP信息存储名称为one的共享内存,空间为10M 1M可以存储8千个IP的信息,10M存8万个主机
- 每秒钟仅接受1个请求,多余的放入漏斗
- 漏斗超过5个则报错
4.拒绝非法请求
- 常见HTTP请求方法
HTTP定义了很多方法,实际应用中一般仅需要get
和post
请求方法 | 功能描述 |
---|---|
GET | 请求指定的页面信息,并返回实体主体 |
HEAD | 类似于get请求,只不过返回的响应中没有具体的内容, 用于获取报头 |
POST | 向指定资源提交数据进行处理请求(例如提交表单或者 上传文件) |
DELETE | 请求服务器删除指定的页面 |
PUT | 向服务器特定位置上传资料 |
vim /usr/local/nginx/conf/nginx.conf
server {
if ($request_method !~ ^(GET|POST)$) { # 除GET和POST以外的访问请求返回错误码444
return 444;
}
....
/usr/local/nginx/sbin/nginx -s reload
测试:
curl -i -X GET 192.168.4.51 # 正常访问
curl -i -X HEAD 192.168.4.51 # 访问不到
5.防止buffer溢出
- 防止客户端请求溢出
- 有效降低Dos攻击风险
vim /usr/local/nginx/conf/nginx.conf
http{
client_body_buffer_size 1K;
client_header_buffer_size 1k;
client_max_body_size 16k;
large_client_header_buffers 4 4k;
....
}
数据库安全(mariadb)
] yum -y install mariadb mariadb-server
] systemctl start mariadb
] mysqladmin -uroot -p password 123456 # 设置密码,直接回车
] mysql_secure_installation # 安全优化脚本,根据提示输入选项
输入旧密码,配置新root密码
Remove anonymous users?(删除匿名账户)
Disallow root login remotely?(禁止root远程登录)
Remove test database(删除测试数据库)
Reload privilege(刷新权限)
来源:CSDN
作者:baiyuani
链接:https://blog.csdn.net/weixin_45157506/article/details/104221929