服務器搭建手冊標準版之服務器安全手冊
提綱
- 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…