前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Apache安装与安全配置详细

Apache安装与安全配置详细

作者头像
全栈工程师修炼指南
发布2022-09-29 14:04:09
2.4K0
发布2022-09-29 14:04:09
举报

[TOC]

快速入门

描述:Apache起初由伊利诺伊大学香槟分校的国家超级电脑应用中心(NCSA)开发,此后Apache Httpd被开放源代码团体的成员不断的发展和加强,从上个世纪90年代开始它的市场占有率就超过了50%。

如今虽然它的使用率有些下降但是仍是世界使用排名第一的 Web 服务器软件,它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的 Web服务器端软件之一。

安全加固

Apache自身的安全性是很高的,但是人为的错误设置会导致Apache产生安全问题 。

1.服务器运行权限(注意操作系统环境) 描述:Linux中默认给予Apache的是一个www-data账户,执行命令:lsof -i:80 或者:ps aux|grep apache|grep -v grep

代码语言:javascript
复制

  • 第一行是Apache主进程以root权限运行的,因为Apache的Web端口是80或443,而在Linux中开启小于1024的端口需要root权限,所以主进程必须以root权限运行。
  • 第二行起为Apache子进程,其执行用户为www-data,www-data是Ubuntu中运行Web服务的默认用户,权限较低。

比如当我们使用一个shell.php去执行添加文件测操作就会由于权限问题而失败。

WeiyiGeek.
WeiyiGeek.

WeiyiGeek.

Linux操作 如果是一个高权限用户可以尝试更改为低权限用户,Apache的运行用户的配置信息可以在 /etc/apache2/apache2.conf 文件中看到,提示用户和用户组设置在 /etc/apache2/envvars文件中

代码语言:javascript
复制
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

然后在到/etc/apache2/envvars文件中设置即可

代码语言:javascript
复制
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

Windows操作 由于windows机器默认是administrator权限所以第一步需要进行对Apache降权或者说设置一个安全的执行账户

代码语言:javascript
复制
net user apache /add
net localgroup guests apache /add  #将Apache的用户组改为Guests,注意要将Apache目录下的日志的可写权限赋给Guests账户。

打开·Apache服务属性中的登录选项卡,点选此账户,写入刚才添加的用户名和密码,最后重启服务

WeiyiGeek.
WeiyiGeek.

WeiyiGeek.

注意事项:

  • Windows中Apache安装完成后默认是administrator权限,如果使用此权限运行Web服务一旦攻击者拿下webshell就很容易控制整个服务器

2.目录及文件权限 描述:Linux在默认情况下如果当前目录不存在默认文件(比如index.html),Apache会列出当前目录。

其权限设置位置在Apache配置文件httpd.conf中

代码语言:javascript
复制
$vim /etc/httpd/conf/httpd.conf
<Directory /var/www/>
  Options Indexs FollowSymLinks
  AllowOverride None
  Rquire all granted
<Directory>

#Indexes:可以在该目录中使用符号连接,从漏洞角度上讲也就是目录遍历漏洞,操作这个参数即可进行权限控制。
#FollowSymLinks:允许目录浏览,当客户仅指定要访问的目录,但没有指定要访问目录下的哪个文件,而且目录下不存在默认文档时,Apache以超文本形式返回目录中的文件和子目录列表(虚拟目录不会出现在目录列表中)。

加固后的再次进行访问时,另外也Linux中可以通过Linux自带的chmod命令进行权限控制

代码语言:javascript
复制
$vim /etc/httpd/conf/httpd.conf
<Directory /var/www/>
  Options ollowSymLinks
  AllowOverride None
  Rquire all granted
<Directory>
WeiyiGeek.
WeiyiGeek.

WeiyiGeek.

补充:对于Windows防止目录列出的与上面差不多,主要说明windows自带的权限控制,还是以访问flag.txt文件为例,默认情况下 想要设置单个文件对其的访问:右键==>属性==>安全(前面已经将Apache添加Guests用户组)

WeiyiGeek.
WeiyiGeek.

WeiyiGeek.

3.错误重定向 描述:错误重定向是指通过在Web程序出错令其跳转到指定的显示界面,首先可以通过设置.htaccess文件达到目的,但是windows中正常情况下无法直接创建.xxx的文件,所以要是使用DOS命令echo 1 > .htaccess,然后在用其他编辑器编辑.htaccess文件即可,

比如设置404错误重定向,在.htaccess文件中添加:ErrorDocument 404 /404.html

代码语言:javascript
复制
$vim .htaccess
ErrorDocument 404 /404.html

#然后在同目录下创建404.html文件
<html><h1>Page Not Found</h1></html>

然后随机访问一个不存在的文件,则会自动跳转到404.html

WeiyiGeek.
WeiyiGeek.

WeiyiGeek.

或者采用精准匹配,通过配置httpd.conf文件也可以达到跳转的目的,还是在刚才添加设置目录权限的地方

代码语言:javascript
复制
DocumentRoot "/var/www/html"
<Directory "/var/www">
  Options +Indexs +FollowSymLinks +ExecCGI
  RewriteEngine On
  RewriteRule "tttt\.html$" "404.html"
  Order allow,deny
  AllowOverride All
  Allow from all
  Require all granted
</Directory>

比如对于本条正则当访问tttt.html时会跳转到404.html界面。

  • RewriteEngine On:开启跳转
  • RewriteRule “tttt.html$” “404.html” 第一个参数是一个正则 第二个参数使要跳转到的相对地址;也就是说当符合正则时进行跳转。
WeiyiGeek.
WeiyiGeek.

WeiyiGeek.

4.安全日志 Apache日志常规路径是,注意采用源码安装或者系统安装软件安装以及不同的Linux版本可能位置不一样; 采用的变量${APACHE_LOG_DIR},且日志记录是有等级

  • ubuntu:/var/log/apache2/
  • Centos:/etc/httpd/logs/

日志级别的详细分类:

WeiyiGeek.
WeiyiGeek.

WeiyiGeek.

其中的压缩文件为Apache自动压缩以节省空间:

  • other_vhosts_access.log 虚拟主机日志
  • access.log 成功访问记录文件
  • error.log 失败访问以及启动报错记录文件,一般格式为”[日期和时间] [错误等级] 错误消息”

httpd.conf定义的日志文件格式在:

代码语言:javascript
复制
192.168.228.1 - - [22/Sep/2017:05:26:41 -0700] "GET /flag.txt HTTP/1.1" 403 515 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0"

参数解释:

  • 远端主机:192.168.228.1
  • 远端登录名:-
  • 远程用户名:-
  • 访问时间:[22/Sep/2017:05:26:41 -0700]
  • HTTP请求:GET /flag.txt HTTP/1.1
  • HTTP状态码:403
  • 发送的字节数:515
  • Referer:-
  • User-Agent:”Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0”
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 快速入门
  • 安全加固
相关产品与服务
轻量应用服务器
轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门开源软件打包实现一键构建应用,提供极简上云体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档