網絡知識博大精深,必須好好繼續深刻學習。
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