一、 限定某個目錄禁止解析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攻擊的時候,能夠把攻擊者用的瀏覽器給禁止掉)瀏覽器
<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)
找到路徑,而後對其進行配製:
設置時區: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
到此源碼包裏面的擴展模塊安裝結束。