頻道欄目
首頁 > 資訊 > 系統安全 > 正文

LAMP安全加固

12-05-15        來源:[db:作者]  
收藏   我要投稿
apache方面:
 
1.修改banner 編譯源代碼,修改默認的banner ServerTokens ProductOnly ServerSignature Off
在apache的源碼包中找到ap_release.h將#define AP_SERVER_BASEPRODUCT “Apache” 修改為#define AP_SERVER_BASEPRODUCT “Microsoft-IIS/6.0” os/unix下的os.h文件#define PLATFORM “Unix”
修改為#define PLATFORM “Win32“
 
2.修改默認的http狀態響應碼404,503等默認頁面
 
3.Apache的訪問權限控制htpasswd -b -c /(存放密碼文件路徑)/
.htpasswd username password Alias /hack “/var/www/html/hack/”
<Directory “/var/www/html/hack”> authname “test”authtype basic authuserfile /var/www/html/hack/.htpasswd require user kindle </Directory>
 
4.關閉危險指令 清除FollowSymlinks指令 關閉索引目錄Options Indexes FollowSymLinks
關閉CGI執行程序
 
5.open_basedir 限制目錄 用法:php_admin_value open_basedir
/var/www php_admin_value open_basedir 引起的上傳文件失敗解決方法
將上傳文件的臨時目錄加入到php_admin_value open_basedir后面,最后看起來是這樣的:
<VirtualHost *:80> php_admin_value open_basedir “/usr/local/apache/htdocs/www/:/tmp/”</VirtualHost>
注意:兩個目錄之間是冒號隔開。
把PHP腳本操作限制在web目錄可以避免程序員使用copy函數把系統文件拷貝到web目錄。
move_uploaded_file不受open_basedir的限制,所以不必修改php.ini里upload_tmp_dir的值。
 
6.掌握Apache的Order Allow Deny判斷原則
 
1. 首先判斷默認的;
 
2. 然后判斷逗號前的;
 
3. 最后判斷逗號后的;
 
4. 最終按順序疊加而得出判斷結果。
ex: apache的php擴展名解析漏洞
<Files ~ ”.(php.|php3.)”> Order Allow,Deny Deny from all </Files>
apache設置上傳目錄無執行權限<Directory “/www/home/upload”>
<Files ~ “.php”>
Order allow,deny Deny from all </Files> </Directory>
 
7.mod_rewrite重寫URL 重寫規則的作用范圍
 
1.使用在Apache主配置文件httpd.conf中。
 
2.使用在httpd.conf里定義的配置中。
 
3.使用在基本目錄的跨越配置文件.htaccess中。1.url重定向80到443端口
RewriteEngine on RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(.*)$ https://www.kindle.com/$1 [L,R]
含義是這樣的:為了讓用戶訪問傳統的http://轉到https://上來,
用了一下rewrite規則: 第一句:啟動rewrite引擎
第二句:rewrite的條件是訪問的服務器端口不是443端口
第三句:這是正則表達式,^是開頭,$是結束,/?表示有沒有/都可以(0或1個),
(.*)是任何數量的任意字符 整句的意思是講:啟動rewrite模塊,
將所有訪問非443端口的請求,url地址內容不變,
將http://變成https:// 9.Speling模塊去除url大小寫 確認speling模塊存在并已加載
啟動speling <Directory “/usr/local/downloads”>
CheckSpelling . AllowOverride None Order allow,deny Allow from all </Directory>
 
8. Limit模塊限制IP連接數
下載模塊http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz
安裝: tar zxvf mod_limitipconn-0.04.tar.gz cd mod_limitipconn-0.04 make APXS=/usr/local/apache/bin/apxs
 
