一 . Nginx安全
1.1 删除不需要的模块
Nignx是模块化设计的软件 需要什么功能与模块以及不需要哪些模块 都可以在编译安装软件时自定义
- -with 开启某些模块 - -without 禁用某些模块
最小化安装永远都是对的方案
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
#gzip on;
server {
autoindex on; //添加这行 启用目录浏览功能
[root@proxy ~]# /usr/local/nginx/sbin/nginx -t //测试nginx配置文件是否正确
[root@proxy ~]# tar -xf nginx-1.12.tar.gz
[root@proxy ~]# cd nginx-1.12
[root@proxy nginx-1.12.2]# ./configure \
> --prefix=/usr/local/nginx \
> --without-http_autoindex_module //禁用自动索引文件目录模块扫描二维码关注公众号,回复: 5465885 查看本文章[root@proxy nginx-1.12.2]# make && make install
1.2 修改版本信息 隐藏具体版本号
默认Nginx会显示版本信息以及具体的版本号 这些信息给攻击着带来便利性 便于他们找到具体版本的漏洞
[root@proxy ~]# vim +48 nginx-1.12.2/src/http/ngx_http_header_filter_module.c
[root@proxy nginx-1.12.2]# ./configure \
> --prefix=/usr/local/nginx \
> --without-http_autoindex_module //重新编译安装[root@proxy nginx-1.12.2]# make && make install
[root@proxy nginx-1.12.2]# killall nginx
[root@proxy nginx-1.12.2]# /usr/local/nginx/sbin/nginx //启动服务
[root@proxy nginx-1.12.2]# curl -I http://192.168.4.50 //查看版本信息
Server: dan //版本号不显示Nginx 而是dan
1.3 限制并发量
DDOS攻击者会发送大量的并发连接 占用服务器资源(包括连接数、带宽等) 这样会导致正常用户处于等待或无法访问服务器的状态 Nginx提供了一个ngx_http_limit_req_module模块 可以有效降低DDOS攻击的风险
limit_req_zone语法格式: limit_req_zone key zone=name:size rate=rate;
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
… …
http{
… …
limit_req_zone $binary_remote_addr zone=dandan:10m rate=1r/s; //将客户端IP信息存储名称为dandan的共享内容
server {
listen 80;
server_name localhost;
limit_req zone=dandan burst=5; //每秒仅接受一个请求 多余的放入漏斗 漏斗超过5个则报错
}
}
[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload
二 . 数据库安全
2.1 部署mariadb数据库
[root@proxy ~]#yum -y install mariadb-server mariadb
[root@proxy ~]# systemctl start mariadb
[root@proxy ~]# mysql_secure_installation //初始化安全脚本
2.2 修改数据库登录密码
2.2.1 操作系统管理员root修改本机登录密码
[root@proxy ~]# mysqladmin -uroot -p123456 password 'dandan' //修改密码 原始密码123456 新密码dandan
[root@proxy ~]# mysql -uroot -pdandan[root@proxy ~]# cat .bash_history //binlog日志存在历史命令
2.2.2 管理员root使用sql修改密码
MariaDB [(none)]> set password for root@"localhost"=password("dandan");
[root@proxy ~]# cat .mysql_history //binlog日志里有明文密码以及操作过的命令
2.2.3 删除记录历史命令的文件
[root@proxy ~]#rm ~/.mysql_history
[root@proxy ~]#rm ~/.bash_history
[root@proxy ~]# history -c
定期清除历史命令 使用防火墙从TCP层设置ACL(禁止外网接触数据库)
2.3 数据备份与还原
[root@proxy ~]# mysqldump -uroot -pdandan mysql db > db.sql //备份数据库mysql下的db表
[root@proxy ~]# mysqldump -uroot -pdandan kyrie > kyrie.sql //备份数据库的kyrie库
[root@proxy ~]# mysqldump -uroot -pdandan --all-databases > all.sql //备份所有数据库
2.3.1 还原数据库
[root@proxy ~]# mysql -uroot -pdandan mysql < db.sql
[root@proxy ~]# mysql -uroot -pdandan kyrie < kyrie.sql
[root@proxy ~]# mysql -uroot -pdandan < all.sql
2.3.2 数据安全
[root@proxy ~]# mysql -uroot -pdandan
MariaDB [(none)]> grant all on *.* to dan@'%' identified by '123'; //创建新用户dan
[root@proxy ~]# tcpdump -w log -i any src or dst port 3306 //抓取源或目标端口是3306的数据包 保存到log文件
2.3.3 客户端连接数据库
[root@client ~]# mysql -udan -p123 -h 192.168.4.50
MariaDB [(none)]> select * from mysql.user; //任意执行查询记录
2.3.4 服务器抓包
[root@proxy ~]# tcpdump -A -r log
三 . Tomcat安全
3.1 部署tomcat
[root@proxy ~]# tar -zxvf /apache-tomcat-8.0.30.tar.gz
[root@proxy ~]# mv apache-tomcat-8.0.30 /usr/local/tomcat
[root@proxy ~]# /usr/local/tomcat/bin/startup.sh
[root@proxy ~]# echo "wmj" > /usr/local/tomcat/webapps/ROOT/test.html
[root@proxy ~]# curl http://192.168.4.50:8080/test.html
wmj
3.2 隐藏版本信息
[root@proxy ~]# yum -y install java-1.8.0-openjdk-devel
[root@proxy ~]# cd /usr/local/tomcat/lib/
[root@proxy lib]# jar -xf catalina.jar[root@proxy lib]#ls orj
[root@proxy lib]# vim org/apache/catalina/util/ServerInfo.properties //修改版本信息的内容server.info=WMJ
server.number=11.11[root@proxy lib]# vim /usr/local/tomcat/conf/server.xml
71 redirectPort="8443" server="wmj" />
[root@proxy lib]# /usr/local/tomcat/bin/shutdown.sh
[root@proxy lib]# /usr/local/tomcat/bin/startup.sh
3.2.1 查看版本信息
[root@proxy ~]# curl -I http://192.168.4.50:8080
[root@proxy ~]# curl -I http://192.168.4.50:8080/dan.xml
3.3 降权启动
[root@proxy ~]# useradd tomcat
[root@proxy ~]# chown -R tomcat:tomcat /usr/local/tomcat/ //修改权限 让tomcat用户对该目录有权限
[root@proxy ~]# su -c /usr/local/tomcat/bin/startup.sh tomcat //以tomcat用户身份启动tomcat服务[root@proxy ~]# chmod +x /etc/rc.local //开机启动文件
[root@proxy ~]# vim /etc/rc.local //永久设置源码开机运行su -c /usr/local/tomcat/bin/startup.sh tomcat
[root@proxy ~]# rm -rf /usr/local/tomcat/webapps/* //删除默认测试页面