欧美性猛交黑人xxxx,成人毛片一区二区三区,久久综合九色综合精品,男的把j放进女人下面视频免费

打造Linux下超級(jí)安全的LAMP服務(wù)器

  • 發(fā)布于:2023-02-07
  • 191 人圍觀
編前:本文全面細(xì)致的介紹了在Linux下加固apache+php+mysql的方法,通過仔細(xì)閱讀本文,你可以快速掌握安全配置apache,php,和mysql的方方面面,還有chroot這個(gè)前沿而強(qiáng)悍的技術(shù),依靠這些知識(shí),完全可以讓你的WWW服務(wù)器在層出不窮的SQL注射(SQL Injection)和CSS跨站腳本攻擊(Cross Site Script)中屹立不倒從動(dòng)網(wǎng)的幾個(gè)漏洞到獨(dú)孤劍客的網(wǎng)站被黑,腳本攻擊鬧的沸沸揚(yáng)揚(yáng),可見它在網(wǎng)絡(luò)攻擊中終于顯現(xiàn)出他的重要性了。由于程序開發(fā)人員無意或有意的不小心,用Perl、PHP、ASP等編寫的腳本就會(huì)出現(xiàn)這樣或那樣的錯(cuò)誤,輕則導(dǎo)致泄露路徑,重則導(dǎo)致整個(gè)服務(wù)器被攻陷甚至蔓延到整個(gè)網(wǎng)絡(luò)。難道我們就非得把所用的腳本讀N遍,認(rèn)真的分析?我相信不是人人都有這等功力的,就算有這樣的功力也不會(huì)枉費(fèi)那么多的時(shí)間和精力。


  你可能會(huì)問:“我既想用網(wǎng)上免費(fèi)的程序,又不想因此受到重創(chuàng)。難道就沒有一個(gè)兩全的辦法?”
    
    針對(duì)windows主機(jī),我們可以使用IISLockdown

    針對(duì)*nix主機(jī)給大家提出兩個(gè)方案,一個(gè)就是給apache裝上mod-security模塊,另外一個(gè)辦法就是把LAMP放置在一個(gè)chroot jail環(huán)境中。當(dāng)然,最強(qiáng)的還是把兩個(gè)方案結(jié)合在一起咯:)
   下面,讓我們一起來分享這兩個(gè)方案
前提:我們只需要有普通的linux操作經(jīng)驗(yàn),包括vi的使用等

首先,我們先弄清楚幾個(gè)概念

什么是Debian:一個(gè)完全自由的Linux操作系統(tǒng),他最令我心儀的就是他的apt包管理工具,讓你安裝或者升級(jí)軟件無憂!如果你是CERNET用戶的話,推薦你到中科大http://debian.ustc.edu.cn或者我的網(wǎng)站http://secu.zzu.edu.cn升級(jí),CHINANET用戶可以在http://mirror.gennkbone.org升級(jí)

什么是LAMP:就是Linux Apache MySQL Php的縮寫,幾乎是最強(qiáng)的架站組合

什么是chroot:是change root的縮寫,就是把一個(gè)進(jìn)程守護(hù)程序限制在某個(gè)特定的root環(huán)境中執(zhí)行,這個(gè)被chroot了的程序幾乎接近無法訪問任何超出了這個(gè)root的任何文件或空間,這個(gè)root目錄(也就是下面我們說到的jail)包含了執(zhí)行進(jìn)程守護(hù)程序所需要的所有文件,在你正確配置之后,絕大多數(shù)的入侵者是不可能跳出jail而接觸到外面的文件的。這樣我們就可以最大限度的限制入侵者保護(hù)自己。


本文主要涉及到的軟件

makejail     http://www.floc.net/makejail/
是一個(gè)自動(dòng)把建立jail所需要的程序放到j(luò)ail內(nèi)的軟件,使用python編寫,他有debian和openbsd的版本

Zend Performance Suit http://www.zend.com
Zend公司開發(fā)的一套給PHP加速的東西,包括一個(gè)代碼優(yōu)化器(optimizer)和一個(gè)加速器(accelerator)


,還有cache功能,很好使的,有了他,php程序跑起來就跟飛一樣!可以申請(qǐng)30天試用版本的,如果你覺得好用的話就買下來吧:)

