服務器搭建手冊標準版之服務器安全手冊

服務器搭建手冊標準版之服務器安全手冊

 

提綱

  • UNIX內核安全。……………………………………………………………………………

 

  • UNIX 系統安全。…………………………………………………………………………..

 

  • WEBMIN服務器安全。…………………………………………………………………….

 

  • APACHE服務器安全。………………………………………………………………………

 

  • PHP開發語言安全。…………………………………………………………………………

 

  • MYSQL服務器安全。……………………………………………………………………….

 

  • PHPMYADMIN安全。……………………………………………………………………….

 

  • PURE-FTP服務器安全。…………………………………………………………………….

 

  • PUREFTP MANAGER安全。…………………………………………………………………

 

  • MAIL服務器安全。…………………………………………………………………………..

 

  • DNS服務器安全。……………………………………………………………………….

 

  • LOG日誌服務器安全。………………………………………………………………….

 

  • SQUID緩存服務器安全。……………………………………………………………….

 

  • CVS服務器安全。………………………………………………………………………..

 

  • UNIX內核安全
    • 定製內核
    • 編譯內核。
  • UNIX系統安全
    • 啟用IPFW防火牆.
    • 編輯防火牆規則.

三WEBMIN服務器安全.

  • 啟用ssl登陸

 

四、APACHE服務器安全.

1、 修改httpd.conf 文件,作如下修改。

#禁止瀏覽目錄及文件

Options -Indexes FollowSymLinks

2、#禁止返回APACHE版本及模塊信息。

ServerTokens Prod

#顯示apache版本信息、主機名稱、端口、支持的cgi等信息

ServerSignature Email

3、禁止某個IP段的用戶訪問APACHE服務器,例如:202.202.202.xx

在<Directory “/usr/local/www/apache22/data”>

</Directory>之間加入下面信息:

order deny,allow
deny from 202.202.202.0/24

4、使得apache對客戶端進行域名驗證
可以在httpd.conf裡面設置:
HostnameLookups on|off|double

如果出於安全,可以設成

HostnameLookups double

如果出於訪問速度,可以設成

HostnameLookups off

5、安裝openssl

6、給某些目錄增加目錄安全驗證

在某些目錄下面編輯與增加.htpasswd驗證文件.

7、增加錯誤頁跳轉文件

ErrorDocument 404 /error.php

Error.php的內容如下:

<?php

$url=”http://www.ding9.com”;

header(“Location:$url”);

?>

8、通過.htaccess 來防止網站盜鏈。

#在網站根目錄下vi .htaccess 內容如下:

SetEnvIfNoCase Referer ” “^http://www\.ding9\.com/ ” local_ref=1
<FilesMatch “\.(jpg|zip|rar|gif|bmp|torrent|mp3|mpg|rm|ra|mov)”>
Order Allow,Deny
Allow from env=local_ref
Allow from 127.0.0.1
</FilesMatch>

9、調節TCP發送和接受空間(TCP send and receive spaces)

sysctl -w net.inet.tcp.sendspace=32768
sysctl -w net.inet.tcp.recvspace=32768

10、調整套接口序列防止SYN攻擊

sysctl -w kern.ipc.somaxconn=1024

11、調整Redirects參數

sysctl -w net.inet.icmp.drop_redirect=1
sysctl -w net.inet.icmp.log_redirect=1
sysctl -w net.inet.ip.redirect=0
sysctl -w net.inet6.ip6.redirect=0

12、調整ARP清理設置

sysctl -w net.link.ether.inet.max_age=1200

13、調整源路由的設置

sysctl -w net.inet.ip.sourceroute=0
sysctl -w net.inet.ip.accept_sourceroute=0

14、調整廣播ECHO響應

sysctl -w net.inet.icmp.bmcastecho=0

15、針對其他廣播探測的調整

sysctl -w net.inet.icmp.maskrepl=0

16、指定運行Apache服務的用戶和組

17、控制PHP腳本只能訪問指定目錄

