Apache优化:隐藏版本信息,权限分离提高安全性,禁止日志遍历,日志切割

   日期:2024-12-26    作者:greenbar88888 移动:http://3jjewl.riyuangf.com/mobile/quote/53335.html

在实验环境中,我们不会去关注apache的优化,但是如果要用于生产环境中,必须要对apahe进行优化后,才可以上线进行服务,不然会出现很多问题:如安全性,不方便查看日志等等

Apache优化:隐藏版本信息,权限分离提高安全性,禁止日志遍历,日志切割

一台centos7主机IP192.168.1.11 纯净就可以,配置好yum源,如有需要软件包,我后面会提供百度云

1)查看默认自己的版本信息
2)隐藏apache版本信息

只有源码安装中的编译过程,才可以修改apache版本信息,我们先来源代码安装apahe

1.上传并解压httpd软件包
2.修改ap_release.h参数以隐藏版本信息
3.源码安装上apache服务

1)先把刚刚yum安装的httpd服务删除了
[root@apache httpd-2.4.38]# yum -y remove httpd

2)安装编译环境
[root@apache httpd-2.4.38]# yum -y install gcc gcc-c++ apr apr-devel cyrus-sasl-devel expat-devel libdb-devel openldap-devel apr-util-devel apr-util pcre-devel pcre openssl*

3)编译并安装
[root@apache httpd-2.4.38]# https://blog.csdn.net/weixin_45308292/article/details/configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --enable-ssl --enable-mpms-shared=all

这里解释一下参数
–enable-so
–enable-rewrite
–enable-charset-lite:
–enable-cgi
–enable-ssl
–enable-mpms-shared=all

[root@apache httpd-2.4.38]# make && make install

 
 

6)启动服务
[root@apache ~]# systemctl start apache
[root@apache ~]# netstat -anpt | grep 80

7)添加环境变量path,以便可以随时使用apache的命令
[root@apache ~]#ln -s /usr/local/httpd/bin/* /usr/local/bin/

3)测试隐藏版本信息效果
4)彻底隐藏版本号
5)测试最终结果
1)查看并修改apache默认用户
1.查看apache默认用户

虽然daemon没有系统登陆的权限,但是好多服务默认都是daemon用户,如黑客获取了daemon用户权限有可能会破坏其他服务,所以我们要给apache创建一个单独用户

2.修改apache默认用户为apache

[root@apache ~]# cat /etc/passwd | grep apache

2)权限分离

在实验环境中一般使用root用户,或单一用户给予关于其服务的全部权限,可是这样在实际生产完全性非常低,一旦有入侵者攻破这一用户,那整个网站服务和其中的数据,也就任其所为了

1.先设置一些重要目录的属主属组,之后再进行细分

1)将整个apache目录属主属组设为apache
[root@apache ~]# chown -R apache:apache /usr/local/httpd/

2)再单独给于daemon用户,让daemon用户拥有对应权限
[root@apache ~]# chown -R daemon:daemon /usr/local/httpd/htdocs/

[root@apache ~]# ll /usr/local/httpd/htdocs/
#这里可以发现apache对其也只有读权限,一定程度分离了权限

2.网页与目录文件快速赋权

在网站的站点目录,也就是/usr/local/httpd/htdocs,会存在目录或文件,我们需要给予对应的权限

1.设置此目录下所有文件的权限为644

[root@apache ~]# find /usr/local/httpd/htdocs -type f -exec chmod 644 {} ;
-type后面的f就是文件的意思,-exec 是要执行的命令,{} 是将find的结果 执行前面的chmod命令

[root@apache ~]# ll /usr/local/httpd/htdocs/index.html

2.设置此目录下所以目录的权限为755

先再htdocs目录下,创建一个目录,方便看效果
[root@apache ~]# mkdir /usr/local/httpd/htdocs/directory
[root@apache ~]# find /usr/local/httpd/htdocs -type d -exec chmod 755 {} ;
-d是目录的意思
[root@apache ~]# ll -d /usr/local/httpd/htdocs/directory/

#这个属组的s暂且不管,总之现在属组也有x执行权限,通过getfacl命令查看

[root@apache ~]# getfacl /usr/local/httpd/htdocs/directory/






#这行就是属组的权限

3.日志文件单独授权为root用户,提高安全


[root@apache ~]# chown -R root:root /usr/local/httpd/logs/
[root@apache ~]# ll -d /usr/local/httpd/logs/access_log

其他用户也仅有读取权限

4.重启服务,保证权限配置正确,用户依然可以正常访问

apache默认开启目录浏览功能,意思就是/usr/local/httpd/htdocs中如果不存在index.html文件,就显示这个目录下的目录结构
如果index.html文件为空不会显示目录结构
如果存在其他html文件,但不是index.html也会显示目录结构

1.在htdocs目录下创建测试目录与文件

[root@apache ~]# echo > /usr/local/httpd/htdocs/123.html
[root@apache ~]# mkdir /usr/local/httpd/htdocs/{dir1,dir2}
[root@apache ~]# ls /usr/local/httpd/htdocs/

2.移走index.html

[root@apache ~]# mv /usr/local/httpd/htdocs/index.html /opt/

3.测试,可以看到目录结构
4.修改配置文件,取消此功能

[root@apache ~]# systemctl restart apache

5.测试

默认不进行日志切割,日志都是在一个文件中,很不方便查看如果不进行日志切割无法进行定期清理日志,造成资源浪费

1)使用apache系统自动切割工具rotatelogs
1.先修改主配值文件
 

这里解释一下其中的参数
|:
-l:
%Y%m%d:
86400:

2.更改正确日志位置
 

[root@apache ~]# systemctl restart apache

Job for apache.service failed because the control process exited with error code. See “systemctl status apache.service” and “journalctl -xe” for details.

[root@apache ~]# systemctl restart apache

4.测试rotatelogs工具效果

1.先测试错误日志
[root@apache ~]# ls /usr/local/httpd/logs/
可以看到,已经有错误日志,而且是当前的日期,另几个日志是没有开启日志分隔时的日志

[root@apache ~]# date

2.测试正确日志
这里是因为测试日志遍历,现在移动回来
[root@apache ~]# mv /opt/index.html /usr/local/httpd/htdocs/

客户访问机网页httpd://192.168.1.11时多次刷新

[root@apache ~]# ls /usr/local/httpd/logs/

2)使用cronolog进行日志切换

apache自带的切割工具容易造成数据丢失,因此我们一般使用第三方切割工具cronolog

1.上传cronolog工具并安装

链接:https://pan.baidu.com/s/1547EuH46lSQa-5sbf-IL-g
提取码:q6ij

2.查找安装到了哪里,/sbin下的那个是命令

[root@apache cronolog-1.6.2]# find / -name cronolog

3.这次使用虚拟主机做

[root@apache ~]# systemctl restart apache

2.添加一个I临时P(重启网卡会失效,做基于IP的虚拟主机
[root@apache ~]# ifconfig ens33:1 192.168.1.200
[root@apache ~]# ifconfig

 
 
 

4.创建配置文件中写的目录与默认首页
[root@apache ~]# mkdir -p /virtual/{logs,htdocs}
[root@apache ~]# echo > /virtual/htdocs/index.html
[root@apache ~]# systemctl restart apache
Job for apache.service failed because the control process exited with error code. See “systemctl status apache.service” and “journalctl -xe” for details.

[root@apache ~]# systemctl restart apache

5.测试效果

可以试一下
[root@apache ~]# date -s "2020-12-11"
这条命令修改系统时间

这时候,访问一次虚拟主机192.168.1.200
再回来看日志,已经多了一个
[root@apache logs]# ls

然后上面没有说一个问题,现在运行apache的用户是apache,正常说我们新创建的文件/virtual和下面的子文件夹,apache用户肯定没有写入权限,日志也就无法写入


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号