mod-security http://www.modsecurity.org/
他是apache的一個(gè)模塊,他有請(qǐng)求過濾,日志審計(jì)等功能,可以防止SQL Injection,跨站腳本攻擊,很不錯(cuò)的一個(gè)模塊

OK,動(dòng)手
我們假設(shè)我們手頭上有一個(gè)裝好的debian woody,并且已經(jīng)正確設(shè)置了了apt源

二話不說,先升級(jí)到debian sarge,也就是testing版本,我覺得這個(gè)版本還是不錯(cuò)的,因?yàn)樗能浖容^新,而且有security支持,最主要這個(gè)版本的軟件列表包含makejail這個(gè)軟件

首先su到root升級(jí)系統(tǒng)并安裝apache,php,mysql,gd
更新apt源,我在教育網(wǎng),所以使用中科大的apt源debian.ustc.edu.cn速度很快
[root@debian /]apt-get update (如圖update.jpg)
再更新所有軟件包
[root@debian /]apt-get dist-upgrade(如圖upgrade.jpg)


[root@debian /]apt-get install apache php4 php4-gd2 php4-mysql mysql-server mysql-client
并且把extension=gd.so和extension=mysql.so加到php.ini中
你的系統(tǒng)就已經(jīng)裝上了apache-1.3.27,php-4.1.2,mysql-4.0.13
這樣一個(gè)基本的LAMP就起來了,簡(jiǎn)單吧。
再加一個(gè)系統(tǒng)用戶,這個(gè)用戶是我們等會(huì)chroot要用的
[root@debian /]adduser --home /chroot/apache --shell /dev/null --no-create-home --system --group chrapax


接著我們編輯httpd.conf文件并做一些修改,刪除多余的apache模塊并激活php模塊

[root@debian /]vi /etc/apache/httpd.conf

注釋掉除了mod_access,mod_auth,mod_dir,mod_log_config,mod_mime,mod_alias之外的所有模塊
去掉注釋LoadModule php4_module /usr/lib/apache/1.3/libphp4.so以支持PHP (如圖apache_mod.jpg )


設(shè)置ServerAdmin fatb@zzu.edu.cn
設(shè)置ServerName secu.zzu.edu.cn

下面的Options Indexes Includes FollowSymLinks MultiViews的Indexes去掉,這樣避免被別人索引目錄
把用戶和組改成chrapax
User chrapax
Group chrapax
在下面加上index.php如下

    DirectoryIndex index.php index.html index.htm index.shtml index.cgi

默認(rèn)使用中文字符集
AddDefaultCharset gb2312
加出錯(cuò)重定向,這樣當(dāng)出現(xiàn)下面的錯(cuò)誤的時(shí)候,用戶就會(huì)被重頂向到到你指定的頁(yè)面
ErrorDocument 404 http://secu.zzu.edu.cn/index.php
ErrorDocument 402 http://secu.zzu.edu.cn/index.php
ErrorDocument 403 http://secu.zzu.edu.cn/index.php
ErrorDocument 500 http://secu.zzu.edu.cn/index.php
把signature關(guān)掉
ServerSignature Off
如果signature打開的話,當(dāng)有人訪問到一個(gè)被禁止或者不存在的頁(yè)面的話,會(huì)出現(xiàn)一些錯(cuò)誤信息的
這樣的信息,不好,去掉他 (如圖403.jpg)
如果不需要cgi支持的話,刪除
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

    AllowOverride None
    Options ExecCGI -MultiViews
    Order allow,deny
    Allow from all

這行的注釋去掉,因?yàn)槲覀冃枰狿HP支持
把AddType application/x-httpd-php .php
最后把多余的Alias,Directory,Location都去掉,保存退出
OK,apache算是配置完畢,我比較喜歡干凈的配置文件,下面的命令可以去掉httpd.conf里#打頭的行
[root@debian /]mv httpd.conf httpd.conf.bak
[root@debian /]grep -v '#' httpd.conf.bak > httpd.conf
到此為止,apache配置文件編輯完畢


