webshell作为一种服务器端解析脚本,它的破坏力极为惊人。服务器在设置不当的情况下非常容易被提权,从而拿到服务器权限。回想十多年前老徐作为一名脚本小子,也曾拿下过不少站点服务器权限,所以在信息安全这一块老徐尤为谨慎。本篇主要介绍一下我是如何设置nginx从而防止webshell窥探任意目录。
nginx配置
fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param REQUEST_SCHEME $scheme; fastcgi_param HTTPS $https if_not_empty; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; fastcgi_param PHP_VALUE "open_basedir=$document_root:/tmp/:/proc/"; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200;
重点关注这一行fastcgi_param PHP_VALUE "open_basedir=$document_root:/tmp/:/proc/";
这行语句表示当前站点的PHP脚本只能够访问$document_root
、/tmp/
、/proc/
,这三个目录。
$document_root
变量表示我们nginx配置中server块root指令定义的目录。
建议
如果你正在搭建一个php服务器环境,不防从github找一个webshell放在web根目录,利用webshell功能来调优web服务器的安全性,直到webshell什么都干不了。
最后
如果你是一名运维工程师或者是站长,那么你应该将服务器的安全放在首要位置,不要让自己的努力瞬间化为灰烬。