$ cd /var/www/bo-blog/private $sudo htdigest -c digest.passwords Evil New password: Re-type new password: 7.检查文件权限
一般来说,.htpasswd文件应该给予640权限,.htaccess文件应为644,PHP文件为600。如果有的文件非常要紧,你不希望别人看到(比如config.php),那么可以给予400权限。如果某些文件需要写入权限的话,则可以设为766,写完后再设为755。除非真正需要,才设置为777,而且当应用完成之后,应改成700。
将下面的两行行加入到apache2.conf文件中也是对权限的一种保护: Options FollowSymLinks AllowOverride None 默认情况下,ubuntu的apache是有这两行配置的。 3.3.3 Apache服务器的安全模块
在服务器安全的原则中,有一条最基本的就是“最少服务”原则。也就是说,只要是用不到的,就不启用、不安装。所以ubuntu的Apache默认加载的模块很少,在一方面来说,也算是提高了Apache的安全性。但是同时也可以使用加载一些安全模块来加强服务器安全。
表3.3.1 Apache安全模块
mod_evasive mod_evasive 是Apache(httpd)服务器的防DDOS的一个模块。对于WEB服务器来说,是目前比较好的一个防护DDOS攻击的扩展模块。 mod_ssl 这个模块提供了使用安全套接字层(SSL v2/v3)和传输层安全(TLS v1)协议实现高强度加密传输的功能。 mod_Security mod_security是一个集入侵检测和防御引擎功能的开源web应用安全程序(或web应用程序防火墙). mod_chroot mod_chroot 可以使 Apache 运行在一个安全的 chroot 环境。 第33页 共48 页
(1)加载mod-evasive防范DDoS攻击防范
apache提供一个mod-evasive的模块,该模块可以在很大程度上防止HTTP DDoS攻击。虽然无法完全防御,至少可以缓解HTTP服务器的压力。如果配合软件防火墙、硬件防火墙等,则更能达到防御DDOS攻击的功能。 1.mod-evasive的安装
$ sudo apt-get install libapache2-mod-evasive 2.mod-evasive的配置 创建一个配置文件,然后根据需要来调整mod_evasive模块参数:
$ sudo vi /etc/apache2/conf.d/evasive 写入内容:
第34页 共48 页
$ sudo apt-get install libapache2-mod-security2 2.新建配置文件
$ sudo vim /etc/apache2/conf.d/modsecurity2.conf 添加以下内容:
$ sudo mkdir /etc/apache2/conf.d/modsecurity $ sudo vim /etc/apache2/conf.d/modsecurity/mod-security.conf 添加规则
# 检测内容长度以避免堆溢出攻击 SecFilterForceByteRange 32 254 =>SecFilterForceByteRange 32 126 # debug设置 SecFilterDebugLevel 9 =>SecFilterDebugLevel 0 # 设置缺省的动作 SecFilterDefaultAction \\# 把设置传递给子目录 SecFilterInheritance Off # Redirect user on filter match # 当匹配sh的时候,重新定向到一个特殊的警告页面,该页面是自行编写的,写些警告的话让攻击者知难而退,该段先不要生效,等到相关配置配好之后再失效不迟。记住在配好之后要使之生效。 #SecFilter sh redirect:http://localhost/hack/warning.htm # Prevent OS specific keywords #过滤一些敏感的东西,我们使用*是为了攻击者使用/etc/./passwd来绕开检测 第35页 共48 页
SecFilter /etc/passwd =>SecFilter /etc/*passwd SecFilter /bin/*sh From:http://hi.http://www.wodefanwen.com//zhfct123/blog/item/6b6623ce00e3053af8dc61ec.html # Very crude filters to prevent SQL injection attacks # 防止SQL插入(SQL Injection)攻击 SecFilter \SecFilter \SecFilter \SecFilter \4.激活mod-security模块
$ sudo a2enmod mod-security 5.建立日志目录
$ sudo mkdir /etc/apache2/logs 6.重启Apache服务器
$ sudo /etc/init.d/apache2 restart 7.查看mod security 2是否已经正常运行
$ cat /var/log/apache2/error.log | grep \(3)给Apahce服务器安装ssl模块 1.激活ssl模块
$ sudo a2enmod ssl 2.配置生成证书命令
$ vi ~/.bashrc 在最后添加以下语句
alias apache2-ssl-certificate='sudo /usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem' 第36页 共48 页
3.生成证书
注销之后,即可使用apache2-ssl-certificate命令来生成证书
$ sudo mkdir /etc/apache2/ssl $ apache2-ssl-certificate 4.创建站点文件
$ cd /etc/apache2/sites-available $ sudo cp default-ssl ssl $ sudo vi ssl 将
NameVirtualHost * 修改成
NameVirtualHost *:443 将
ServerAdmin webmaster@localhost 下面添加 SSLEngine On SSLCertificateFile /etc/apache2/ssl/apache.pem 5.激活站点
sudo a2ensite ssl 6.重启apache服务器
第37页 共48 页