跳到主要内容

安全加固

一、Apache httpd安全加固

1.账号设置

1.1指定apache用户运行httpd服务,防止越权使用造成非法攻击。

cat /etc/passwd
#查看当前是否存在apache用户

img

1.2修改Apache配置文件/etc/httpd/conf/httpd.conf

vim /etc/httpd/conf/httpd.conf
#添加如下两行配置
User apache
Group apache

img

2.授权设置

2.1严格控制Apache主目录的权限,属主为root,其他用户无修改权限

chmod -R 600 /etc/httpd/

img

2.2严格设置配置文件和日志文件的权限,防止未授权访问

chmod 600 /etc/httpd/conf/httpd.conf
设置配置文件为属主可读写,其他用户无读写权限

img

chmod 644 /var/log/httpd/*
#设置日志文件为属主可读写,其他用户拥有只读权限

img

3.日志设置

Apache 设备应配置日志功能,对运行错误、用户访问等事件进行记录,记录内容包括时间,用户使用的 IP 地址等内容。

vim /etc/httpd/conf/http.conf
#默认已经配置了错误日志和访问日志

img

4.设置目录

禁止网站目录列出

将Options Indexes FollowSymLinks 中删掉Indexes即可

修改前:

img

img

修改后:

img

img

5.防拒绝服务设置

加入以下配置

Timeout 10 #客户端与服务器端建立连接前的时间间隔
KeepAlive On
KeepAliveTimeout 15 #限制每个 session 的保持时间是 15 秒 注:此处为一建议值,具体的设定需要根据现实情况。

img

6.隐藏版本号和关闭Trace功能

在apache配置文件中加入以下配置

ServerSignature Off 
ServerTokens Prod
TraceEnable Off

修改前:

img

修改后:

img

img

7.禁用CGI

注释标红部分即可

img

8.禁用非法HTTP方法

在apache配置文件中加入以下配置

<Location />
<LimitExcept GET POST OPTIONS>
Order Allow,Deny
Deny from all
</LimitExcept>
</Location>

img

二、Mysql安全加固

1.账号安全

指定mysqld以mysql用户运行

打开/etc/my.cnf在mysqld选项下插入user=mysql(mysql)

img

修改mariadb的运行用户则需要在以上操作完后再到/usr/lib/systemd/system/mariadb.service中修改Service下的User和Group,接着执行systemctl daemon-reloa

image-20221031143021710

创建普通用户并赋予权限

grant all on *.* to icq@'%' identified by '123456';
#创建普通用户banana赋予任何主机登陆管理所有数据库的权限,密码为123456
#%代表所有主机,localhost代表本机,指定主机填IP即可
flush privileges;

img

img

删除指定账号

drop user icq
#删除icq账号

image-20210627012331931

2.口令安全

use mysql; #选中mysql数据库
update user set password=password('ICQsafe666') where user='root'; #更改root密码为123456
flush privileges; #刷新权限

image-20210627013549996

image-20210627013819166

3.授权设置

使用revoke回收一些危险的权限

revoke insert,update,alter,delete,create,drop,shutdown on *.* from icq@'%';
#回收icq账号对所有数据库的insert,update,alter,delete,create,drop,shutdown权限
flush privileges;
#刷新权限

image-20210627210755192

img

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 #设置二进制日志

image-20210627215437072

5.仅允许本地连接

grant all on *.* to icq@'localhost'; #指定icq用户仅能本地登录
flush privileges;

img

6.连接数设置

vim /etc/my.cnf
#在mysqld选项下添加
max_connections=1000

img

7.禁止远程连接

打开/etc/my.cnf插入skip-networking,开启选项后就禁止远程连接mysql数据库

img

image-20210627231626065

三、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/ #设置安全模式下文件包含的路径

img

5.控制PHP脚本能访问的目录

open_basedir = /var/www/html/ #设置php脚本能访问的目录

img

6.关闭危险函数

disable_functions = system, passthru, exec, shell_exec, popen, phpinfo, escapeshellarg, escapeshellcmd, proc_close, proc_open, dl
#关闭危险函数

img

7.关闭PHP版本信息

expose_php = off #关闭php版本信息

img

img

8.关闭注册全局变量

register_globals = off #关闭注册全局变量

image-20210627235919396

9.SQL注入防护

该选项在PHP5.3.0中已经废弃并且从5.4.0起已经移除

magic_quotes_gpc = on

img

10.错误信息控制

display_errors = Off

image-20210628000142380

11.错误日志

log_errors = On
error_log = /var/log/php/php_error.log

image-20210628000444530

四、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');
}

img

2.账号与口令安全策略

为用户设置复杂口令

use mysql; #选中mysql数据库
update user set password=password('ICQsafe666') where user='root'; #更改root密码为ICQsafe666
flush privileges; #刷新权限

img

执行后就需要使用新的密码登录了。

五、Redis安全加固

配置文件:/etc/redis.conf

1.网络层加固

监听本地

bind 127.0.0.1

img

image-20210629115433941

2.端口设置

port 6377

img

image-20210629151126070

3.开启保护模式

img

4.设置强口令密码

img

img

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根据实际业务需求加入以上配置

img

img

六、Mongodb安全加固

配置文件:/etc/mongod.conf

1.修改默认端口和监听地址

将bind 0.0.0.0改成 bind 127.0.0.1仅监听本地

将port 27017改成自定义的端口如27020

img

img

2.设置账户和密码并开启授权模式

mongo 127.0.0.1:27020
#登录数据库
use admin
#选中admin数据库
db.createUser({user:"admin",pwd:"ICQsafe666",roles:["root"]})
#为admin数据库创建角色为root权限的用户admin并指定密码

以认证模式启动mongod并登录

image-20210630000454450

3.禁用HTTP和REST端口

img

4.日志审计

img

七、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>

img

image-20210701223626980

2.开启Tomcat日志

配置文件:/usr/local/tomcat9/conf/server.xml

将图中标红部分取消注释即可

img

image-20210701224111015

3.修改默认端口

配置文件:/usr/local/tomcat9/conf/server.xml

img

image-20210701231256575

4.禁止目录列出

配置文件:/usr/local/tomcat9/conf/web.xml

防止直接访问目录时由于找不到默认页面,而列出目录下的文件的情况。 在 web.xml 文件中,将<param-name>listings</param-name>改成<param-name>false</param-name>

img

5.删除文档和示例程序

目录路径:/usr/local/tomcat9/webapps

删除tomcat下webapps 目录下的所有文件夹及文件即可

image-20210701232427321