web安全加固

引言:

本文环境

系统:Ubuntu 5.4.0

数据库:5.7.33-0ubuntu0.16.04.1

服务器:Apache/2.4.18

MySQL安全加固

MySQL安全规范依据

GB/T 22239-2019 信息安全技术

MySQL安全最佳实践
mysql.user表,用于存储可访问数据库的用户登录信息和权限


sql用户管理基础命令

查看用户
sql 复制代码
select host,user,authentication_string from user;
创建用户
sql 复制代码
create user testuser identified by '123456';
-- 限制被创建用户只能从本地登录
create user testuser2@localhost identified by '123456';
删除用户
sql 复制代码
drop user testuser;
drop user testuser2@localhost;
修改用户
sql 复制代码
-- 修改root密码为123456,mysql.user中存储的是密码的哈希值,alter会自动加密
alter user root@localhost identified by '123456';
-- 修改用户名
update user set user='myroot' where user='root' and host='localhost';

用户控制

mysql中没有直接在主体中提供密码复杂度、登录控制等设置,而是增加了插件

在/etc/mysql/my.cnf中配置强制加载插件,配置完重启服务

sql 复制代码
-- 查找插件位置
show variables like 'plugin_dir';
validate_password.so 为密码复杂度插件
bash 复制代码
在配置文件中设置
[mysqld] 
plugin-load-add=插件名
validate-password=FORCE_PLUS_PERMANENT
密码复杂度设置

插件:validate_password.so

sql 复制代码
-- 进入数据库设置
-- 查看相关变量
show variables like 'validate_password%';
-- 开启复杂度检测
set global validate_password_check_user_name ON;

变量字段解析

| Variable_name

+--------------------------------------+--------+

| validate_password_check_user_name 是否开启(OFF/ON)

| validate_password_dictionary_file 字典检查

| validate_password_length 密码长度

| validate_password_mixed_case_count 包含大小写字母的数量

| validate_password_number_count 包含数字的数量

| validate_password_policy 密码策略

low 检查长度 medium +检查各种字符数量 high +检查字典

| validate_password_special_char_count 特殊字符个数

+--------------------------------------+--------+

登录控制

插件:connection_control.so

sql 复制代码
-- 进入数据库设置
show variables like 'connection%';
set global connection_control_min_connection_delay=20000;

变量字段解析

| Variable_name

+-------------------------------------------------+------------+

| connection_control_failed_connections_threshold 登录次数

| connection_control_max_connection_delay 登录最大延时,单位毫秒

| connection_control_min_connection_delay 登录最小延时

+-------------------------------------------------+------------+

权限分配

遵循最小权限原则,即只分配能够正常完成任务的最小权限

sql 复制代码
-- 查看用户权限
show grants for myroot@localhost;

字段解析

管理员权限

| Grants for myroot@localhost

| GRANT ALL PRIVILEGES ON *.* TO 'myroot'@'localhost' WITH GRANT OPTION

ALL 所有权限 ON A.B 在A库B表生效 TO 'myroot'@'localhost' 可登录在本地 WITH GRANT OPTION 可授权给他人

usage 登录权限

sql 复制代码
-- 授权
grant select,delete on *.* to ntd2404@localhost;
-- 撤销
revoke delete on *.* from ntd2404@localhost;

访问控制

设置mysqld进程的属主
bash 复制代码
#查看mysqld进程的属主是谁,修改为mysql
ps -ef|grep mysqld
bash 复制代码
# /etc/mysql/my.cnf中配置
[mysql.server]
User=mysql
更改数据目录属主为mysql
bash 复制代码
chown -R mysql:mysql /usr/share/mysql
远程连接限制

需要远程连接的情况

站库分离:当源码和数据库分离时需要远程连接,远程客户连接地址就是源码服务器ip

远程连接配置

bash 复制代码
//在/etc/mysql/mysql.conf.d/mysqld.cnf中配置
# bind-address=127.0.0.1 注释掉
重启服务
sql 复制代码
-- 设置远程连接的用户和主机
update mysql.user set host='192.168.10.1' where user='myroot';
-- 远程连接命令
mysql -umyroot -p123456 -h192.168.10.146
禁用文件加载

防止客户端加载文件到数据库

bash 复制代码
# /etc/mysql/my.cnf中配置
local-infile=0

日志管理

sql 复制代码
-- 查找日志相关变量
show variables like 'log_%';
-- 开启/关闭日志
set global log_name=ON/OFF;

Apache安全加固

配置文件:/etc/apache2/apache2.conf

配置与日志文件权限管理

bash 复制代码
#修改配置文件仅仅属主可读写
chmod 600 /etc/apache2/apache2.conf
#修改日志文件属主可以读写,其他用户仅读
chmod 644 /var/log/apache2/*.log

文件白名单

在配置文件中添加,仅可访问/var/www/html/DVWA

bash 复制代码
<Directory /var/www/html>
        Order Deny,Allow
        Deny from all
</Directory>
<Directory /var/www/html/DVWA>
        Order Allow,Deny
        Allow from all
</Directory>

文件黑名单

禁止访问/var/www/html/DVWA/config

bash 复制代码
<Directory /var/www/html/DVWA/config>
        Options  FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

报错信息更改

由于报错信息中会显示服务器一些敏感信息,如服务器类型、版本等,所有需要修改报错信息

bash 复制代码
#引号内,可以改为文件目录,报错自动跳转
ErrorDocument 404 "<h1>Custom 404 Page</h1>"

版本隐藏

bash 复制代码
ServerTokens Prod
ServerSignature off

更改默认端口

端口配置文件:/etc/apache2/ports.conf

bash 复制代码
#更改http端口为81
Listen 81
相关推荐
用户962377954488 小时前
VulnHub DC-3 靶机渗透测试笔记
安全
叶落阁主1 天前
Tailscale 完全指南:从入门到私有 DERP 部署
运维·安全·远程工作
用户962377954483 天前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机3 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机3 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954483 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star3 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954484 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher5 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行8 天前
网络安全总结
安全·web安全