安全加固
一、Apache httpd安全加固
1.账号设置
1.1指定apache用户运行httpd服务,防止越权使用造成非法攻击。
cat /etc/passwd
#查看当前是否存在apache用户
1.2修改Apache配置文件/etc/httpd/conf/httpd.conf
vim /etc/httpd/conf/httpd.conf
#添加如下两行配置
User apache
Group apache
2.授权设置
2.1严格控制Apache主目录的权限,属主为root,其他用户无修改权限
chmod -R 600 /etc/httpd/
2.2严格设置配置文件和日志文件的权限,防止未授权访问
chmod 600 /etc/httpd/conf/httpd.conf
设置配置文件为属主可读写,其他用户无读写权限
chmod 644 /var/log/httpd/*
#设置日志文件为属主可读写,其他用户拥有只读权限
3.日志设置
Apache 设备应配置日志功能,对运行错误、用户访问等事件进行记录,记录内容包括时间,用户使用的 IP 地址等内容。
vim /etc/httpd/conf/http.conf
#默认已经配置了错误日志和访问日志
4.设置目录
禁止网站目录列出
将Options Indexes FollowSymLinks 中删掉Indexes即可
修改前:
修改后:
5.防拒绝服务设置
加入以下配置
Timeout 10 #客户端与服务器端建立连接前的时间间隔
KeepAlive On
KeepAliveTimeout 15 #限制每个 session 的保持时间是 15 秒 注:此处为一建议值,具体的设定需要根据现实情况。
6.隐藏版本号和关闭Trace功能
在apache配置文件中加入以下配置
ServerSignature Off
ServerTokens Prod
TraceEnable Off
修改前:
修改后:
7.禁用CGI
注释标红部分即可
8.禁用非法HTTP方法
在apache配置文件中加入以下配置
<Location />
<LimitExcept GET POST OPTIONS>
Order Allow,Deny
Deny from all
</LimitExcept>
</Location>
二、Mysql安全加固
1.账号安全
指定mysqld以mysql用户运行
打开/etc/my.cnf在mysqld选项下插入user=mysql
(mysql)
修改mariadb的运行用户则需要在以上操作完后再到/usr/lib/systemd/system/mariadb.service
中修改Service下的User和Group,接着执行systemctl daemon-reloa
创建普通用户并赋予权限
grant all on *.* to icq@'%' identified by '123456';
#创建普通用户banana赋予任何主机登陆管理所有数据库的权限,密码为123456
#%代表所有主机,localhost代表本机,指定主机填IP即可
flush privileges;
删除指定账号
drop user icq
#删除icq账号
2.口令安全
use mysql; #选中mysql数据库
update user set password=password('ICQsafe666') where user='root'; #更改root密码为123456
flush privileges; #刷新权限
3.授权设置
使用revoke回收一些危险的权限
revoke insert,update,alter,delete,create,drop,shutdown on *.* from icq@'%';
#回收icq账号对所有数据库的insert,update,alter,delete,create,drop,shutdown权限
flush privileges;
#刷新权限
4.日志安全
vim /etc/my.cnf
#在mysqld选项下加入以下配置
log=/var/log/mariadb/mariadb-log.log #设置普通查询日志
log-slow-queries=/var/log/mariadb/slow.log #设置慢查询日志
log-bin=/var/log/mariadb/bin.log #设置二进制日志
5.仅允许本地连接
grant all on *.* to icq@'localhost'; #指定icq用户仅能本地登录
flush privileges;
6.连接数设置
vim /etc/my.cnf
#在mysqld选项下添加
max_connections=1000
7.禁止远程连接
打开/etc/my.cnf插入skip-networking
,开启选项后就禁止远程连接mysql数据库
三、PHP安全加固
配置文件:/etc/php.ini
1.启用安全模式
safe_mode = on #开启安全模式
2.安全模式下执行程序主目录
safe_mode_exec_dir = /var/www/html/ #设置安全模式下执行程序的主目录
3.用户组安全
safe_mode_gid = off #关闭网站目录下的操作限制
4.安全模式下包含文件
safe_mode_include_dir = /var/www/html/ #设置安全模式下文件包含的路径
5.控制PHP脚本能访问的目录
open_basedir = /var/www/html/ #设置php脚本能访问的目录
6.关闭危险函数
disable_functions = system, passthru, exec, shell_exec, popen, phpinfo, escapeshellarg, escapeshellcmd, proc_close, proc_open, dl
#关闭危险函数
7.关闭PHP版本信息
expose_php = off #关闭php版本信息
8.关闭注册全局变量
register_globals = off #关闭注册全局变量
9.SQL注入防护
该选项在PHP5.3.0中已经废弃并且从5.4.0起已经移除
magic_quotes_gpc = on
10.错误信息控制
display_errors = Off
11.错误日志
log_errors = On
error_log = /var/log/php/php_error.log
四、PHPMyAdmin安全加固
1.访问控制策略
复制config.sample.inc.php(/var/www/html/phpmyadmin/config.sample.inc.php
)并更名为config.inc.php插入如下语句
$ip_prefix = '172.16.12.1';
if (substr($_SERVER['REMOTE_ADDR'], 0, strlen($_SERVER['REMOTE_ADDR'])) != $ip_prefix )
{
die('Access denied');
}
2.账号与口令安全策略
为用户设置复杂口令
use mysql; #选中mysql数据库
update user set password=password('ICQsafe666') where user='root'; #更改root密码为ICQsafe666
flush privileges; #刷新权限
执行后就需要使用新的密码登录了。
五、Redis安全加固
配置文件:/etc/redis.conf
1.网络层加固
监听本地
bind 127.0.0.1
2.端口设置
port 6377
3.开启保护模式
4.设置强口令密码
5.删除命令
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
rename-command KEYS ""
rename-command SHUTDOWN ""
rename-command DEL ""
rename-command EVAL ""
#以上相当于删除命令
#也可以将命令更改为自定义的字符串,如rename-command KEYS "KEYSS"
#在/etc/redis.conf根据实际业务需求加入以上配置
六、Mongodb安全加固
配置文件:/etc/mongod.conf
1.修改默认端口和监听地址
将bind 0.0.0.0改成 bind 127.0.0.1仅监听本地
将port 27017改成自定义的端口如27020
2.设置账户和密码并开启授权模式
mongo 127.0.0.1:27020
#登录数据库
use admin
#选中admin数据库
db.createUser({user:"admin",pwd:"ICQsafe666",roles:["root"]})
#为admin数据库创建角色为root权限的用户admin并指定密码
以认证模式启动mongod并登录
3.禁用HTTP和REST端口
4.日志审计
七、Tomcat安全加固
1.Tomcat默认账号安全
#打开tomcat的主目录
vim /usr/local/tomcat9/conf/tomcat-users.xml
#将password改为强口令即可
<role rolename="manager-gui" />
<user username="tomcat" password="ICQsafe666" roles="manager-gui"/>
</tomcat-users>
2.开启Tomcat日志
配置文件:/usr/local/tomcat9/conf/server.xml
将图中标红部分取消注释即可
3.修改默认端口
配置文件:/usr/local/tomcat9/conf/server.xml
4.禁止目录列出
配置文件:/usr/local/tomcat9/conf/web.xml
防止直接访问目录时由于找不到默认页面,而列出目录下的文件的情况。
在 web.xml 文件中,将<param-name>listings</param-name>
改成<param-name>false</param-name>
5.删除文档和示例程序
目录路径:/usr/local/tomcat9/webapps
删除tomcat下webapps 目录下的所有文件夹及文件即可