禁止php解析
对于使用php语言编写的网站,有一些目录是需要上传文件的,如果网站有漏洞,让黑客上传了一个用php代写的木马,由于网站可以执行php程序,最终会让黑客拿到服务器权限,为了避免这种情况发生,我们需要把能上传文件的目录直接禁止解析php代码。
<Directory /data/wwwroot/111.com/upload>
php_admin_flag engine off
<FileMatch (.).php(.)>
Order allow,deny
Deny from all
</FileMatch>
</Directory>
这样做可以双保险,既不能解析php,又不能访问。
单纯禁止解析php curl -x192.168.1.107:80 111.com/upload/123.php <?php echo "123.php";(这个结果就是禁止解析php的结果,直接显示了源代码)
限制user_agent#
有时候我们网站会受到cc攻击,它的原理很简单,就是用很多用户的电脑同时访问同一个站点,当访问量达到了一定的层次,站点就会耗尽服务器的资源,从而使之不能正常的提供服务。这种cc攻击的规律很明显,其中恶意请求的user_agent相同或者相似,那么我们就可以通过限制user_agent发挥防攻击作用。
具体做法:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} .curl. [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .baidu.com. [NC]
RewriteRule .* - [F]
</IfModule>
其中OR表示或者,NC 表示忽略大小写。
RewriteRule .* - [F] 这句表示重写规则被禁止, 其中F表示Forbidden(禁止)
php相关配置
查看php配置文件的位置 /usr/local/php/bin/php -i|grep -i "loaded configuration file" 定义时区 date.timezone 我们可以写Asia/shanghai或者chongqing 安全函数 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 日志相关 error_log, log_errors, display_errors, error_reporting
open_basedir
作用是将网站限定在一个目录里,就算该站点被黑,黑客也只能在这一个目录下有所作为,而不能操作其他的目录。如果服务器上只有一个站点,那可以在php.ini中设置open_basedir,如果服务器上站点较多,拿在php.ini中设置就不合适了,因为在php.ini中只能定义一次。 具体操作方法: 首先打开PHP的配置文件 vim /usr/local/php/etc/php.ini 然后搜索open_basedir 然后找到open_basedir= 将虚拟主机的(网站)的根目录输入进去。 以上是单一网站的设置 我们还可以针对不同的虚拟主机设定不同的open_basedir php_admin_value open_basedir "/data/网站根目录的路径/