歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

教你用phpBB2配置一個安全的Linux論壇(下)

  二、清除安全漏洞和升級論壇版本    1. PHP    BB2.0.11安全漏洞分析和清除方法:    phpBB2是一個用php腳本語言編寫的論壇,該論壇的低於2.0.11版本有個嚴重的漏洞,就是 viewtopic.php允許遠程執行命令。viewtopic.php是phpBB2論壇腳本文件中的一個,用於查看帖子內容。通過該漏洞攻擊者可以在服務上運行任何代碼。Net-Worm.Perl.Santy.a是一個使用perl腳本代碼編寫蠕蟲病毒,通過該phpBB2漏洞遠程執行系統命令入侵主機,一旦入侵成功並獲得運行,就開始向Google發送請求,搜索可以入侵的主機。 如果你使用phpBB2版本低於2.0.11,那麼需要清除該蠕蟲病毒。    (1)清除病毒步驟:    打開viewtopic.php文件,在以下代碼前加入一行:$topic_id = $post_id = false;    if ( isset($HTTP_GET_VARS[POST_TOPIC_URL]) )  {  $topic_id = intval($HTTP_GET_VARS[POST_TOPIC_URL]);  }  else if ( isset($HTTP_GET_VARS['topic']) )  {  $topic_id = intval($HTTP_GET_VARS['topic']);  }    另外還要將viewtopic.php文件中以下代碼:    $join_sql_table = ( !isset($post_id) ) ? '' : ", " . POSTS_TABLE . " p, " . POSTS_TABLE . " p2 ";  $join_sql = ( !isset($post_id) ) ? "t.topic_id = $topic_id" : "p.post_id = $post_id AND t.topic_id = p.topic_id AND p2.topic_id = p.topic_id AND p2.post_id <= $post_id";  $count_sql = ( !isset($post_id) ) ? '' : ", COUNT(p2.post_id) AS prev_posts";    $order_sql = ( !isset($post_id) ) ? '' : "GROUP BY p.post_id, t.topic_id, t.topic_title, t.topic_status, t.topic_replies, t.topic_time, t.topic_type, t.topic_vote, t.topic_last_post_id, f.forum_name, f.forum_status, f.forum_id, f.auth_view, f.auth_read, f.auth_post, f.auth_reply, f.auth_edit, f.auth_delete, f.auth_sticky, f.auth_announce, f.auth_pollcreate, f.auth_vote, f.auth_attachments ORDER BY p.post_id ASC";    替換為:    $join_sql_table = ( empty($post_id) ) ? '' : ", " . POSTS_TABLE . " p, " . POSTS_TABLE . " p2 ";  $join_sql = ( empty($post_id) ) ? "t.topic_id = $topic_id" : "p.post_id = $post_id AND t.topic_id = p.topic_id AND p2.topic_id = p.topic_id AND p2.post_id <= $post_id";  $count_sql = ( empty($post_id) ) ? '' : ", COUNT(p2.post_id) AS prev_posts";    $order_sql = ( empty($post_id) ) ? '' : "GROUP BY p.post_id, t.topic_id, t.topic_title, t.topic_status, t.topic_replies, t.topic_time, t.topic_type, t.topic_vote, t.topic_last_post_id, f.forum_name, f.forum_status, f.forum_id, f.auth_view, f.auth_read, f.auth_post, f.auth_reply, f.auth_edit, f.auth_delete, f.auth_sticky, f.auth_announce, f.auth_pollcreate, f.auth_vote, f.auth_attachments ORDER BY p.post_id ASC";    然後點擊“開始”-“搜索”-“文件或文件夾”在文件名稱中輸入“m1h020f”,找到後全部刪除即可。截至到目前為止,該蠕蟲還沒有更新的變種。已經得到了很到的控制。    2. phpBB2.0.12安全漏洞分析和解決除方法:    phpBB 2.0.12版本中存在兩個安全漏洞,其中一個很嚴重,允許任意用戶都可以獲取管理權限,另外一個漏洞會導致服務器路徑洩露。第一個漏洞存在於includes/sessions.php文件中,其對$sessiondata['autologinid']變量的類型及比較操作存在問題,遠程攻擊者可以通過偽造特別的變量值使用判斷用戶合法性的操作始終返回真,從而使用任意用戶可以在不知道口令的情況下以管理員的身份認證成功。第二個漏洞在於viewtopic.php文件中,由於對消息的過濾不充分,使路徑洩露成為可能。遠程攻擊者可以利用這個漏洞獲取管理權限。解決方法,升級版本到2.0.14。    步驟:    1.數據庫的備份:    phpBB2本身可以備份自己的數據,點擊phpBB2 的論壇管理員控制面板“普通管理”-》“數據庫工具管理:備份”-》“選擇整體備份選項”,即可完成論壇數據的整體備份,見圖-4.     圖-4 phpBB2論壇的數據備份    備份產生的文件是:phpbb_db_backup.sql,可以看出是一個sql文件。    2. 使用網絡備份mysql數據:    phpBB2本身不能進行網絡備份,這時可以使用Mysql數據的導出和導入工具:mysqldump。    (1)本地備份:    使用 mysqldump進行備份非常簡單,如果要備份數據庫” phpbb_db_backup ”,使用命令:    #mysqldump –u -p phpbb_db_backup > /usr/backups/mysql/ phpbb_db_backup.2005.5.6    還可以使用gzip命令對備份文件進行壓縮:    #mysqldump phpbb_db_backup gzip > /usr/backups/mysql/ phpbb_db_backup.2005.5.6。gz    恢復數據使用命令:    #mysql –u -p phpbb_db_backup </usr/backups/mysql/phpbb_db_backup.2005-5-6    (2)網絡備份    將MYSQL數據放在一台計算機上是不安全的,所以應當把數據備份到局域網中其他計算機中。假設Mysql服務器IP地址是:192.168.1.3。局域網使用Linux的遠程計算機IP地址是192.168.1.17;局域網使用Windows的遠程計算機IP地址是192.168.1.18。    把MYSQL數據備份到使用Linux的遠程計算機需要在兩端都安裝NFS協議(Network File System),遠程NFS計算機安裝NFS協議後還要修改配置文件:/etc/eXPorts,加入一行:    /usr/backups/mysql/ 192.168.1.17 (rw, no_root_squash)    表示將/usr/backups/mysql/目錄共享。這個目錄具有遠程root用戶讀寫權限。保存NFS配置文件,然後使用命令:    #exportfs -a –r    然後重新啟動NFS服務:    #service nfsd start    遠程計算機設定後,在MYSQL服務器/mnt 目錄下建立一個backup_share目錄:    #mkdir /mnt/backup_share    將遠程的Linux計算機的/usr/backups/mysql/目錄掛載到MYSQL服務器的/mnt/backup_share目錄下:    # mount -t nfs 192.168.1.17:/usr/backups/mysql /mnt/backup_share    將目錄掛載進來後,只要進入/mnt/backup_share 目錄,就等於到了IP地址:192.168.1.7那部NFS 計算機的/usr/backups/mysql 目錄中。下面使用mysqldump把“phpbb_db_backup”備份到遠程計算機:    # mysqldump phpbb_db_backup > /mnt/backup_share/ phpbb_db_backup.2005-5-6    把MYSQL數據備份到使用Windows的遠程計算機需要在Linux端安裝Samab協議。然後Windows計算機上建立一個目錄(/arc)並且共享,賦予其讀寫權限。同樣在MYSQL服務器/mnt 目錄下建立一個backup_share1目錄,然後進行掛載:    # mount -t smbfs -o username=cjh, passWord=XXXX //192.168.1.18/arc /mnt/backup_share    最後使用命令進行備份:    # mysqldump phpbb_db_backup > /mnt/backup_share/ phpbb_db_backup.2005-5-6    3. 升級最新phpBB2論壇版本步驟:    下載最新版本phpBB-2.0.14解壓到一個臨時目錄,先備份原數據,然後將原來的 config.php 文件覆蓋臨時目錄下的 config.php ,刪除原phpBB2安裝目錄,把最新版本phpBB2移動到/var/www/Html/目錄下:    # mv phpBB2 /var/www/html/phpbb2    然後在浏覽器中輸入:http://localhost/phpbb2/install/update_to_2014.php 升級自動進行,系統如果出現圖-5表示升級成功:     圖-5 phpBB2 版本升級界面    升級結束後同樣要刪除安裝文件(防止他人使用這些文件修改系統信息),    #chmod 644 config.php  # rm -rf install  # rm -rf contrib    然後進行數據恢復,點擊phpBB2 的論壇管理員控制面板“普通管理”-》“數據庫工具管理:恢復”,即可恢復到論壇數據備份時的狀況。    2.其他安全措施    1.管理員權限    phpBB2 的系統管理員具有最大的權限,而該權限可能會與其它的板主權限相沖突而造成不可預期的錯誤,所以最好不要讓系統管理員當版主。另外用root權限運行MYSQL也不太安全,這裡推薦使用其他用戶運行MYSQL。方法是:    # mysql -u root -p  Enter password:xxxxxxxxx  ………  mysql>update user set user="cao" where user="root";  mysql> flush privileges;  mysql>quit  Bye    以後就得通過cao帳號訪問mysql數據庫了。    2.php配置文件的安全設定:    phpinfo和get_cfg_var函數主要用於調試程序是否正常,當LAMP安裝結束後應當禁止其使用,編輯php.ini文件加入一行:〕    disable_functions = phpinfo,get_cfg_var    這樣可以避免洩漏系統服務信息。關於php和Apache其他安全措施可以查看筆者的:教您如何應用PHP開發出安全的應用程序,鏈接:http://tech.ccidnet.com/pub/article/c1113_a239881_p1.html




Copyright © Linux教程網 All Rights Reserved