這里要按你自己的路徑設置make install APXS=/usr/local/apache/bin/apxs ???
這里要按你自己的路徑設置 編輯httpd.conf 添加
全局變量: < IfModule mod_limitipconn.c > < Location / >    #
所有虛擬主機的/目錄MaxConnPerIP 3      #
每IP只允許3個并發連接NoIPLimit image/*   #
對圖片不做IP限制< /Location > < Location /mp3 >   #
所有主機的/mp3目錄MaxConnPerIP 1          #
每IP只允許一個連接請求OnlyIPLimit audio/mpeg video     #
該限制只對視頻和音頻格式的文件< /Location > < /IfModule >
 
9.讓apache支持安全HTTPS協議yum -y install mod_ssl cd /etc/httpd/conf   
進入HTTP服務器配置文件所在目錄rm -rf ssl.*/server.*  
刪除默認或殘留的服務器證書相關文件rpm -qa |grep openssl openssl genrsa -out www.kindle.com.key 1024 建立服務器密鑰openssl req -new ?key www.kindle.com.key -out www.kindle.com.csr
建立服務器公鑰openssl x509 -req -days 365 -in www.kindle.com.csr -signkey www.kindle.com.key -out www.kindle.com.crt 
  建立服務器證書/etc/rc.d/init.d/httpd restart 
重啟服務netstat -ntpl |grep 443 可以到http://www.startssl.com獲取合法證書(免費)
 
10.安裝配置mod_security
下載:http://www.modsecurity.org/download/modsecurity-1.8.7.tar.gz http://fedoranews.org/jorge/mod_security/mod_security.conf
安裝:下載到/opt/soft目錄下。# tar ?zxvf modsecurity-1.8.7.tar.gz #
cd modsecurity-1.8.7 #cd apache2 # /opt/apache/bin/ apxs -cia mod_security.c #copy mod_security.conf /opt/apache/conf
配置: 在/opt/apache/conf/httpd.conf中添加下面一行:
Include conf/mod_security.conf /opt/apache/bin/apachectl stop /opt/apache/bin/apachectl startssl

更詳細的mod_security的配置http://www.modsecurity.org/docum …ultipage/index.html
 
Php方面:
 

1.打開php的安全模式php的安全模式是個非常重要的內嵌的安全機制,能夠控制一些php中的函數,
比如passwd但是默認的php.ini是沒有打開安全模式的,
我們把它打開:safe_mode = on 當safe_mode打開時,safe_mode_gid被關閉,那么php腳本能夠對文件進行訪問,而且相同組的用戶也能夠對文件進行訪問。
建議設置為:safe_mode_gid = off 如果不進行設置,
可能我們無法對我們服務器網站目錄下的文件進行操作了,比如我們需要對文件進行操作的時候。
 
2.安全模式下執行程序主目錄 如果安全模式打開了,但是卻是要執行某些程序的時候,
可以指定要執行程序的主目錄:safe_mode_exec_dir = D:/usr/bin 一般情況下是不需要執行什么程序的,
所以推薦不要執行系統程序目錄,可以指向一個目錄,然后把需要執行的程序拷貝過去,
比如:safe_mode_exec_dir = D:/tmp/cmd
但是,我更推薦不要執行任何程序,那么就可以指向我們網頁目錄:safe_mode_exec_dir = D:/usr/www
 
3.安全模式下包含文件 如果要在安全模式下包含某些公共文件,那么就修改一下選項:safe_mode_include_dir = D:/usr/www/include/
其實一般php腳本中包含文件都是在程序自己已經寫好了,這個可以根據具體需要設置。
 
4.控制php腳本能訪問的目錄 使用open_basedir選項能夠控制PHP腳本只能訪問指定的目錄,
這樣能夠避免PHP腳本訪問.不應該訪問的文件,一定程度上限制了phpshell的危害,
我們一般可以設置為只能訪問網站目錄:open_basedir = /var/www/html
 