接著我們開始加固php,我們打開php.ini
[root@debian /]vi /etc/php4/apache/php.ini
首先打開安全模式,打開他的好處就是PHP文件只能訪問所有者和PHP文件所有著一樣的文件,即使在chroot環(huán)境下也無法訪問jail中屬主不一樣的文件,類似于php shell這樣的后門就沒用武之地了哦,phpshell是很流行的php后門,他可以執(zhí)行系統(tǒng)命令,就象他的名字一樣,和shell很接近(如圖phpshell.jpg)
safe_mode = On

如果php程序沒有指明需要register_globals的話,最好把register_globals設(shè)置為Off,這樣可以避免很多安全問題的
舉個(gè)例子吧,我們有一個(gè)這樣的PHP文件片段叫做test.php

// 前面的代碼
if ($authorised) {
// 執(zhí)行一些受保護(hù)的動(dòng)作
}
// 其余的代碼
}
?>
如果register_globle是打開的話,入侵者可以通過提交這樣一個(gè)請(qǐng)求來繞過驗(yàn)證
http://www.test.com/test.php?authorised=1
當(dāng)然,如果你非得使用register_globle的話,我們?cè)诤竺嫱瑯涌梢允褂胢od-security來限制一下的

open_basedir =/var/www/
上面的設(shè)置就限制了fopen(), file()等函數(shù)可以操作的目錄范圍,避免了入侵者非法讀取文件,一定要在/var/www后面加"/",否則/var/wwww下的文件也能被訪問

禁止使用phpinfo和get_cfg_var函數(shù),這樣可以避免泄露服務(wù)信息
disable_functions = phpinfo,get_cfg_var
如果我們使用了被禁止使用的phpinfo函數(shù)的話,我們可以看到這樣的錯(cuò)誤

Warning: phpinfo() has been disabled for security reasons in /var/www/info.php on line 1


設(shè)置php程序錯(cuò)誤日志,這樣我們可以很清楚的知道程序問題所在
error_reporting  =  E_ALL
log_errors = On
error_log = /var/log/php_err.log


默認(rèn)display_error是打開的,我們?cè)趈ail沒弄好之前還是打開他,或許出錯(cuò)信息可以給我們一點(diǎn)提示的,但是在完工之后記得關(guān)閉這個(gè)選項(xiàng)啊,因?yàn)樗@示出的一些出錯(cuò)信息有可能會(huì)暴露你的物理路徑的。
在這個(gè)過程中,最需要注意的就是不能使用root做為php程序的屬主,否則php程序就可以隨意訪問他的屬主,也就是root所有的文件了,這樣就完全失去了safe_mode的意義了
OK,保存退出
到此為止,針對(duì)php的安全優(yōu)化基本上完畢,下面我們開始給mysql"做手腳"吧

Debian下用apt裝的mysql默認(rèn)已經(jīng)禁止從網(wǎng)絡(luò)連接mysql了的,我們可以從他的配置文件my.cnf里看出來,但是得注意一下,RedHat的RPM,FreeBSD的ports安裝,skip-networking是注釋掉了的,也就是監(jiān)聽3306端口了,要是mysql出了什么問題,別人就可以有機(jī)會(huì)利用了
[root@debian /]grep net /etc/mysql/my.cnf
# The skip-networkin option will no longer be set via debconf menu.
# You have to manually change it if you want networking i.e. the server
skip-networking
在這個(gè)方面Debian做的不錯(cuò),但是Debian和Freebsd下系統(tǒng)裝的mysqld是動(dòng)態(tài)鏈接的,而RedHat的RPM安裝的就是靜態(tài)的,我們可以通過下面的命令來查看
[root@debian ~]file `which mysqld`
/usr/sbin/mysqld: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped
我們可以看到"dynamically linked"字樣,這樣在chroot mysql的時(shí)候就比較麻煩了,因?yàn)橐獜?fù)制很多的共享庫(kù),不過在debian下我們有makejail:)等會(huì)我們就可以看到他的威力了

