Web与技术 · 2018年05月17号 0

LAMP安全加固之apache篇

一用LAMP,我就想到LAMP安全的问题,安全那是必须要搞定的!看看我是如何办的!

apache方面:

1.修改banner

编译源代码,修改默认的banner

ServerTokens ProductOnly

ServerSignature Off

在apache的源码包中找到ap_release.h将

#define AP_SERVER_BASEPRODUCT “Apache”

修改为

#define AP_SERVER_BASEPRODUCT “Microsoft-IIS/6.0”

os/unix下的os.h文件

#define PLATFORM “Unix”

修改为

#define PLATFORM “Win32“

2.修改默认的http状态响应码404,503等默认页面

3.Apache的访问权限控制

htpasswd -b -c /(存放密码文件路径)/.htpasswd username password

Alias /hack “/var/www/html/hack/”

authname “test”

authtype basic

authuserfile /var/www/html/hack/.htpasswd

require user kindle

4.关闭危险指令

清除FollowSymlinks指令

关闭索引目录

Options Indexes FollowSymLinks

关闭CGI执行程序

5.open_basedir 限制目录

用法:php_admin_value open_basedir /var/www

php_admin_value open_basedir 引起的上传文件失败解决方法

将上传文件的临时目录加入到php_admin_value open_basedir后面,最后看起来是这样的:

php_admin_value open_basedir “/usr/local/apache/htdocs/www/:/tmp/”

注意:两个目录之间是冒号隔开。

把PHP脚本操作限制在web目录可以避免程序员使用copy函数把系统文件拷贝到web目录。move_uploaded_file不受open_basedir的限制,所以不必修改php.ini里upload_tmp_dir的值。

 6.掌握Apache的Order Allow Deny判断原则

1. 首先判断默认的;

2. 然后判断逗号前的;

3. 最后判断逗号后的;

4. 最终按顺序叠加而得出判断结果。

ex:

apache的php扩展名解析漏洞

Order Allow,Deny

Deny from all

apache设置上传目录无执行权限

Order allow,deny

Deny from all

7.mod_rewrite重写URL

重写规则的作用范围

1.使用在Apache主配置文件httpd.conf中。

2.使用在httpd.conf里定义的配置中。

3.使用在基本目录的跨越配置文件.htaccess中。

1.url重定向80到443端口

RewriteEngine on

RewriteCond %{SERVER_PORT} !^443$

RewriteRule ^/?(.*)$ https://www.kindle.com/$1 [L,R]

含义是这样的:为了让用户访问传统的http://转到https://上来,用了一下rewrite规则:

第一句:启动rewrite引擎

第二句:rewrite的条件是访问的服务器端口不是443端口

第三句:这是正则表达式,^是开头,$是结束,/?表示有没有/都可以(0或1个),(.*)是任何数量的任意字符

整句的意思是讲:启动rewrite模块,将所有访问非443端口的请求,url地址内容不变,将http://变成https://

8.Speling模块去除url大小写

确认speling模块存在并已加载

启动speling

CheckSpelling .

AllowOverride None

Order allow,deny

Allow from all

9. Limit模块限制IP连接数

下载模块 http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz

安装:

tar zxvf mod_limitipconn-0.04.tar.gz

cd mod_limitipconn-0.04

make APXS=/usr/local/apache/bin/apxs ß—–这里要按你自己的路径设置

make install APXS=/usr/local/apache/bin/apxs ß—–这里要按你自己的路径设置

编辑httpd.conf

添加

全局变量:

< IfModule mod_limitipconn.c >

< Location / > # 所有虚拟主机的/目录

MaxConnPerIP 3 # 每IP只允许3个并发连接

NoIPLimit image/* # 对图片不做IP限制

< /Location >

< Location /mp3 > # 所有主机的/mp3目录

MaxConnPerIP 1 # 每IP只允许一个连接请求

OnlyIPLimit audio/mpeg video # 该限制只对视频和音频格式的文件

< /Location >

< /IfModule >

9.让apache支持安全HTTPS协议

yum -y install mod_ssl

cd /etc/httpd/conf 进入HTTP服务器配置文件所在目录

rm -rf ssl.*/server.* 删除默认或残留的服务器证书相关文件

rpm -qa |grep openssl

openssl genrsa -out www.kindle.com.key 1024 建立服务器密钥

openssl req -new –key www.kindle.com.key -out www.kindle.com.csr 建立服务器公钥

openssl x509 -req -days 365 -in www.kindle.com.csr -signkey www.kindle.com.key -out www.kindle.com.crt 建立服务器证书

/etc/rc.d/init.d/httpd restart 重启服务

netstat -ntpl |grep 443

可以到http://www.startssl.com获取合法证书(免费)

10.安装配置mod_security

下载:http://www.modsecurity.org/download/modsecurity-1.8.7.tar.gz

http://fedoranews.org/jorge/mod_security/mod_security.conf

安装:下载到/opt/soft目录下。

# tar –zxvf modsecurity-1.8.7.tar.gz

# cd modsecurity-1.8.7

#cd apache2

# /opt/apache/bin/ apxs -cia mod_security.c

#copy mod_security.conf /opt/apache/conf

配置:

在/opt/apache/conf/httpd.conf中添加下面一行:

Include conf/mod_security.conf

/opt/apache/bin/apachectl stop

/opt/apache/bin/apachectl startssl

更详细的mod_security的配置