网络知识博大精深,必须好好继续深刻学习。
web
一、必须随时注意APACHE的安全补丁apache
命令:安全
Sudo apt-get update && sudo apt-get upgrade服务器
Sudo apt-get dist-upgrade网络
使用ServerTokens指令,来告诉APACHE咱们须要那些HTTP头,该指令做用于整个服务器,并不是专针对某虚拟主机。并发
ServerTokens Prod Server:Apacheide
ServerTokens Major Server:Apache/2学习
ServerTokens Minor Server:Apache/2.0测试
ServerTokens Min Server:Apache/2.0.41ui
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服务器
四、 密码认证
能够分为:基本认证(使用明文密码)、摘要式认证(使用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
五、检查文件权限
.htpasswd 640
.htaccess 644
PHP 600
重要文件 400
APCHE配置文件中
Option FollowSymLinks //禁止APACHE访问web root网页根目录之外的文件
AllowOverride None //禁止APACHE读取.htaccess文件
6 关闭不使用的模块
命令:
Sudo a2dismod
七、DdoS攻击
APACHE自带了mod-evasive模块,能够很大程度上放置DdoS攻击。
一、 mod_evasive工做原理
1.1 查看“临时黑名单”中是否有该客户机的IP
1.2 将该客户机的IP和请求的URI一块儿,HASH为一个KEY,而后去找HASH表,查看在过去1秒内,这台客户机是否屡次请求同一页面
1.3 将客户机的IP地址HASH为一个KEY,而后去找HASH表,查看这台客户机在过去的一秒内是否请求了超过50个连接。
若是符合以上任意一条,则返回403错误。
二、 mod_evasive安装
命令:
Sudo apt-get install libapache2-mod-evasive
三、 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>
四、 攻击测试
APACHE自带测试程序
命令:
Cd /usr/share/doc/libapache2-mod-evasive/examples
Perl test.pl