接著我們修改mysql數(shù)據(jù)庫(kù)里的東西,不過不管怎么樣,我們首先得給mysql設(shè)置一個(gè)密碼并修改管理員用戶名(默認(rèn)是root),但一定得記得,無論怎么樣修改密碼,都會(huì)有記錄的,如果通過mysqladmin修改,shell的歷史記錄會(huì)有的,如果登陸了mysql之后再修改,在~/.mysql_history會(huì)記錄的,所以我們一定得處理這兩個(gè)歷史記錄文件,我們把他們刪了,再?gòu)?dev/null做個(gè)軟連接過來就可以解決問題了
[root@debian /]cd ~
[root@debian ~]ll
total 13K
-rw-------    1 root     root         1.8K Sep 28 21:05 .bash_history
-rw-------    1 root     root           14 Sep 29 09:29 .mysql_history
我們可以看到這兩個(gè)文件里面都記錄了東西的,下面我們處理他們
[root@debian ~]rm .bash_history
[root@debian ~]rm .mysql_history
[root@debian ~]ln -s /dev/null .bash_history
[root@debian ~]ln -s /dev/null .mysql_history
我們?cè)倏纯?BR>[root@debian ~][root@debian ~]ll
total 10K
lrwxrwxrwx    1 root     root            9 Sep 29 09:29 .bash_history -> /dev/null
lrwxrwxrwx    1 root     root            9 Sep 29 09:29 .mysql_history -> /dev/null
現(xiàn)在可以放心的設(shè)置密碼了
[root@debian ~]mysqladmin -u root password mypasswd
這樣我們以后root就得通過"mypasswd"這個(gè)密碼來訪問mysql數(shù)據(jù)庫(kù)了

然后我們刪除多余的數(shù)據(jù)庫(kù)并去掉匿名帳號(hào)
[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;

然后修改默認(rèn)的管理員帳號(hào)root為你喜歡的,我這里改成fatb

mysql> update user set user="fatb" where user="root";
mysql> flush privileges;
以后我們就得通過fatb帳號(hào)訪問mysql數(shù)據(jù)庫(kù)了
[root@debian ~]mysql -u root -p
Enter password:
ERROR 1045: Access denied for user: 'root@localhost' (Using password: YES)
[root@debian ~]mysql -u fatb -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 14 to server version: 4.0.13-log
到這里,mysql的安全設(shè)置基本上完畢了

現(xiàn)在我們安裝mod-security,debian下同樣很簡(jiǎn)單,并且自動(dòng)把模塊加到httpd.conf里
[root@debian /]apt-get install libapache-mod-security
默認(rèn)這個(gè)模塊是沒激活的,編輯一下httpd.conf文件并去掉下面這行的注釋
LoadModule security_module /usr/lib/apache/1.3/mod_security.so
接著在httpd.conf的末尾加上

    # 打開或者關(guān)閉過濾引擎
    SecFilterEngine On
    # 設(shè)置缺省的動(dòng)作    
    SecFilterDefaultAction "deny,log,status:404"
    # 把設(shè)置傳遞給字目錄
    SecFilterInheritance Off
    # 檢測(cè)URL編碼是否正確
    SecFilterCheckURLEncoding On
    # 檢測(cè)內(nèi)容長(zhǎng)度以避免堆溢出攻擊
    SecFilterForceByteRange 32 126
    # 日志文件的位置和名字
    SecAuditLog logs/audit_log
    # debug設(shè)置
    SecFilterDebugLog logs/modsec_debug_log
    SecFilterDebugLevel 0
    # 檢測(cè)POST數(shù)據(jù)
    SecFilterScanPOST On
    # 當(dāng)匹配sh的時(shí)候,重新定向到一個(gè)特殊的頁(yè)面,讓攻擊者知難而退
    SecFilter sh redirect:http://secu.zzu.edu.cn/hack/fu.htm
    # Only check the body of the POST request
    #過濾一些敏感的東西,我們使用*是為了攻擊者使用/etc/./passwd來繞開檢測(cè)
    SecFilter /etc/*passwd
    SecFilter /bin/*sh
    # 防止double dot攻擊,也就是類似http://www.test.com/openfile.php?path=/../../..,雖然這個(gè)漏洞看似弱智,但是很多網(wǎng)站都有的,比如CERNET某大學(xué)某圖片站:)
    SecFilter "../"
    # 防止跨站腳本(CSS)攻擊
    SecFilter "<( | )*script"
    SecFilter "<(.| )+>"
    # 防止SQL插入(SQL Injection)攻擊
    SecFilter "delete(空格| )+from"
    SecFilter "insert(空格| )+into"
    SecFilter "select(空格| )+from"
    # 下面是限制了upload.php文件只能用來上傳jpeg.bmp和gif的圖片
    
        SecFilterInheritance Off
        SecFilterSelective POST_PAYLOAD "!image/(jpeg|bmp|gif)"
    

用好了mod-security,可以使你的網(wǎng)站的安全性大大的提高的,在他帶的manual里你可以找到更多的設(shè)置的,在光盤中附帶了更加詳細(xì)的規(guī)則
(mod-security.rule.txt)


然后我們裝Zend Performance Suit,在安裝的時(shí)候,他問你使用的用戶的時(shí)候,記得寫chrapax而不是www-data

order allow,deny
allow from 211.43.125.63(你的IP)
deny from all
Options All


下面重頭戲到了,chroot,非常重要的一步,但可能還是比較簡(jiǎn)單的一步,先把幾個(gè)python寫的配置文件復(fù)制到/etc/makejail下
[root@debian /etc/makejail]cp /usr/share/doc/makejail/examples/apache.py ./
然后編輯apache.py文件添加修改相應(yīng)的信息
users=["chrapax"]
groups=["chrapax"]
packages=["apache","apache-common","php4","php4-gd","mysql-common","libapache-mod-security"]
然后執(zhí)行makejail命令
[root@debian /etc/makejail]makejail apache.py
完成之后,我們得先做個(gè)軟連接并把chrapax從passwd和group文件分離出來
[root@debian /etc/makejail]ln -s /var/chroot/apache /apache
[root@debian /etc/makejail]grep chrapax /etc/passwd > /apache/etc/passwd
[root@debian /etc/makejail]grep chrapax /etc/group > /apache/etc/group
[root@debian /etc/makejail]cp /etc/mime.types /apache/etc/
然后在/etc/init.d里建一個(gè)叫chrapax的文件并讓他可執(zhí)行,內(nèi)容詳見光盤中的chrapax
[root@debian /etc/makejail]cat > /etc/init.d/chrapax
[root@debian /etc/makejail]chmod +x /etc/init.d/chrapax
接著使用rcconf命令讓他在系統(tǒng)啟動(dòng)的時(shí)候啟動(dòng)(如圖rcconf.bmp)
[root@debian /etc/makejail]rcconf
啟動(dòng)chroot的apache
[root@debian /etc/makejail]/etc/init.d/chrapax start
先測(cè)試一下php和mysql連接是否有問題
[root@debian /etc/makejail]cat > /apache/var/www/mysql.php
    $conn = mysql_connect("localhost", "fatb", "urpassword")
      or die;
    print "php can work with mysql now";
    mysql_close($conn);
    phpinfo();
?>
結(jié)果瀏覽器返回
Warning: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /var/www/mysql.php on line 2

但是我們可以看到在/var/run/mysqld/下的確有mysqld.sock文件,其實(shí)就是因?yàn)槲覀円呀?jīng)chroot apache了,他只能訪問apache root jail里的東西,也就是/var/chroot/apache下面的東西,而mysqld.sock明顯在jail外面,所以連接不上當(dāng)然是很正常的了,解決這個(gè)問題的方法也很簡(jiǎn)單,做個(gè)硬連接就是了
[root@debian /apache/var/run/mysqld]ln /var/run/mysqld/mysqld.sock mysqld.sock
再訪問一下mysql.php看看,果然OK了吧(如圖ok.bmp)


經(jīng)過我們這樣一弄,整個(gè)LAMP服務(wù)器就安全的多了,就算萬一php程序編寫的不安全或者apache,php出了什么漏洞,想入侵進(jìn)來并且跳出root jail還是非常困難的


參考:
security apache step by step
security php step by step
security mysql step by step
(不知道為什么在家里上網(wǎng)搜索不到這三個(gè)文章了,在www.securityfosuc.com的,有興趣的可以去看看)
mod-security manual

san的php安全配置
http://www.xfocus.net/articles/200111/304.html
萬企互聯(lián)
標(biāo)簽: