audit监控 nmap扫描 nginx,tomcat隐藏版本信息

nmap tcpdump audit nginx tomcat mysql安全设置

nmap

格式: nmap [扫描类型] [选项] <扫描目标>

  • -sS, TCP SYN扫描(半开) 快但是默认被认为是攻击行为
  • -sT,TCP 连接扫描(全开)
  • -sU, UDP扫描
  • -sP, ICMP扫描
  • -A,目标系统全面分析
  • -n , 不执行DNS解析 默认是将扫描目标当做域名的

tcpdump

选项说明
-i指定监控的网络接口 默认监听第一个网卡
-A转换为ASCII码
-w将数据包信息保存到指定文件
-r从指定文件读取数据包信息

-i具体组合

过滤条件参数
类型host(主机)、net(网段)、port(端口)、portrange(端口范围)
方向src(源地址)、dst(目标地址)
协议tcp、udp、ip、wlan、arp…

可以使用and or not 来进行组合

举例:tcpdump -w log -i any src or dst port 3306

audit监控

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

审计能够记录的日志内容:
  • 日期与事件以及事件的结果
  • 触发事件的用户
  • 所有认证机制的使用都可以被记录,如ssh等
  • 对关键数据文件的修改行为等都可以被记录
案例
audit基本命令
命令参数说明
auditctl -s查询状态
auditctl -l查看规则
auditctl -D删除所有规则
auditctl -w path -p permission -k key_name定义临时文件系统规则 w指定文件目录 p权限wrx a(文件或目录的属性发生变化)k可选项 指定key_name方便识别哪些规则产生的日志项
环境配置
yum -y install audit
cat /etc/audit/auditd.conf
======================
local_events = yes
write_logs = yes
log_file = /var/log/audit/audit.log   #日志位置
log_group = root
log_format = RAW
flush = INCREMENTAL_ASYNC
freq = 50
max_log_file = 8
num_logs = 5
priority_boost = 4
disp_qos = lossy
dispatcher = /sbin/audispd
name_format = NONE
##name = mydomain
max_log_file_action = ROTATE
space_left = 75
space_left_action = SYSLOG
verify_email = yes
action_mail_acct = root
admin_space_left = 50
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND
use_libwrap = yes
##tcp_listen_port = 60
tcp_listen_queue = 5
tcp_max_per_addr = 1
##tcp_client_ports = 1024-65535
tcp_client_max_idle = 0
enable_krb5 = no
krb5_principal = auditd
##krb5_key_file = /etc/audit/audit.key
distribute_network = no
=====================================
systemctl enable --now auditd   

定义临时文件系统规则

auditctl -w /etc/passwd -p wa -k passwd_change
auditctl -w /etc/selinux/ -p wa -k selinux_change
auditctl -w /usr/sbin/fdisk -p x -k disk_partition
auditctl -w /etc/ssh/sshd_config -p warx -k sshd_config
#            指定文件或目录		指定权限     key_name标识用的
定义永久审计规则,修改规则配置文件
vim /etc/audit/rules.d/audit.rules
==================================
-w /etc/passwd -p wa -k passwd_changes
-w /usr/sbin/fdisk -p x -k partition_disks     #就是将auditctl 命令写到配置文件里面 永久生效
=================================================
检索审计日志
ausearch -k sshd_config -i    #-k   根据key_name检索 -i  交互式

Nginx安全配置优化

删除不需要的模块

源码编译时使用–without参数指定不需要的模块

修改版本信息
curl -I http://192.168.2.5 #查看服务器头部信息
HTTP/1.1 200 OK
Server: nginx/1.17.6   #含有nginx版本信息
Date: Tue, 12 Jan 2021 10:45:48 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Wed, 06 Jan 2021 10:33:00 GMT
Connection: keep-alive
ETag: "5ff591dc-264"
Accept-Ranges: bytes


vim /usr/local/nginx/conf/nginx.conf
===================================
http{
...
	server_tokens off;         #不在数据包头部信息包含版本信息
....
}
======================================
nginx -s reload #重启
curl -I http://192.168.2.5  #查看服务器响应的头部信息
HTTP/1.1 200 OK
Server: nginx                 #版本信息消失了
Date: Tue, 12 Jan 2021 10:47:59 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Wed, 06 Jan 2021 10:33:00 GMT
Connection: keep-alive
ETag: "5ff591dc-264"
Accept-Ranges: bytes
nginx限制并发量 ngx_http_limit_req_module模块 降低DDOS攻击
vim /usr/local/nginx/conf/nginx.conf
==========================
http{
...				#key值          客户端IP存储在名称为one的共享内存 内存大小为10M 速度
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
	server {
		listen 80;
		server_name localhost;
		limit_req zone=one burst=5;    #burst 存取5个同一个ip请求 处理一个
	}															
....															
}																
=======================================								
#客户端测试														   
ab -c 100 -n http://192.168.2.5/   #最后要加/ 测试同时100个请求		
....                          #省略测试不必要信息
Complete requests:      100   #发送了100个请求
Failed requests:        94     #94个被拒绝了          100 - 1个处理-5个等待=94个被拒绝
.....
拒绝非法请求头
vim /usr/local/nginx/conf/nginx.conf
=========================
http{
	server{
		listen 80;
		if($request_method !~ ^(GET|POST)$) {  #检索请求头 如果是除了GET POST以外的请求 就返回444
			return 444;
		}
	}
}
===============================
/usr/local/nginx/sbin/nginx -s reload


#客户端测试
curl -i -X GET http://192.168.2.5 #显示请求内容和返回信息      X指定请求方式为GET
#GET方式成功
curl -i -X HEAD http://192.168.2.5
curl: (52) Empty reply from server  #被拒绝了
防止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_bffers 2 1k;
	.....
}
====================================
/usr/local/nginx/sbin/nginx -s reload

数据库安全配置

初始化安全脚本

mariadb和mysql安装后root默认没有密码且有一个任何人都可以操作的test测试数据库

systemctl start mariadb
mysql_secure_installation  #执行初始化安全脚本   禁止root从远程其他主机登录数据库,并删除test数据库
手动修改数据库密码
mysqladmin -uroot -p123456 password 'mysql' #重新设置数据库root密码为mysql
mysql -uroot -pmysql #测试新密码登录
MariDB[(none)]> set password for root@'localhost'=password('123456');  #在数据库里面改回123456

通过bash终端修改mysql密码 和数据库内命令修改密码 都可以被看到明文密码

history
cat .bash_history   #看见历史命令记录  看见mysqladmin修改的密码
cat .mysql_history  #查看数据库命令 看见修改的密码

所以要管理好历史记录 不使用明文 数据库binlog日志在5.6版本前也有明文密码

数据库备份与还原
mysqldump -uroot -p123456 mydb table > table.sql  #导出mydb数据库中的table表
mysqldump -uroot -p123456 mydb > mydb.sql   #导出mydb数据库中的所有表
mysqldump -uroot -p123456 --all-databases > all.sql #导出所有数据库

mysql -uroot -p123456 mydb < table.sql  #将table.sql 表导入mydb数据库
mysql -uroot -p123456 mydb < mydb.sql
mysql -uroot -p123456 < all.sql        #导入数据库
数据库测试抓包
环境配置
  • 2.5数据库 有tom数据库用户 密码123 允许在任何机子上发起访问 能够访问所有表
  • 2.100测试端
  • 2.5 tcpdump监听3306端口抓包
测试
#2.5
mysql -uroot -p123456
MariaDB [(none)]> grant all on *.* to tom@'%' identified by '123';
#                 允许  所有操作  在所有数据库所有表中     tom用户使用123密码在任何主机上登录
tcpdump -w log -i any src or dst port 3306
#抓取源或目标端口是3306端口的数据包保存在log文件中

#2.100
mysql -utom -p123 -h192.168.4.5
MariaDB [(none)]> select * from mysql.user; #执行查询用户命令
MariaDB [(none)]> exit  #退出

#2.5查看log
tcpdump -A -r log
09:43:13.837031 IP 192.168.2.100.57480 > proxy.mysql: Flags [S], seq 2877284794, win 29200, options [mss 1460,sackOK,TS val 12322866 ecr 0,nop,wscale 7], length 0
E..<..@.@..y...d..................r............
...2........................
09:43:13.837105 IP proxy.mysql > 192.168.2.100.57480: Flags [S.], seq 4201524256, ack 2877284795, win 28960, options [mss 1460,sackOK,TS val 20129128 ecr 12322866,nop,wscale 7], length 0
E..<..@.@..........d.....n, ......q ...........
.3%h...2....................
09:43:13.837373 IP 192.168.2.100.57480 > proxy.mysql: Flags [.], ack 1, win 229, options [nop,nop,TS val 12322871 ecr 20129128], length 0
E..4..@.@......d.............n,!.....R.....
...7.3%h................
......
#查询命令数据包省略   有加密的hash值  可以逆向破解
#看前三次通信    2.100发送SYN给2.5  2.5返回SYN和ACK给2.100 2.100发送ACK给2.5  通信建立了

可以发现有被抓包破解的危险

可以SSH远程连接服务器后本地登陆数据库 或者 使用SSL对mysql服务器进行加密,类似HTTP+SSL


Tomcat安全配置

隐藏版本信息
vim /usr/local/tomcat/conf/server.xml
==============================
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000" redirectPort="8443" server="jacob">
================================================================
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

#测试
curl -I http://192.168.2.100:8080/xx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值