5.關閉危險函數 如果打開了安全模式,那么函數禁止是可以不需要的,
但是我們為了安全還是考慮進去。
比如,我們覺得不希望執行包括system()等在那的能夠執行命令的php函數,
或者能夠查看php信息的phpinfo()等函數,那么我們就可以禁止它們:
disable_functions = system,passthru,exec,shell_exec,popen,phpinfo
如果你要禁止任何文件和目錄的操作,那么可以關閉很多文件操作
disable_functions = phpinfo,exec,system,passthru,shell_exec,
escapeshellarg,escapeshellcmd,
proc_close,proc_open,dl,popen,show_source
以上只是列了部分不叫常用的文件處理函數,你也可以把上面執行命令函數和這個函數結合,
就能夠抵制大部分的phpshell了。
注:disable_classes可以禁用某些類,如果有多個用逗號分隔類名
 
6.關閉PHP版本信息在http頭中的泄漏 我們為了防止黑客獲取服務器中php版本的信息,
可以關閉該信息斜路在http頭中:expose_php = Off
比如黑客在telnet www.12345.com 80 的時候,那么將無法看到PHP的信息。
 
7.關閉注冊全局變量 在PHP中提交的變量,包括使用POST或者GET提交的變量,
都將自動注冊為全局變量,能夠直接訪問,這是對服務器非常不安全的,
所以我們不能讓它注冊為全局變量,就把注冊全局變量選項關閉:
register_globals = Off 當然,如果這樣設置了,
那么獲取對應變量的時候就要采用合理方式,比如獲取GET提交的變量var,
那么就要用$_GET['var']來進行獲取,這個php程序員要注意。
 
8.打開magic_quotes_gpc來防止SQL注入SQL注入是非常危險的問題,
小則網站后臺被入侵,重則整個服務器淪陷,所以一定要小心。
php.ini中有一個設置:magic_quotes_gpc = Off 這個默認是關閉的,
如果它打開后將自動把用戶提交對sql的查詢進行轉換,
比如把 ‘ 轉為 ’等,這對防止sql注射有重大作用。
所以我們推薦設置為:magic_quotes_gpc = On
 
9.錯誤信息控制 一般php在沒有連接到數據庫或者其他情況下會有提示錯誤,
一般錯誤信息中會包含php腳本當前的路徑信息或者查詢的SQL語句等信息,
這類信息提供給黑客后,是不安全的,
所以一般服務器建議禁止錯誤提示:display_errors = Off 如果你卻是是要顯示錯誤信息,
一定要設置顯示錯誤的級別,比如只顯示警告以上的信息:
error_reporting = E_WARNING & E_ERROR
當然,我還是建議關閉錯誤提示。
 
10.錯誤日志 建議在關閉display_errors后能夠把錯誤信息記錄下來
便于查找服務器運行的原因:log_errors = On
同時也要設置錯誤日志存放的目錄,
建議根apache的日志存在一起:error_log = D:/usr/local/apache2/logs/php_error.log

注意:給文件必須允許apache用戶的和組具有寫的權限。
 
11.關閉遠程文件打開allow_url_fopen = off 防止黑客遠程遠程包含漏洞
 
12.Php.ini包含補丁文件 在php.ini中引用。在配置文件內引用的話,將影響到所以的網站,
包含所有頁面 在php.ini中,找到此節:
; Automatically add files before or after any PHP document. ;auto_prepend_file = “phpids.php”;auto_append_file = “alert.php”
默認是空,請添加所包含的文件。
同時找到:; UNIX: “/path1:/path2″;include_path = “.:/php/includes”; ; Windows: “path1;path2″include_path = “.;F:PHPnowhtdocs”
 
13.使用Suhosin保護PHP應用系統,
具體參考www.kaosanakqu.com http://www.hardened-php.net/suhosin/configuration.html
 
mysql方面:

 
1.修改root用戶口令,刪除空口令 缺省安裝的MySQL的root用戶是空密碼的,
為了安全起見,必須修改為強密碼,所謂的強密碼,至少8位,由字母、數字和符號組成的不規律密碼。
使用MySQL自帶的命令mysaladmin修改root密碼,同時也可以登陸數據庫,
修改數據庫mysql下的user表的字段內容,修改方法如下所示:
# /usr/local/mysql/bin/mysqladmin -u root password “upassword”//
使用mysqladmin #mysql> use mysql; #mysql>
update user set password=password(‘upassword’) where user=’root’;
#mysql> flush privileges; //強制刷新內存授權表,否則用的還是在內存緩沖的口令
 
2.刪除默認數據庫和數據庫用戶 一般情況下,MySQL數據庫安裝在本地,
并且也只需要本地的php腳本對mysql進行讀取,所以很多用戶不需要,尤其是默認安裝的用戶。

MySQL初始化后會自動生成空用戶和test庫,進行安裝的測試,這會對數據庫的安全構成威脅,
有必要全部刪除,最后的狀態只保留單個root即可,當然以后根據需要增加用戶和數據庫。

#mysql> show databases; #mysql> drop database test; //刪除數據庫test
#use mysql; #delete from db; //刪除存放數據庫的表信息,因為還沒有數據庫信息。
#mysql> delete from user where not (user=’root’) ; // 刪除初始非root的用戶
#mysql> delete from user where user=’root’and password=”; //
刪除空密碼的root,盡量重復操作Query OK, 2 rows affected (0.00 sec) #
mysql> flush privileges; //強制刷新內存授權表。

 
3.改變默認mysql管理員帳號
 
4.關于密碼的管理 密碼是數據庫安全管理的一個很重要因素,不要將純文本密碼保存到數據庫中。
如果你的計算機有安全危險,入侵者可以獲得所有的密碼并使用它們。
相反,應使用MD5()、SHA1()或單向哈希函數。
也不要從詞典中選擇密碼,有專門的程序可以破解它們,
請選用至少八位,由字母、數字和符號組成的強密碼。在存取密碼時,
使用mysql的內置函數password()的sql語句,對密碼進行加密后存儲。
例如以下方式在users表中加入新用戶。
#mysql> insert into users values (1,password(1234),’test’);
 
5.使用獨立用戶運行msyql 絕對不要作為使用root用戶運行MySQL服務器。
這樣做非常危險,因為任何具有FILE權限的用戶能夠用root創建文件(例如,~root/.bashrc)。
mysqld拒絕使用root運行,除非使用?user=root選項明顯指定。應該用普通非特權用戶運行mysqld。
正如前面的安裝過程一樣,為數據庫建立獨立的linux中的mysql賬戶,該賬戶用來只用于管理和運行MySQL。
要想用其它Unix用戶啟動mysqld,,增加user選項指定/etc/my.cnf選項文件或服務器數據目錄的my.cnf選項文件中的[mysqld]組的用戶名。#vi /etc/my.cnf [mysqld] user=mysql
該命令使服務器用指定的用戶來啟動,無論你手動啟動或通過mysqld_safe或mysql.server啟動,
都能確保使用mysql的身份。
也可以在啟動數據庫是,加上user參數。
# /usr/local/mysql/bin/mysqld_safe ?user=mysql & 作為其它linux用戶而不用root運行mysqld,
你不需要更改user表中的root用戶名,因為MySQL賬戶的用戶名與linux賬戶的用戶名無關。
確保mysqld運行時,只使用對數據庫目錄具有讀或寫權限的linux用戶來運行。
 
此時打開了mysqld的網絡監聽,允許用戶遠程通過帳號密碼連接數本地據庫,
默認情況是允許遠程連接數據的。為了禁止該功能,啟動skip-networking,不監聽sql的任何TCP/IP的連接,切斷遠程訪問的權利,保證安全性。假如需要遠程管理數據庫,
可通過安裝PhpMyadmin來實現。假如確實需要遠程連接數據庫,至少修改默認的監聽端口,同時添加防火墻規則,只允許可信任的網絡的mysql監聽端口的數據通過。# vi /etc/my.cf 將#skip-networking注釋去掉。# /usr/local/mysql/bin/mysqladmin -u root -p shutdown //停止數據庫#/usr/local/mysql/bin/mysqld_safe ?user=mysql & //后臺用mysql用戶啟動mysql
 
