限定某個目錄禁止解析php 、限制user_agent 、php的配製文件、PHP的動態擴展模塊

一、 限定某個目錄禁止解析php(有些目錄用戶能夠上傳文件或圖片,可能會被惡意者上傳其它文件):
編輯:/usr/local/apache2.4/conf/extra/httpd-vhosts.confphp

加入:git

<Directory /var/www/222/upload>
php_admin_flag engine off
</Directory>
github

 

創建目錄:mkdir /var/www/222/upload -p
寫php文件:echo "<?php phpinfo(); ?>" >/var/www/222/upload/index.php
檢查語法:/usr/local/apache2.4/bin/apachectl -tredis


重啓、訪問、測試:
shell

而訪問upload目錄下的其它文件就沒有問題:

apache

配製文件上傳目錄 php不解析或禁止訪問的主要目的,是爲了防止惡意者上傳相關木馬。(注意:靜態文件所存放的目錄是不容許放php文件的)vim

 

二、限制user_agent(能夠理解爲對瀏覽器的標識,若遇到cc攻擊的時候,能夠把攻擊者用的瀏覽器給禁止掉)瀏覽器

編輯:/usr/local/apache2.4/conf/extra/httpd-vhosts.conf
加入:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} .*curl.* [NC,OR]   (NC,忽略大小寫,OR 是或者與下一個條件是或的意思)
RewriteCond %{HTTP_USER_AGENT} .*baidu.com.* [NC]
RewriteRule .* - [F]   (F,forbidden)
</IfModule>
curl

檢查配製文件、重啓、訪問測試:
socket

查看訪問日誌:

這樣,就能夠相對的防止惡意攻擊。

 curl  -I 只看情況信息  -A 指定agent   -x (省略host,直接指定目標ip:port)

 
三、php的配製配製文件
    能夠經過php的phpinfo();函數來查看,固然還能夠在安裝時已經指定的目錄下,進行配製,

找到路徑,而後對其進行配製:

 設置時區:date.timezone 
把它改爲:date.timezone =Asia/Shanghai 或:date.timezone =Asia/Chongqing

而後,再設置一些禁止訪問的函數:
disable_functions=  
把它改爲:disable_functions=eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close

訪問:

爲了避免顯示這個,就配製:display_errors
把它改爲:display_errors = Off


重啓apache:/usr/local/apache2.4/bin/apachectl graceful
而後再次訪問:

設置php.ini文件裏的錯誤日誌,因爲上面,看不到任何問題(找不到緣由),因此,就得查看日誌

把錯誤日誌開啓:log_errors = On

設置錯誤日誌的存放路徑:error_log = /tmp/ php_errors.log

設置錯誤日誌的級別:error_reporting = E_ALL & ~E_DEPRECATED

 而後,重啓,訪問

查看日誌:

這裏須要注意的,就是日誌存放的 目錄必須要有訪問權限(相關用戶)。

 

設置網站獨立的目錄或文件活動的權限 open_base = dir_name:  (好比網站被入侵了,可能還會被人家繼續滲透,這樣子,就只能在這個目錄範圍內)

 
可是這樣子,就會把全部的dir_name 目錄給限定了,因此,意義不大。
因而就只有改虛擬機的配製文件:/usr/local/apache2.4/conf/extra/httpd-vhost.conf
在裏面加入:
php_admin_value open_basedir "/var/www/222/:/tmp/"  (防止,被入侵後繼續擴展)

檢查配製,重啓,訪問:

而後,改正確:

到此目錄可控權限給設置完成。

 

四、PHP的動態擴展模塊:

例如添加一個phpredis模塊:
下載phpredis:wget -c https://codeload.github.com/phpredis/phpredis/zip/develop
更名:mv develop phpredis-develop.zip
解壓:unzip phpredis-develop.zip
進入:cd phpredis-develop/
運行:/usr/local/php56/bin/phpize     (在目錄內支行/usr/local/php56/bin/phpize,目的是爲了什麼configure文件)
配製:./configure --with-php-config=/usr/local/php56/bin/php-config
編譯安裝:make  && make install
編輯: vim /usr/local/php56/etc/php.ini
加入:extension=redis.so
查看:/usr/local/php56/bin/php -m |grep redis

到些phpredis 就加載成功。

其它安裝模塊,若源碼包安裝自帶得有的話,就在ext下執行相關的安裝操做。 

 例如:
步驟:
進入php的源碼包:cd /home/nfyx/source/php-5.6.36/ext/
進入須要安裝擴展模塊的目錄:cd  ****/
運行這條命令:/usr/local/php56/bin/phpize  (生成configure文件)
配製:./configure --with-php-config=/usr/local/php56/bin/php-config ;echo $?
編譯安裝:make && make install
查看默認路徑下是否生成了擴展模塊:ls /usr/local/php56/lib/php/extensions/no-debug-zts-20131226/
修改php.ini文件:vim /usr/local/php56/etc/php.ini
加入這行:extension=zip.so
最後進行查看是否加載:/usr/local/php56/bin/php -m |grep zip




到此源碼包裏面的擴展模塊安裝結束。

相關文章
相關標籤/搜索