apache和mariadb安全配置

Apache安全配置

一、确保apache无法访问根目录

查看apache配置文件,确定里面对根目录是拒绝所有请求

vim /etc/httpd/conf/httpd.conf

按箭头,下翻可以找到以下配置

其中,第一行和第四行,指明了目录,即Linux的根目录 /

第二行,表示禁止使用.htaccess文件,覆盖此处配置

第三行,表示禁止访问根目录

 二、删除网站的目录浏览权限 

apache会在默认路径下开启目录浏览

继续查看apache配置文件,如图,其中Indexes即为目录浏览权限,直接删除即可。

三、限制HTTP方法

apache默认没有限制限制http方法,我们可以在需要的路径下进行限制
在路径配置中加入

<LimitExcept GET POST >

Require all denied

</LimitExcept>

四、错误页面重定向

http的错误页面可能会暴露服务器信息,我们可以将错误页面都重点向到某文件

新建一个错误页面文件,文件内容为error

echo “error” > /etc/var/www/html/error.txt

编辑配置文件,指定错误代码400 401 402 403 404 500 指向error

ErrorDocument 400 /error.txt

ErrorDocument 401 /error.txt

ErrorDocument 402 /error.txt

ErrorDocument 403 /error.txt

ErrorDocument 404 /error.txt

ErrorDocument 500 /error.txt

五、限制POST数据大小

编辑配置文件

在文件中加下行,注意不要放在路径的申明中

LimitRequestBody 100

六、记录下post的数据

很多攻击行为由post发起,记录post数据可以便于追踪溯源

编辑配置文件

加载记录IO的模块

LoadModule dumpio_module modules/mod_dumpio.so

指定日志级别,记录IO (位置一定要对,不能随意编辑)

LogLevel dumpio:trace7

DumpIOInput On

七、保存退出,并重启服务

退出vim ,使用以下命令重启apache服务

systemctl restart httpd

八、验证配置

前面我们已经完成了apache的加固,下面进行验证,这里我们使用linux自带的curl工具进行验证

1、验证当前的HTTP限制的方法,如我们head方法进行测试

curl -I 127.0.0.1 ,其中 -I表示使用head方法

2、验证错误页面重定向

curl 127.0.0.1/test.html

因为服务器上并不存在test.html,所以重定向到了error.txt

3、验证限制post数据大小

curl使用-d选项时,会使用post,前面我们限制post的body为100字节,下面引号中输入足够长的数据即可

curl -d 'testtesttesttestsa 中间输入超过100个字符随便输入jfljaslfjlajflajlfjsfuwefjsljfljsttesttest' 127.0.0.1

4、验证日志记录post数据

使用下面命令向服务器post的数据为11223344

curl -d '11223344' 127.0.0.1

服务器无法处理post请求,直接报错error

查看日志,可以在日志中找到11223344

Mariadb安全配置

一、操作系统级权限检查

1、检查数据库的运行权限,不建议以root运行数据库,防止越权攻击

ps -ef | egrep "^mysql.*$"

显示mysqld的运行用户为mysql

2、禁用mariadb的历史记录功能

查找缓存文件

find $HOME -name ".mysql_history"

将缓存文件指向空文件

rm -f $HOME/.mysql_history

ln -s /dev/null $HOME/.mysql_history 

3、查看并配置数据库存放路径权限

登录数据库

mysql -u root

查看数据库存放路径

show variables where variable_name = 'datadir';

退出数据库

Quit

查看数据库存放路径权限

ls -l /var/lib | grep mysql

如图权限为755,使用以下命令改为700

chmod 700 /var/lib/mysql

 

二、Mariadb数据库的通用安全配置

1、删除默认的test数据库

进入数据库

mysql -u root

查询数据库

show DATABASES LIKE 'test';

删除数据库

DROP DATABASE 'test';

2、禁用local_infile参数

查看local_infile参数是否开启

show variables where variable_name = 'local_infile';

3、修改secure_file_priv参数

查看secure_file_priv参数

SHOW GLOBAL VARIABLES WHERE Variable_name = 'secure_file_priv' ;

4、确定只有root用户有内置数据库mysql的权限

查看内置数据库的权限

SELECT user, host FROM mysql.user WHERE (Select_priv = 'Y') OR (Insert_priv = 'Y') OR (Update_priv = 'Y') OR (Delete_priv = 'Y') OR (Create_priv = 'Y') OR (Drop_priv = 'Y');

5、查看file_priv权限,确定只有root用户有

select user, host from mysql.user where file_priv = 'Y';

撤销用户权限

如果在上例检查中,发现非root用户,可以使用下面命令撤销

revoke file on *.* from 'user';

同时这里检查权限还应有process_privsuper_priv这些字段。

6、配置允许用户登录的主机

查看当前用户可以登录的主机

select user,host from mysql.user;

更新用户允许登录的主机,如

update mysql.user set host="192.168.1.200" where host="localhost" and user="root";

7、查看密码安全策略

show variables like 'validate_password%';

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值