LNMP服务器安全指南
来源:互联网 发布:网络传真怎么发 编辑:程序博客网 时间:2024/06/05 00:19
平时工作中需要维护一些Linux服务器, 有时候也需要自己配置下服务器, 一般主要是配置LNMP服务。整理了一些服务器安装配置方面的知识,现在就总结下。
- Linux最低权限安全配置
Nginx、MySQL、PHP-FPM三者都应该是以最低权限用户组运行。
网站目录的文件用户组和PHP运行用户属主应该区分开, 设置PHP对网站文件只有可执行权限, 对于静态文件都交给Nginx处理。比如PHP-FPM的用户组为php-fpm:php-fpm, 网站目录www.lezhizhe.net其用户组为www:www, 文件属性为644,也就是说php合nginx在网站根目录只有读权限。对于文件上传目录和缓存目录, 可以设置777权限, 生成的文件要设置为644属性, 禁止上传的文件具有可执行权限。
对于PHP使用open_basedir限制虚拟主机跨目录访问(网上有说在php.ini文件中修改open_basedir, 经测试不生效)。不过可以在nginx的每个站点的con.f文件中设置PHP的open_basedir属性(注意如果在某个站点设置了该属性其它站点未设置, 会造成其它站点打不开的情况):
fastcgi_param PHP_VALUE "open_basedir=$document_root:/tmp/";
- Linux防火墙及端口配置
1、禁止SSH密码登陆方式, 采用公钥方式登陆。
2、开启iptables。只开放必要的端口出来。iptable配置如下:
*filter:INPUT ACCEPT [0:0]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [46:7024]-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT-A INPUT -p icmp -j ACCEPT-A INPUT -i lo -j ACCEPT-A INPUT -i eth1 -j ACCEPT-A INPUT -p tcp -m tcp --sport 53 -j ACCEPT //DNS端口-A INPUT -p udp -m udp --sport 53 -j ACCEPT-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT //HTTP端口-A INPUT -p tcp -m state --state NEW -m tcp --dport 4000 -j ACCEPT //FTP端口-A INPUT -p tcp -m state --state NEW -m tcp --dport 4355 -j ACCEPT //SSh端口-A INPUT -p tcp -m state --state NEW -m tcp --dport 30000:60000 -j ACCEPT //FTP被动模式端口-A INPUT -j REJECT --reject-with icmp-host-prohibited-A FORWARD -j REJECT --reject-with icmp-host-prohibitedCOMMIT
PHP安装配置
1.禁用不安全PHP函数disable_functions = show_source,system,shell_exec,passthru,exec,popen,proc_open,proc_get_status,phpinfo
2.关闭错误日志防止输出错误信息, 记录log方便程序调试display_errors = Off
log_errors=On
error_log=/var/log/php-fpm/sie-error.log3.关闭远程代码执行。如果启用,PHP可以通过allow_url_fopen,在file_get_contents()、include、require中获取诸如FTP或网页内容这些远程数据。如果忘记了对输入数据进行过滤,而这些函数调用了这些数据,则形成了注入漏洞。
allow_url_fopen=Off
4.防止PHP信息泄露, 不轻易透露自己php版本信息,防止黑客针对这个版本的php发动攻击.
expose_php = Off
5.禁止动态加载链接库:
enable_dl = Off
6.将文件上传到远程服务器, 例如nfs等。当然也可以调用你们写好的php接口。 即使有上传漏洞,那么文件也被传到了静态服务器上。木马等文件根本无法执行。
Nginx限制访问
有些目录存放的是一些类库文件或者模板文件, 不需要用户访问的,可以在该目录访问限制返回404。如lib类文件目录和template模板目录:location ~ ^/(lib|template)/ {
return 404;
}对于静态文件(如js、css、图片等)限制通过PHP执行:
location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
if (-f $request_filename) {
expires 0d;
break;
}
}对于PHP程序文件,一般都是很少的几个入口文件, 可以直接限制这几个PHP文件的执行。例如现在只有index.php、user.php、admin.php三个入口文件,那我们只把这三个PHP文件交给fast-cgi文件去执行。
location ~ ^/(index|user|admin)\.php {
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(/?.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param PHP_VALUE "open_basedir=$document_root:/tmp/";
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
}
- LNMP服务器安全指南
- Linux 服务器安全简明指南
- centos5.3搭建安全高效的LNMP服务器
- 服务器终极安全设置与优化指南
- Windows 2003服务器安全配置指南
- 服务器终极安全设置与优化指南
- 服务器使用及安全简易指南
- CentOS 6 服务器安全配置指南
- 通用 CentOS 6 服务器安全配置指南
- 通用 CentOS 6 服务器安全配置指南
- 通用CentOS 6 服务器安全配置指南
- 通用 CentOS 6 服务器安全配置指南
- Lnmp网站服务器搭建
- 云服务器安装LNMP
- lnmp服务器搭建
- lnmp服务器配置
- Windows 2003服务器A级BT安全配置指南
- Windows 2003服务器A级BT安全配置指南
- HDU2183
- Linux忘记root密码怎么办?
- 安卓操作系统的组成部分
- Ext.form.ComboBox最常用的一些属性和方法
- 欢迎使用CSDN-markdown编辑器
- LNMP服务器安全指南
- 关于文件上传遇到的问 no multipart boundary was found
- Java基础-IO流
- GDB调试利器
- 使用epublib解析epub文件(章节内容、书籍菜单)
- git断点续传
- nagios插件之登陆SBC监控电话数
- 求最大公约数(欧几里得算法尾递归版)+N皇后算法(位运算版)
- Android数据库 之 SQLite数据库