7.限制連接用戶的數量 數據庫的某用戶多次遠程連接,
會導致性能的下降和影響其他用戶的操作,有必要對其進行限制?梢酝ㄟ^限制單個賬戶允許的連接數量來實現,
設置my.cnf文件的mysqld中的max_user_connections變量來完成。GRANT語句也可以支持 資源控制選項來限制服務器對一個賬戶允許的使用范圍。#vi /etc/my.cnf [mysqld] max_user_connections 2
 
8.用戶目錄權限限制 默認的mysql是安裝在/usr/local/mysql,
而對應的數據庫文件在/usr/local/mysql/var目錄下,
因此,必須保證該目錄不能讓未經授權的用戶訪問后把數據庫打包拷貝走了,
所以要限制對該目錄的訪問。確保mysqld運行時,
只使用對數據庫目錄具有讀或寫權限的linux用戶來運行。# chown -R root  /usr/local/mysql/  //

mysql主目錄給root # chown -R mysql.mysql /usr/local/mysql/var //

確保數據庫目錄權限所屬mysql用戶
 
9.命令歷史記錄保護 數據庫相關的shell操作命令都會分別記錄在.bash_history,

如果這些文件不慎被讀取,會導致數據庫密碼和數據庫結構等信息泄露,而登陸數據庫后的操作將記錄在.mysql_history文件中,如果使用update表信息來修改數據庫用戶密碼的話,也會被讀取密碼,

因此需要刪除這兩個文件,同時在進行登陸或備份數據庫等與密碼相關操作時,
應該使用-p參數加入提示輸入密碼后,隱式輸入密碼,建議將以上文件置空。
# rm .bash_history .mysql_history  //
刪除歷史記錄# ln -s /dev/null .bash_history   //
將shell記錄文件置空# ln -s /dev/null .mysql_history  //將mysql記錄文件置空
 
10.禁止MySQL對本地文件存取 在mysql中,提供對本地文件的讀取,使用的是load data local infile命令,默認在5.0版本中,該選項是默認打開的,該操作令會利用MySQL把本地文件讀到數據庫中,
然后用戶就可以非法獲取敏感信息了,假如你不需要讀取本地文件,請務必關閉。
應該禁止MySQL中用“LOAD DATA LOCAL INFILE”命令。
網絡上流傳的一些攻擊方法中就有用它LOAD DATA LOCAL INFILE的,同時它也是很多新發現的SQL Injection攻擊利用的手段!
黑客還能通過使用LOAD DATALOCAL INFILE裝載“/etc/passwd”進一個數據庫表,
然后能用SELECT顯示它,這個操作對服務器的安全來說,是致命的。

可以在my.cnf中添加local-infile=0,或者加參數local-infile=0啟動mysql。#/usr/local/mysql/bin/mysqld_safe ?user=mysql ?local-infile=0 &
#mysql> load data local infile ’sqlfile.txt’into table users fields terminated by ‘,’;
#ERROR 1148 (42000):
The used command is not allowed with this MySQL version ?local-infile=0
選項啟動mysqld從服務器端禁用所有LOAD DATA LOCAL命令,假如需要獲取本地文件,
需要打開,但是建議關閉。
 
