作业要求:
搭建linux+nginx+php-fpm+mysql环境,且做相应的加固
作业如下:
环境搭建
系统环境:Ubunt16
一、nginx安装
直接输入命令:
sudo apt-get install nginx
安装成功
切换到root权限,然后apt-get update,再apt-get upgrade:
成功后,进行php的安装。
二、php安装
输入命令:
apt-getinstall php
三、mysql安装
apt-getinstall mysql-server
启动mysql
四、nginx与php-fpm集成设置
cd进入配置文件目录下:
用vim修改 default文件,将红框中代码行前面的注释去掉:
保存退出后,重启nginx:
在var/www/html/下新建一个php文件:info.php
内容如下:
phpinfo();
?>
成功访问
五、php连接mysql
php-mysql安装:
安装成功后,刷新phpinfo页面后,会出现mysql的相关信息:
再新建一个可以执行mysql语句的php文件,检查是不是可以成功执行mysql的语句,成功:
加固
对于安全加固,我首先想到的是出现过的nginx、php和mysql的各种漏洞,只要把它们自己或结合产生过的漏洞堵上也相当于做了安全加固了~
Nginx相关加固:
1、首先是隐藏版本号,防止攻击者利用对应版本的漏洞:
Nginx关闭版本信息:
2、修改其他的因为配置不当造成的各种漏洞(比如文件解析、目录遍历漏洞等):
①nginx文件类型解析错误
会把1.jpg/1.php当成php文件执行,
需要修改php.ini文件中的cgi.fix_pathinfo=1值为0,来对文件路径进行“修理”,但是这个选项可能会造成其他错误,修改时需要慎重。
②防止目录遍历
不要随意添加autoindex;
或者是:
效果图:
③防止CRLF注入漏洞(这是我在网上看到的,以前没有碰到过,暂未复现)
③防止上传目录的php解析
php相关加固:
php.ini中参数设置:
隐藏版本号:
设置禁用函数,防止敏感方法执行:
开启http only,防止cookie被窃取:
明确定义上传目录(做好权限控制):
限制用户访问目录(做好权限控制):
关闭php错误日志:
禁止动态加载链接库
禁用打开远程url
mysql相关加固:
1、禁止弱密码:修改root账号密码为强密码
2、禁止mysql以管理员账号权限运行
该命令使服务器用指定的用户来启动。
3、删除无关账号
4、遵循最小权限原则,回收不必要的授权
5、设置可信IP的访问
网友评论