在httpd.conf添加如下內容:

 

php_admin_value open_basedir /usr/www

 

後面的路徑是你需要PHP腳本能夠訪問的目錄,如果PHP腳本想要訪問其他目錄將出項錯誤提示。

 

五、PHP開發語言安全

1、安裝最新最新版本的PHP或者安裝安全的正式版本。

2、針對php.ini 作修改

file_uploads=Off
register_globals = Off
safe_mode = On

magic_quotes_gpc = On

safe_mode_gid = off
allow_url_open = off

3、失效一些有安全隱患的函數
disable_functions = passthru, exec, system, phpinfo, \
popen, chroot ,scandir ,chgrp , chown ,escapeshellcmd, escapeshellarg, \
shell_exec ,proc_open,proc_get_status

4、PHP的所有警告及錯誤信息記錄到一個日誌文件

error_reporting = E_ALL
display_errors = Off
log_errors = On
error_log = /usr/local/apache/logs/php_error.log

5、失效一些有安全隱患的類

disable_classes =

6、PHP腳本用phpencode進行加密,避免由於copy操作泄漏源碼。

7、嚴格配置文件和目錄的權限,只允許上傳的目錄能夠讓nobody用戶可寫。
對於上傳目錄去掉PHP解釋功能,可以通過修改httpd.conf實現:
php_flag engine off
#如果是php3換成php3_engine off
重啟apache,upload目錄的php文件就不能被apache解釋,即使上傳php文件也沒有問題,只能直接顯示源碼。

8、用open_basedir對腳本操作路徑進行限制.

open_basedir =

六、MYSQL數據庫安全

1、給所有數據庫賬戶設置複雜密碼。

2、對賬戶的權限劃分清楚。

3、不要作為Unix的root用戶運行MySQL守護進程.

4、更加不要以mysql的ROOT用戶來運行mysql守護進程。

5、確保運行mysqld的Unix用戶是唯一的在數據庫目錄下有讀/寫權限的用戶。

6、不要把process權限給所有用戶。

7、不要把file權限給所有的用戶。

8、授主機訪問權限時,盡量授於IP,並且非常小心地使用包含通配符的主機名。

9、嚴格管理MySQL授權表, 確保訪問服務器管理的數據庫內容,必需是有效的用戶名和口令。

10、保證數據目錄訪問的安全. 設置所有在數據目錄下的文件屬主為由用於運行服務器的賬號擁有(你必須以root執行這步)

11、mysql綁定內網IP,只允許本地連接MySQL,啟動MySQL時網絡連接被禁止掉.

12、MySQL運行在一個獨立的(Chroot)環境下

13、刪除test數據庫。

14、關閉遠程連接。

編輯/etc/my.cnf文件中的[mysqld]部分,去掉#skip-networking前面的“#”即可。

15、禁止MySQL導入本地文件。

編輯/etc/my.cnf文件的[mysqld]部分加入下面語句:
set-variable=local-infile=0

16、刪除歷史命令記錄
這些歷史文件包括~/.bash_history、~/.mysql_history等。因為這些文件有一些明文的密碼在裡面。
#cat /dev/null > ~/.bash_history
#cat /dev/null > ~/.mysql_history

17、安全模式下執行程序主目錄

safe_mode_exec_dir = /usr/www

18、關閉PHP版本信息在http頭中的泄漏。

expose_php = Off

19、數據庫文件安全

#chown -R mysql.mysql /usr/local/mysql/var

# chmod -R go-rwx /usr/local/mysql/var

七、PHPMYADMIN安全

1、給phpmyadmin 目錄改名,改為dbadmin

2、給phpmyadmin目錄增加目錄訪問驗證。

在PHPMYAMDIN目錄下編輯.httpaccess 驗證文件。

3、基於主機的訪問是通過驗證用戶機器IP來實現的,即只有符合條件的IP才可以反問該目錄,否則拒絕訪問。

修改 .htaccess 文件如下:

AuthName “用戶驗證”

