审计,服务安全,补丁

案例1:部署audit监控文件
案例2:加固常见服务的安全
案例3:使用diff和patch工具打补丁


1.案例1:部署audit 监控文件  (现在用堡垒机,或者自研)
审计: 基于实现配置的规则生成日志,记录可能发生在系统上的事件,不会提供额外的安全保护,但是会发现记录违反安全策略的人或行为.
步骤
1.配置audit
1)装包
   [root@proxy3 ~]# yum -y install audit
   [root@proxy3 audit]# cat /etc/audit/audit.conf
      log_file = /var/log/audit/audit.log          日志文件路径
   [root@proxy3 audit]# systemctl start auditd
   [root@proxy3 audit]# systemctl enable auditd
2)配置审计规则
   [root@proxy ~]# auditctl -s //查询状态
   [root@proxy ~]# auditctl -l //查看规则
   [root@proxy ~]# auditctl -D //删除所有规则
 语法
 语法格式:auditctl -w path -p permission -k key_name   临时的
      [root@proxy ~]# auditctl -w /etc/passwd -p wa -k passwd_change
         //设置规则所有对passwd文件的写、属性修改操作都会被记录审计日志
      [root@proxy3 audit]# auditctl -l
          -w /etc/passwd -p wa -k passwd_change
 永久生效: 将规则写入配置文件
      [root@proxy ~]# vim /etc/audit/rules.d/audit.rules
##########################
案例2: 加固常见服务安全
 1.优化Nginx服务的安全配置:删除不要的模块、修改版本信息、限制并发、拒绝非法请求、防止buffer溢出
 2.优化MySQL数据库的安全配置:初始化安全脚本、密码安全、备份与还原、数据安全
 3.优化Tomcat服务器:隐藏版本信息、删除默认测试页面
步骤:
优化nginx
1) 删除不要的模块
[root@proxy ~]# tar -xf nginx-1.12.tar.gz
[root@proxy ~]# cd nginx-1.12
[root@proxy nginx-1.12]# ./configure
 >–without-http_autoindex_module \ //禁用自动索引文件目录模块
 >–without-http_ssi_module       with开头 是默认不会安装的模块  without 是默认安装的,
[root@proxy nginx-1.12]# make
[root@proxy nginx-1.12]# make install
2)隐藏版本号 (不然容易被别人根据版本的bug来攻击)
  [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
… …
http{
server_tokens off; //在http下面手动添加这么一行
… …
}
[root@proxy ~]# nginx -s reload
[root@proxy ~]# curl -I http://192.168.4.5 //查看服务器响应的头部信息
3)限制并发量
  需要 ngx_http_limit_req_module 模块
开始ab 测试
Concurrency Level: 100           
Time taken for tests: 0.018 seconds
Complete requests: 100       全部完成
写入限制:
  http{
… …
limit_req_zone $binary_remote_addr zone=xxx :10m rate=1r/s;
server {
listen 80;
server_name localhost;
limit_req zone=xxx burst=5; 漏斗超过5个则报错
}
1M可以存储8千个IP信息,10M可以存储8万个主机连接的状态,容量可以根据需要任意调整
每秒中仅接受1个请求,多余的放入漏斗
测试:
Concurrency Level: 100
Time taken for tests: 5.002 seconds
Complete requests: 100  
Failed requests: 94            失败94
________________________
步骤二:数据库安全
1)初始化安全脚本
[root@proxy ~]# systemctl status mariadb
//确保服务已启动
[root@proxy ~]# mysql_secure_installation
//执行初始化安全脚本
[root@web1 ~]# mysql -uroot -p123456
             
2)密码安全
1种:
 # mysqladmin -uroot -predhat password ‘mysql’   通过历史命令,可以看到明文密码
   //修改密码,旧密码为redhat,新密码为mysql
2种:
  先进入mysql
  MariaDB [(none)]> set password for root@‘localhost’=password(‘redhat’);
  Query OK, 0 rows affected (0.00 sec)
  
MariaDB [(none)]> select user,host,password from mysql.user;
±----------±-------------±------------------------------------------+
| user | host | password |
±----------±-------------±------------------------------------------+
| root | localhost | *E74858DB86EBA20BC33D0AECAE8A8108C56B17FA |
| root | 127.0.0.1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | ::1  | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| wordpress | localhost | *C260A4F79FA905AF65142FFE0B9A14FE0E1519CC |
| wordpress | 192.168.2.11 | *C260A4F79FA905AF65142FFE0B9A14FE0E1519CC |
±----------±-------------±------------------------------------------+
5 rows in set (0.00 sec)

在 ~/bash_history 里面也有记录,记得清理
  ~/mysql_history 也有记录
  [root@web1 ~]# cat .mysql_history
   select user,host,password from mysql.user;
   set password for root@‘localhost’=password(‘redhat’);

