Discuz論壇安全加固淺析
原創【51CTO專稿】Discuz! 論壇以其功能完善、效率高效、負載能力,深受被大多數的網站喜愛和青睞。無獨有隅,筆者所維護的論壇就是用discuz! 來構建的,從接手時候的7.2到現在x2.0,經歷了數次的二次開發和發布,感觸頗多。
言歸正傳,本篇主要從nginx 安全加固、discuz 文件目錄、mysql 用戶權限等方面來闡述discuz論壇安全加固,希望給大家一點靈感。
1.Nginx安全加固
作為web的前端,在上面加強安全防護,效率比php要高多了。針對discuz! X2.0論壇nginx安全加固如下:
location ~* ^/(data|images|config|static|source)/.*\.(php|php5)$ { deny all; }
意思是data images config static source等目錄及其所有的php不能從web訪問,這樣避免黑客在上傳上面的目錄上傳的木馬無法運行,返回403錯誤。當然最直接的方法就是先將所有的文件禁止運行,然后加入需要放開的php和目錄,這樣做起最直接,而且最徹底。
例如:(只是舉個例子而已,千萬不要直接拿到自己的生產環境去!否則,你會哭的。)
location ~ (index|forumn|api|home|).*\.(php)?$ { allow all; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fcgi.conf; }
2.discuz目錄加固
不要聽信網上所有將目錄設置為777,這樣的話,任何用戶都已對目錄可寫可執行。正確的做法如下:
1)運行 nginx 和php 的用戶應該這樣來設置 useradd -g www -d /data0/htdocs -s /sbin/nologin www 意思:創建一個www用戶根目錄在/data0/htdocs 使用shell 是/sbin/nologin(不允許登錄)
2)針對discuz!X2.0目錄權限可以設置:
進入論壇根目錄
find source -type d -maxdepth 4 -exec chmod 555 \ {}; find api -type d -maxdepth 4 -exec chmod 555 \ {}; find static -type d -maxdepth 4 -exec chmod 555 \ {}; find archive -type d -maxdepth 4 -exec chmod 555 \ {}; find config-type d -maxdepth 4 -exec chmod 555 \ {}; find data- type d -maxdepth 4 -exec chmod 755 \ {}; #data需要寫緩存所以權限為755 find template - type d -maxdepth 4 -exec chmod 555 \ {}; find uc_client - type d -maxdepth 4 -exec chmod 555 \ {};
3) 針對discuz!X2.0文件權限可以設置:
進入論壇根目錄
find . - type f -maxdepth -exec chmod 444 \ {};#設置論壇目錄的文件只可讀,然后設置那些需要寫的文件,一般只有data下的文件是可以的。 find data - type f -maxdepth -exec chmod 755 \ {};#設置data 文件為755
3.mysql權限設置:
1)mysql 用戶權限:用戶的權限應嚴格限制,不應該有的權限全部去掉。比如該用戶只需執行select 語句,且只能操作某個庫,那么只賦予select 權限和限制在某個庫即可,千萬不要畫蛇添腳,添加delete update權限等。例如下圖所示
2)限制來源ip:這一點是最容易讓人遺忘,可能測試放開了來源ip,但是上線的時候卻忘記了。但是帶來的后果確實不堪設想。設置用戶的來源ip比如只允許來源ip 192.168.1.2可以連接。例如下圖所示
以上我對discuz!論壇安全加固的一點點總結,因為是抽出很少時間來整理,所以難免有錯誤發生,希望大家不嗇賜教。有一句話送給大家 “安全是相對,沒有絕對的”,在以后說不定又有新的問題接踵而來,這就需要大家對新的問題詳細分析,對癥下藥。
作者簡介:崔曉輝,網名coralzd,大眾網系統管理員,精通網站系統架構、Unix技術。gtalk:coralzd@gmail.com