日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

打造Ubuntu下的SLAMP

發布時間:2025/1/21 115 豆豆
生活随笔 收集整理的這篇文章主要介紹了 打造Ubuntu下的SLAMP 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

現在LAMP(Linux+Apache+Mysql+PHP)架站模式是越來越流行了,幾乎都可以說是成為了架站的時尚了。但常言道樹大招風,相應的安全問題也就隨之而來了,象層出不窮的SQL腳本注入(SQL Injection)及CSS跨站腳本***(Cross Site Script)等讓人不厭其煩。那么有沒有什么好的方法來盡量減少這方面的危險呢?甚至在事發之后可以有效的進行日志反查以明白其***手法為日后響應做準備呢?答案是肯定的!其實這已經不再屬于局限于架站而更多屬于安全的范疇了,也就是如標題所言要如何建立一個SLAMP(Security)服務器了。
本來是想利用makejail包做一個chroot環境的。但由于makejail包只在基于Debian woody的Apache 1.3.22 上做過測試,而由于沒有時間,本人暫時也還沒做過基于Ubuntu 5.04上的Apache2的測試,所以不敢妄語,有哪位朋友做過或有類似方式的話,還請不吝賜教!好了廢話少說,下面就開始我們的安全架站之旅了。本文的所有操作在Ubuntu 5.04發行版上測試通過。具體步驟如下:
1.將系統更新到最新狀態,在做任何操作之前都要做這一步,以確保系統的穩定,同時也不會有一些莫名其妙的現象出現。
$sudo apt-get update
$sudo apt-get upgrade-dist
2.架設LAMP服務器
$sudo apt-get apache2 mysql-server php4 php4-gd php4-mysql
3.配置LAMP服務
a) 我們編輯/etc/php4/apache2/php.ini文件,先做一般配置,在改動之前,請先將該配置文件做個備份。以便在出錯的時候可以恢復。
>memory_limit = 8M =>修改成你所需的內存大小
>upload_max_filesize = 2M =>修改文件最大上傳尺寸
>extension=mysql.so
>extension=gd.so =>將你要用到模塊前面的注釋給去掉
b) 這樣LAMP服務就算是架設完成了,下面就要對該架構進行安全加固了。
4.編輯/etc/apache2/apache2.conf文件,在改動之前,請先將該配置文件做個備份。以便在出錯的時候可以恢復。
>AddDefaultCharset ISO-8859-1 =>AddDefaultCharset GB2312
6.然后開始加固php,我們再次編輯/etc/php4/apache2/php.ini文件,之所以沒有一次改完,主要是為了給大家一個清晰的思路。
>#打開安全模式,打開他的好處就是PHP文件只能訪問所有者和PHP文件所有著一樣的文件,即使在chroot環境下也無法訪問jail 中屬主不一樣的 文件,類似于php shell這樣的后門就沒用武之地了哦,phpshell是很流行的php后門,他可以執行系統命令,就象他的名字一樣,和shell很接近。
>safe_mode = On
>#上面的設置就限制了fopen(), file()等函數可以操作的目錄范圍,避免了***者非法讀取文件,一定要在/var/www后面加"/",否則/var/wwww下的文件也能被訪問 。
>open_basedir = /var/www/
>#禁止使用phpinfo和get_cfg_var函數,這樣可以避免泄露服務信息,一般在在確認PHP能正常工作之后再使之關閉
>disable_functions = phpinfo,get_cfg_var
>#設置php程序錯誤日志
>error_reporting = E_ALL
>log_errors = On
>error_log = /var/log/php_err.log
>#如果php程序沒有指明需要register_globals的話,最好把register_globals設置為Off,這樣可以避免很多安全問題的。注意,如果你的程序是需要register_globals的話,可千萬別關。Ubuntu默認是關閉的。
>register_globals = Off
>#禁止打開遠程地址,記得最近出的php include的那個漏洞嗎?就是在一個php程序中include了變量,那么***者就可以利用這個控制服務器在本地執行遠程的一個php程序,例如phpshell,所以我們關閉這個。
>allow_url_fopen = Off
7.這樣PHP的安全優化就做好了,下面做MySQL的安全優化。
a)在Ubuntu下用apt裝的mysql默認是禁止從網絡連接MySQL的,我們可以從/etc/mysql/my.cnf文件中看到有 skip-networking語句的,如果你做的是MySQL服務器的話,那么是要將其注釋掉的,這樣其他機器才能訪問你這臺機器,如果該服務僅供本機使用的話,那么就保持原狀,這樣別的機器不能訪問你這臺機器的MySQL。由于這里是做在一起的,所以保持不變好了。
b)然后我們給mysql設置一個密碼并修改管理員用戶名(默認是root),但一定得記得,無論怎么樣修改密碼,都會有記錄的,如果通過 mysqladmin修改,shell的歷史記錄會有的,如果登陸了mysql之后再修改,在 ~/.mysql_history會記錄的,所以我們一定得處理這兩個歷史記錄文件,我們把他們刪了,再從/dev/null做個軟連接過來就可以解決問題了。注意由于我們會在SHELL下用的是sudo,所以該歷史是保存在本用戶目錄下的,而不是在根用戶目錄下的。而mysql也是在本用戶目錄下使用的,所以也是保存在本用戶目錄下的。如果你覺得不能記憶歷史記錄麻煩的話,也可以在用到了MySQL的Root用戶之后,進入這兩個文件中,將相關語句刪除。
$rm .bash_history
$rm .mysql_history
$ln -s /dev/null .bash_history
$ln -s /dev/null .mysql_history
c)然后我們刪除多余的數據庫并去掉匿名帳號
[root@debian ~]mysql -u root -p
Enter password:XXXXXX
mysql> drop database test;
mysql> use mysql;
mysql> delete from db;
mysql> delete from user where not (host="localhost" and user="root");
mysql> flush privileges;
d)然后修改默認的管理員帳號root為你喜歡的,我這里改成myadmin
mysql> update user set user="myadmin" where user="root";
mysql> flush privileges;
這樣就可以通過myadmin而不是root用戶名來訪問MySQL數據庫了!
8.現在我們安裝mod-security。
a)首先安裝libapache2-mod-security包
$sudo apt-get install libapache2-mod-security
b)該模塊默認是沒激活的,我們可以在/etc/apache2/mods-available目錄下看到有mod-security.load文件,但在/etc/apache2/mods-enabled目錄卻沒有它的軟鏈接。我們現在激活它:
$sudo ln -s /etc/apache2/mods-available/mod-security.load /etc/apache2/mods-enabled/mod-security.load
$sudo cp /usr/share/doc/libapache2-mod-security/examples/httpd2.conf.example-full /etc/apache2/mods-available/mod-security.conf
$sudo vi /etc/apache2/mods-available/mod-security.conf,老規則改動之前先做好備份。
># 檢測內容長度以避免堆溢出***
>SecFilterForceByteRange 32 254 =>SecFilterForceByteRange 32 126
># debug設置
>SecFilterDebugLevel 9 =>SecFilterDebugLevel 0
># 設置缺省的動作
>SecFilterDefaultAction "deny,log,status:499" =>SecFilterDefaultAction "deny,log,status:404"
># 把設置傳遞給子目錄
>SecFilterInheritance Off
># Redirect user on filter match
># 當匹配sh的時候,重新定向到一個特殊的警告頁面,該頁面是自行編寫的,寫些警告的話讓***者知難而退,該段先不要生效,等到相關配置配好之后再失效不遲。記住在配好之后要使之生效。
>#SecFilter sh redirect:http://localhost/hack/warning.htm
># Prevent OS specific keywords
>#過濾一些敏感的東西,我們使用*是為了***者使用/etc/./passwd來繞開檢測
>SecFilter /etc/passwd =>SecFilter /etc/*passwd
>SecFilter /bin/*sh
># Very crude filters to prevent SQL injection attacks
># 防止SQL插入(SQL Injection)***
>SecFilter "delete[[:space:]]+from"
>SecFilter "insert[[:space:]]+into"
>SecFilter "select.+from"
>SecFilter "select[[:space:]]+from"
>SecFilter "union[[:space:]]+from"
$sudo ln -s /etc/apache2/mods-available/mod-security.conf /etc/apache2/mods-enabled/mod-security.conf
c)重啟Apache2服務即可。
$sudo /etc/init.d/apache2 restart

總結

以上是生活随笔為你收集整理的打造Ubuntu下的SLAMP的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。