服务安全

此生再无相见时 提交于 2020-02-08 18:23:49

系统审计

什么是审计

  • 基于事先配置的规则生成日志,记录可能发生在系统上的事件
  • 审计不会为系统提供额外的安全保护,但是会发现并记录违反安全策略的人及其对应的行为

审计能记录的日志内容:

  • 日期与事件、事件结果
  • 出发事件的用户
  • 所有认证机制的使用都可以被记录,如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定义了很多方法,实际应用中一般仅需要getpost
请求方法 功能描述
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(刷新权限)
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!