AuthType Basic

AuthUserFile //usr/local/www/apach22/data/dbadmin/.htpasswd

require user ding9

order deny,allow

deny from all

allow from xxx.xxx.xxx.xxx

xxx.xxx.xxx.xxx可為數據庫存管理員IP,這樣就只允許數據管理員訪問dbadmin目錄啦。

八、PURE-FTP服務器安全

  • 禁止匿名用戶訪問。
  • 允許本地用戶登陸
  • 只允許系統中的ftp用戶或者某些指定的用戶訪問ftp,因為系統中帳戶眾多,不可能讓誰都訪問。
  • 把本地用戶鎖定在自己的主目錄。
  • 隱藏文件真實的所有用戶和組信息,防止黑客拿下ftp後查看更多系統用戶信息:
  • 取消ls -R命令,節省資源,因為使用該命令,在文件列表很多的時候將浪費大量系統資源
  • 上傳文件的默認權限,設置為022:
  • ftp的banner信息,為了防止黑客獲取更多服務器的信息,設置該項。
  • 打開日誌記錄功能,方便監控用戶上傳與下載過程。

10、將ftp綁定內網IP,只允許內網IP用戶訪問。但對外公布的FTP不適用。

九、PUREFTP MANAGER安全。

  • 將PUREFTPMANAGER改名,改名為ftpamdin
  • 給PUREFTPMANAGER目錄增加安全驗證。

十、MAIL服務器安全

  • 給郵件系統增加反垃圾郵件功能。
  • 給郵件系統增加防病毒郵件功能。
  • 禁止郵服的郵件轉向功能。
  • 使用postfix本身規則拒收垃圾郵件:
    • 使用頭信息過濾郵件。
    • 通過阻止IP地址或主機名方式訪問郵件服務器來拒收郵件。
    • 管理好RELAY控制。
  • 隱藏郵件服務器IP地址。
  • 防範DDOS攻擊。

十一、DNS服務器安全。

1,首先應該隔離BIND服務器,不應該在DNS服務器上跑其他服務,尤其是允許普通用戶

登陸。減少其它的服務可以縮小被攻擊的可能性,比如混合攻擊。

 

2,雙DNS服務器,第二個(secondary DNS)應該安裝在另外一個網絡連接上,(不走同

一個ISP等)。如果你的DNS服務器因為某種原因斷線,至少還有一個緩衝。這樣一來比如EMAIL等都不會丟失。一般可以維持四天。

 

3,使用最新版本的BIND!(比如 8.2.3 或者 9.1.2)

 

4,權限管理(Access Control),限制 zone transfer 的範圍,不給攻擊者得到局

域網的信息。可以使用傳遞簽名(transaction signatures)等。

 

5,用最低的權限執行BIND,即非root用戶和嚴格的umask設置

 

6,使用chroot對執行BIND時添加更多的隔離,這樣BIND對系統和其他服務帶來修改和

破壞會更困難。

 

7,雖然有些人不相信隱蔽BIND的序列號對安全有什麼特別的好處,可以有效的阻止大

多數script kiddie的掃描。對於專業的駭客是另外一回事。

 

8,BIND的紀錄應該常常分析,對於不尋常的記錄可以使用內設的checker。

 

9,對BIND(還有其它應用服務)進行安全增強配置的基礎上,安全管理

員仍然需要密切關注最新的安全公告、安全補丁和安全技術,經常與專業的計算機安全

專家交流知識和經驗。

十二、LOG日誌服務器安全

  • 給後台日誌分析查看頁增加訪問認證。
  • 網絡訪問日誌只允許特定的用戶與用戶組訪問。
  • 日誌分析軟件只允許許特定的用戶與用戶組運行。

十三、squid緩存服務器安全

1、加載ACL禁用no-cache指令。

十四、CVS服務器安全.

略。

以下文章點擊率最高

Loading…

     

如果這文章對你有幫助,請掃左上角微信支付-支付寶,給於打賞,以助博客運營