11.MySQL服務器權限控制MySQL權限系統的主要功能是證實連接到一臺給定主機的用戶,并且賦予該用戶在數據庫上的SELECT、INSERT、UPDATE和DELETE等權限(詳見user超級用戶表)。
它的附加的功能包括有匿名的用戶并對于MySQL特定的功能例如LOAD DATA INFILE進行授權及管理操作的能力。 管理員可以對user,db,host等表進行配置,來控制用戶的訪問權限,而user表權限是超級用戶權限。只把user表的權限授予超級用戶如服務器或數據庫主管是明智的。
對其他用戶,你應該把在user表中的權限設成’N’并且僅在特定數據庫的基礎上授權。
你可以為特定的數據庫、表或列授權,FILE權限給予你用LOAD DATA INFILE和SELECT …INTO OUTFILE語句讀和寫服務器上的文件,任何被授予FILE權限的用戶都能讀或寫MySQL服務器能讀或寫的任何文件。(說明用戶可以讀任何數據庫目錄下的文件,因為服務器可以訪問這些文件)。
FILE權限允許用戶在MySQL服務器具有寫權限的目錄下創建新文件,
但不能覆蓋已有文件在user表的File_priv設置Y或N。
所以當你不需要對服務器文件讀取時,請關閉該權限。
#mysql> load data infile ’sqlfile.txt’into table loadfile.users fields terminated by ‘,’; Query OK, 4 rows affected (0.00 sec) //
讀取本地信息sqlfile.txt’Records: 4  Deleted: 0  Skipped: 0  Warnings: 0 #mysql> update user set File_priv=’N’where user=’root’; //
禁止讀取權限Query OK, 1 row affected (0.00 sec) Rows matched: 1  Changed: 1  Warnings: 0 mysql> flush privileges; //
刷新授權表Query OK, 0 rows affected (0.00 sec) #mysql> load data infile ’sqlfile.txt’into table users fields terminated by ‘,’; //
重登陸讀取文件#ERROR 1045 (28000): Access denied for user ‘root’@’localhost’(using password: YES) //
失敗# mysql> select * from loadfile.users into outfile ‘test.txt’fields terminated by ‘,’; ERROR 1045 (28000): Access denied for user ‘root’@’localhost’(using password: YES)

為了安全起見,隨時使用SHOW GRANTS語句檢查查看誰已經訪問了什么。然后使用REVOKE語句刪除不再需要的權限。
 
12.使用chroot方式來控制MySQL的運行目錄Chroot是linux中的一種系統高級保護手段,它的建立會將其與主系統幾乎完全隔離,也就是說,一旦遭到什么問題,也不會危及到正在運行的主系統。這是一個非常有效的辦法,特別是在配置網絡服務程序的時候。
 
