EAimTY的博客
一个没什么技术的开源爱好者,一个苦逼的学生狗。
首页
关于
主题
LNMP 环境 VPS 的常用安全设置
Mar 26, 2016

总结一下对服务器安全的初级设置。

设置iptables

这一步的作用连小白都知道,就不多说了。

先清空iptables规则并清零:

# iptables -F
# iptables -X
# iptables -Z

然后设置规则,首先与外部建立通讯连接:

# iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

允许ping:

# iptables -A INPUT -p icmp -j ACCEPT

之后用以下命令开启ssh(默认为22)、http(默认为80)、https(默认为443)之类的端口:

# iptables -A INPUT -p tcp --dport 端口号 -j ACCEPT

需要开启UDP端口的话就执行:

# iptables -A INPUT -p udp --dport 端口号 -j ACCEPT

最后屏蔽其它请求:

# iptables -P INPUT DROP

保存并重启iptables:
# service iptables save
# service iptables restart

配置Nginx与PHP用户权限

首先,我们来看一下Nginx和php-fpm运行在什么用户下:

# ps aux|grep nginx
# ps aux |grep php-fpm

可以发现,通过yum安装的Nginx默认运行在用户nginx下,php-fpm运行在用户apache下,这样不利于安全,也不便于管理。
起初,我习惯新建一个用户并把PHP与Nginx放在其下运行,但最后发现其实这并不是最安全的做法,而且还很麻烦,没办法,懒人嘛~
研究并参考Google到的一些文章后,我发现让它们在nobody下运行是最安全的,因为假如我们使用nobody权限,即使黑客攻破了网站,也不能顺利攻破系统,所以我们把Nginx和php-fpm放在nobody用户下运行:

# vi /etc/nginx/nginx.conf

将第一行改为:user nobody;

# vi /etc/php-fpm.d/www.conf

搜索user = 找到后将文件中user与group的值改为nobody
这时重启一下Nginx与php-fpm,就会发现它们已经是运行在nobody用户下的了。

但是假如仅仅修改Nginx与php-fpm的运行用户,会出现网站程序(例如WordPress、Typecho)无法上传附件或更改文件的错误,这是因为网站程序的权限还是在其它用户手里。

修改网站文件的用户:

# chown -R nobody:nobody 网站目录

顺便把权限改得安全一些:

# find 网站目录 -type d|xargs chmod 0755

# find 网站目录 -type f|xargs chmod 0644

至此权限就配置完成了,但假如这时使用phpMyAdmin,就会报错:

Warning in ./libraries/session.inc.php#*** session_start():
open(/var/lib/php/session/*************, O_RDWR) failed: Permission denied (**)

解决方法是:

# chown nobody:nobody /var/lib/php/session

假如还是有问题就执行:

# chown -R nobody:nobody /var/lib/php/session

respond-post-49
Apr 09, 2016, 21:16
Apr 10, 2016, 16:25

还是有关系的,PHP可以远程执行命令,假如使用默认的apache用户,攻击者就有权限对服务器系统做一些手脚,但nobody用户几乎没有实权,所以较为安全。

添加新评论

请填写称呼
请填写合法的E-mail地址
请填写合法的网站地址
请填写内容