一用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的配置