您的位置:首页 > 运维架构 > Apache

Ubuntu Server系列各项服务的安装和维护 Apache安全

2011-04-10 14:53 555 查看
网络知识博大精深,必须好好继续深入学习。

1、必须随时注意APACHE的安全补丁
命令:
Sudo apt-get update && sudo apt-get upgrade
Sudo apt-get dist-upgrade



2、
隐藏敏感信息
使用ServerTokens指令,来告诉APACHE我们需要那些HTTP头,该指令作用于整个服务器,并非专针对某虚拟主机。
ServerTokens Prod Server:Apache
ServerTokens Major Server:Apache/2
ServerTokens Minor Server:Apache/2.0
ServerTokens Min Server:Apache/2.0.41
ServerTokens OS Server:Apache/2.0.41(Windows)
ServerTokens Full Server:Apache/2.0.41(Windows)PHP/5.2/MyMod

3、 不要以root身份运行apache
查看apache使用者的命令:
Ps auxf | grep apache



检查APACHE配置文件,查看APACHE所在用户组,是否为www-data
命令:



同时检查www-data用户组是否存在于系统中
命令:
Cat /etc/group | grep www
Cat /etc/passwd|grep www



加入不存在则手工添加用户组
命令:
Sudo groupadd www-data
Sudo useradd –g www-data www-data

最后需要重启APACHE服务器

4、 密码认证
可以分为:基本认证(使用明文密码)、摘要式认证(使用MD5加密密码)
基本认证
(1)首先必须让APACHE能读取.htaccess文件,修改配置文件



<Directory /var/www/blog.mytest.com>
Options Indexes FollowSymLinks MultiViews
AllowOverride AuthConfig //注意:AuthConfig是启动关键
Order allow,deny
allow from all
</Directory>

(2) 重新加载APACHE
(3)使用htpasswd命令来创建认证文件



命令:
Sudo htpasswd –bc private.password usrname password
这段指令创建了一个文件private.passwords,并向该文件写入了一个认证信息,用户名:username,密码:password



(4)、 在private目录下创建一个.htaccess文件,在这个文件中将认证指定为刚才创建的private.passwords
目录:
Sudo mkdir /var/www/blog.mytest.com/private
Cd /var/www/blog.mytest.com/private
Sudo nano .htaccess



(5)、 在.htaccess中添加下列内容

AuthName "Password Needed"
AuthType Basic
AuthUserFile /var/www/blog.mytest.com/auth/private.passwords
Require valid-user



(6)测试



摘要式认证
(1)、 启用该模块
命令:
Sudo a2enmod auth_digest
Sudo /etc/init.d/apache2 restart



(2)、 创建报保护的目录,并创建.htaccess文件



在.htaccess中写入如下信息



AuthTpye Digest
AuthName "Please Give Your Password"
AuthDigestDomain /var/www/blog.mytest.com/private1
AuthUserFile /var/www/blog.mytest.com/authdigest.passwords
require valid-user
(3)、 使用htdigest命令来创建认证文件
命令:
Cd /var/www/blog.mytest.com/private1
Sudo htdigets –c digest.passwords “Please Give Your Password” username



5、检查文件权限
.htpasswd 640
.htaccess 644
PHP 600
重要文件 400
APCHE配置文件中
Option FollowSymLinks //禁止APACHE访问web root网页根目录以外的文件
AllowOverride None //禁止APACHE读取.htaccess文件

6 关闭不使用的模块
命令:
Sudo a2dismod



7、DdoS攻击
APACHE自带了mod-evasive模块,可以很大程度上放置DdoS攻击。
1、 mod_evasive工作原理
1.1 查看“临时黑名单”中是否有该客户机的IP
1.2 将该客户机的IP和请求的URI一起,HASH为一个KEY,然后去找HASH表,查看在过去1秒内,这台客户机是否多次请求同一页面
1.3 将客户机的IP地址HASH为一个KEY,然后去找HASH表,查看这台客户机在过去的一秒内是否请求了超过50个链接。
如果符合以上任意一条,则返回403错误。
2、 mod_evasive安装
命令:
Sudo apt-get install libapache2-mod-evasive



3、 mod-evasive的配置
创建一个配置文件,并输入配置信息
命令:
Sudo nano /etc /apache2/conf.d/evasive

<IfModule mod_evasive20.c>
DOSHashTableSize 3097 //定义了HASH表的大小
DOSPageCount 2 //定义了客户机访问同一页面的时间间隔
DOSSiteCount 50 //允许客户机对全站同时进行访问的并发数
DOSPageInterval 1 //定义网页访问计数的默认间隔时间
DOSSiteInterval 1 //定义访问计数的默认间隔时间
DOSBlockingPeriod 10 //定义阻止客户机访问的时间长短

#Other
DOSEmailNotify flylxb@163.com //有黑名单生成时的通知邮件
DOSSystemCommand "su - someuser -c '/sbin/... %s ...'" //
DOSLogDir "/var/lock/mod_evasive" //目录日志

#White List
DOSWhitelist 127.0.0.1
DOSWhitelist 127.0.0.*
DOSWhitelist 192.168.*.*
</IfModule>
4、 攻击测试
APACHE自带测试程序
命令:
Cd /usr/share/doc/libapache2-mod-evasive/examples
Perl test.pl
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: