限定某個目錄禁止解析php 、限制user_agent 、php的配制文件、PHP的動態擴展模塊
1、 限定某個目錄禁止解析php(有些目錄用戶可以上傳文件或圖片,可能會被惡意者上傳其它文件):
編輯:/usr/local/apache2.4/conf/extra/httpd-vhosts.conf
加入:
<Directory /var/www/222/upload>
php_admin_flag engine off
</Directory>
建立目錄:mkdir /var/www/222/upload -p
寫php文件:echo "<?php phpinfo(); ?>" >/var/www/222/upload/index.php
檢查語法:/usr/local/apache2.4/bin/apachectl -t
重啟、訪問、測試:
而訪問upload目錄下的其它文件就沒有問題:
配制文件上傳目錄 php不解析或禁止訪問的主要目的,是為了防止惡意者上傳相關木馬。(註意:靜態文件所存放的目錄是不允許放php文件的)
2、限制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 -I 只看狀況信息 -A 指定agent -x (省略host,直接指定目標ip:port)
3、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/" (防止,被入侵後繼續擴展)
檢查配制,重啟,訪問:
然後,改正確:
到此目錄可控權限給設置完成。
4、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 、限制user_agent 、php的配制文件、PHP的動態擴展模塊