[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
第一行是Apache主进程以root权限运行的,因为Apache的Web端口是80或443,而在Linux中开启小于1024的端口需要root权限,所以主进程必须以root权限运行。
第二行起为Apache子进程,其执行用户为www-data,www-data是Ubuntu中运行Web服务的默认用户,权限较低。
比如当我们使用一个shell.php去执行添加文件测操作就会由于权限问题而失败。
weiyigeek.top-
[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
第一行是Apache主进程以root权限运行的,因为Apache的Web端口是80或443,而在Linux中开启小于1024的端口需要root权限,所以主进程必须以root权限运行。
第二行起为Apache子进程,其执行用户为www-data,www-data是Ubuntu中运行Web服务的默认用户,权限较低。
比如当我们使用一个shell.php去执行添加文件测操作就会由于权限问题而失败。
weiyigeek.top-
Linux操作 如果是一个高权限用户可以尝试更改为低权限用户,Apache的运行用户的配置信息可以在 /etc/apache2/apache2.conf 文件中看到,提示用户和用户组设置在 /etc/apache2/envvars
文件中
1 2 User ${APACHE_RUN_USER} Group ${APACHE_RUN_GROUP}
然后在到/etc/apache2/envvars文件中设置即可
1 2 export APACHE_RUN_USER=www-dataexport APACHE_RUN_GROUP=www-data
Windows操作 由于windows机器默认是administrator权限所以第一步需要进行对Apache降权或者说设置一个安全的执行账户
1 2 net user apache /add net localgroup guests apache /add
打开·Apache服务属性
中的登录选项卡
,点选此账户,写入刚才添加的用户名和密码,最后重启服务
weiyigeek.top-
注意事项:
Windows中Apache安装完成后默认是administrator权限,如果使用此权限运行Web服务一旦攻击者拿下webshell就很容易控制整个服务器
2.目录及文件权限 描述:Linux在默认情况下如果当前目录不存在默认文件(比如index.html),Apache会列出当前目录。
其权限设置位置在Apache配置文件httpd.conf中1 2 3 4 5 6 7 8 9 $vim /etc/httpd/conf/httpd.conf<Directory /var/www/> Options Indexs FollowSymLinks AllowOverride None Rquire all granted <Directory>
加固后的再次进行访问时,另外也Linux中可以通过Linux自带的chmod命令进行权限控制1 2 3 4 5 6 $vim /etc/httpd/conf/httpd.conf<Directory /var/www/> Options ollowSymLinks AllowOverride None Rquire all granted <Directory>
weiyigeek.top-
补充:对于Windows防止目录列出的与上面差不多,主要说明windows自带的权限控制,还是以访问flag.txt文件为例,默认情况下
想要设置单个文件对其的访问:右键==>属性==>安全(前面已经将Apache添加Guests用户组)
weiyigeek.top-
3.错误重定向 描述:错误重定向是指通过在Web程序出错令其跳转到指定的显示界面,首先可以通过设置.htaccess文件达到目的,但是windows中正常情况下无法直接创建.xxx的文件,所以要是使用DOS命令echo 1 > .htaccess
,然后在用其他编辑器编辑.htaccess文件即可,
比如设置404错误重定向,在.htaccess文件中添加:ErrorDocument 404 /404.html1 2 3 4 5 $vim .htaccessErrorDocument 404 /404.html <html><h1>Page Not Found</h1></html>
然后随机访问一个不存在的文件,则会自动跳转到404.html
weiyigeek.top-
或者采用精准匹配,通过配置httpd.conf文件也可以达到跳转的目的,还是在刚才添加设置目录权限的地方1 2 3 4 5 6 7 8 9 10 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.top-
4.安全日志 Apache日志常规路径是,注意采用源码安装或者系统安装软件安装以及不同的Linux版本可能位置
不一样; 采用的变量${APACHE_LOG_DIR},且日志记录是有等级
ubuntu:/var/log/apache2/
Centos:/etc/httpd/logs/
日志级别的详细分类:
weiyigeek.top-
其中的压缩文件为Apache自动压缩以节省空间:
other_vhosts_access.log 虚拟主机日志
access.log 成功访问记录文件
error.log 失败访问以及启动报错记录文件,一般格式为”[日期和时间] [错误等级] 错误消息”
httpd.conf定义的日志文件格式在:1 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”