13.關閉對無關的Web程序訪問的支持 如果不打算讓Web訪問使用MySQL數據庫,沒有提供諸如PHP這樣的Web語言的時候,重新設置或編譯你的PHP,取消它們對MySQL的默認支持。假如服務器中使用php等web程序,試試用Web形式非法的請求,如果得到任何形式的MySQL錯誤,立即分析原因,
及時修改Web程序,堵住漏洞,防止MySQL暴露在web面前。
對于Web的安全檢查,在MySQL官方文檔中這么建議,對于web應用,至少檢查以下清單: 試試用Web形式輸入單引號和雙引號(‘’’和‘”’)。如果得到任何形式的MySQL錯誤,立即分析原因。 試試修改動態URL,可以在其中添加%22(‘”’)、%23(‘#’)和%27(‘’’)。
試試在動態URL中修改數據類型,使用前面示例中的字符,包括數字和字符類型。
你的應用程序應足夠安全,可以防范此類修改和類似攻擊。 試試輸入字符、空格和特殊符號,不要輸入數值字段的數字。
你的應用程序應在將它們傳遞到MySQL之前將它們刪除或生成錯誤。將未經過檢查的值傳遞給MySQL是很危險的!
將數據傳給MySQL之前先檢查其大小。 用管理賬戶之外的用戶名將應用程序連接到數據庫。不要給應用程序任何不需要的訪問權限。
 
14.數據庫備份策略 使用mysqldump進行備份非常簡單,如果要備份數據庫”nagios_db_backup ”,

使用命令,同時使用管道gzip命令對備份文件進行壓縮,建議使用異地備份的形式,可以采用Rsync等方式,

將備份服務器的目錄掛載到數據庫服務器,將數據庫文件備份打包在,通過crontab定時備份數據:

#!/bin/sh time=`date +”(“%F”)”%R` $/usr/local/mysql/bin/mysqldump -u nagios -pnagios nagios
| gzip >/home/sszheng/nfs58/nagiosbackup/nagios_backup.$time.gz # crontab -l # m h  dom mon dow   command 00 00 * * * /home/sszheng/shnagios/backup.sh
恢復數據使用命令:gzip -d nagios_backup.(2008-01-24)00:00.gz nagios_backup.(2008-01-24)00:00 #mysql ?u root -p nagios      
<  /home/sszheng/nfs58/nagiosbackup/nagios_backup.(2008-01-24)12:00
 
15. Mysqld安全相關啟動選項?local-infile[={0|1}] 如果用?local-infile=0啟動服務器,則客戶端不能使用LOCAL in LOAD DATA語句。
?old-passwords 強制服務器為新密碼生成短(pre-4.1)密碼哈希。
當服務器必須支持舊版本客戶端程序時,為了保證兼容性這很有用。(OBSOLETE) ?safe-show-database 在以前版本的MySQL中,該選項使SHOW DATABASES語句只顯示用戶具有部分權限的數據庫名。
在MySQL 5.1中,該選項不再作為現在的 默認行為使用,有一個SHOW DATABASES權限可以用來控制每個賬戶對數據庫名的訪問。
?safe-user-create 如果啟用,用戶不能用GRANT語句創建新用戶,除非用戶有mysql.user表的INSERT權限。
如果你想讓用戶具有授權權限來創建新用戶,你應給用戶授予下面的權限:
mysql> GRANT INSERT(user) ON mysql.user TO ‘user_name’@’host_name’;
這樣確保用戶不能直接更改權限列,必須使用GRANT語句給其它用戶授予該權限。?secure-auth
不允許鑒定有舊(pre-4.1)密碼的賬戶。
 
16.information_schema 安全 在用戶角度來看,INFORMATION_SCHEMA只是一個以插件方式存在的存儲引擎,
編譯安裝的時候?disable-information-schema 就行了added TRIGGER_ACL check for I_S.TRIGGERS http://bugs.mysql.com/bug.php?id=38837
http://bugs.mysql.com/bug.php?id=27629
Phpmyadmin里隱藏方法$cfg['servers'][$i]['hide_db'] = ‘information_schema’;
 
再用vsftpd結合pam_mysql基本上一個web服務器大致就完工了Iptables方面:
 
iptables -F iptables -X iptables -Z iptables -A INPUT -i lo -j ACCEPT
iptables -P INTPUT DROP iptables -A INPUT -p tcp ?dport 21 -j ACCEPT
iptables -A INPUT -p tcp ?dport 22 -j ACCEPT iptables -A INPUT -p tcp ?dport 80 -j ACCEPT
iptables -A INPUT -p tcp -dport 80 -m recent -name BAD_HTTP_ACCESS -update -seconds 60
-hitcount 30 -j REJECT iptables -A INPUT -p tcp -dport 80 -m recent -name
BAD_HTTP_ACCESS -set -j ACCEPT iptables -P OUTPUT DROP iptables  -A OUTPUT -p tcp
?sport 80 -j ACCEPT iptables  -A OUTPUT -p tcp ?sport 21 -j ACCEPT iptables 
-A OUTPUT -p tcp ?sport 22 -j ACCEPT iptables -A INPUT -m state ?
state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -dport 80 -m recent -name BAD_HTTP_ACCESS -update
-seconds 60 -hitcount 30 -j REJECT
iptables -A INPUT -p tcp -dport 80 -m recent -name BAD_HTTP_ACCESS -set -j ACCEPT
iptables -A OUTPUT -m state ?state RELATED,ESTABLISHED -j ACCEPT
 
如果還不放心的話,最后用各類安全掃描工具掃描下服務器是否存在其他漏洞。
 
如果系統是windows系列的,一般修改相關路徑即可~

作者 ITLEAF's BLOG
相關TAG標簽
上一篇:臺積電:絕大多數7nm客戶都會轉向6nm_IT新聞_博客園
下一篇:最后一頁
相關文章
圖文推薦

關于我們 | 聯系我們 | 廣告服務 | 投資合作 | 版權申明 | 在線幫助 | 網站地圖 | 作品發布 | Vip技術培訓 | 舉報中心

版權所有: 紅黑聯盟--致力于做實用的IT技術學習網站

美女MM131爽爽爽毛片