3)数据备份与还原
备份
[root@proxy ~]# mysqldump -uroot -predhat mydb table > table.sql
     //备份数据库中的某个数据表
[root@proxy ~]# mysqldump -uroot -predhat mydb > mydb.sql
      //备份某个数据库
[root@proxy ~]# mysqldump -uroot -predhat --all-databases > all.sql
       //备份所有数据库
还原
[root@proxy ~]# mysql -uroot -predhat mydb < table.sql //还原数据表
[root@proxy ~]# mysql -uroot -predhat mydb < mydb.sql //还原数据库
[root@proxy ~]# mysql -uroot -predhat < all.sql //还原所有数据库
4)数据库安全
创建一个数据数据账户 4.5
MariaDB [(none)]> grant all on . to tom@‘192.168.2.5’ identified by ‘123’;
抓包
tcpdump -w log -i any src or dst port 3306   抓取源或目标端口是3306的数据包,保存到log文件中
客户端(192.168.4.100)从远程登陆数据库服务器(192.168.4.5)
[root@client ~]# mysql -utom -p123 -h 192.168.4.5
//在192.168.4.100这台主机使用mysql命令登陆远程数据库服务器(192.168.4.5)
//用户名为tom,密码为123
MariaDB [(none)]> select * from mysql.user;
//登陆数据库后,任意执行一条查询语句

[root@proxy ~]# tcpdump -A -r log
//使用tcpdump查看之前抓取的数据包,很多数据库的数据都明文显示出来

步骤三:tomcat 安全

##################
案例三: 使用diff (生成补丁)patch  (打补丁)
使用diff对比文件差异
使用diff生成补丁文件
使用patch命令为旧版本打补丁
____________________
#diff test1.sh test2.sh       //查看文件差异   
2c2,3        第2行换成 右边的第二行 , 再加第三行
< echo “hello wrld”
 > echo “hello the world”
 > echo “test file”

#diff -u test1.sh test2.sh       //查看差异,包含头部信息
— test1.sh 2020-05-11 17:23:25.881292795 +0800
+++ test2.sh 2020-05-11 17:23:44.495292795 +0800
@@ -1,2 +1,3 @@
#!/bin/bash      第一行不动
-echo “hello wrld”    删去
+echo “hello the world”  加上
+echo “test file”     加上

生成补丁
diff -u test1.sh test2.sh > test.patch

[root@web3 lib]# yum -y install patch
[root@web3 lib]# patch -p0 < test.patch   打补丁
patching file test1.sh
[root@web3 lib]# cat test1.sh
#!/bin/bash
echo “hello the world”
echo “test file”
__________________________________
//patch -pnum(其中num为数字,指定删除补丁文件中多少层路径前缀)  |
//如原始路径为/u/howard/src/blurfl/blurfl.c                |
//-p0则整个路径不变                         |
//-p1则修改路径为u/howard/src/blurfl/blurfl.c               |
//-p4则修改路径为blurfl/blurfl.c                     |
//-R(reverse)反向修复,-E修复后如果文件为空,则删除该文件       |
___________________________________| 
patch -RE < test.patch //还原旧版本,反向修复

步骤三:对比目录文件  #思想是雄心的结晶,它见解独立.
1)实验环境
[root@proxy ~]# mkdir demo
[root@proxy ~]# cd demo
[root@proxy demo]# mkdir {source1,source2}
[root@proxy demo]# echo “hello world” > source1/test.sh
[root@proxy demo]# cp /bin/find source1/
[root@proxy demo]# tree source1/ //source1目录下2个文件
|-- find
-- test.sh [root@proxy demo]# echo "hello the world" > source2/test.sh [root@proxy demo]# echo "test" > source2/tmp.txt [root@proxy demo]# cp /bin/find source2/ [root@proxy demo]# echo "1" >> source2/find [root@proxy demo]# tree source2/ //source1目录下3个文件 |-- find |-- test.sh– tmp.txt
//注意:两个目录下find和test.sh文件内容不同,source2有tmp.txt而source1没有该文件


2)制作补丁
[root@proxy demo]# diff -u source1/ source2/
//仅对比了文本文件test.sh;二进制文件、tmp都没有对比差异,仅提示,因为没有-a和-N选项
[root@proxy demo]# diff -Nu source1/ source2/
//对比了test.sh,并且使用source2目录的tmp.txt与source1的空文件对比差异。
[root@proxy demo]# diff -Nua source1/ source2/
//对比了test.sh、tmp.txt、find(程序)。
_____________

diff -Nuar source1/ source2/ > source.patch
patch -p1 < …/source.patch

http-tools

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值