LNMP一些不安全的默认配置

LNMP是国内用的比较多的Linux下一键搭建nginx+php+mysql环境的程序,但该程序的默认配置不好,容易造成安全问题。不过问题并不大,所以标题不敢写太猛~

今天搭建环境,顺便把问题提交了,希望能得到修复。

002.jpg

问题一

disable_function禁用的函数不彻底。

默认禁用的函数是:

001.jpg

明显不全,没有禁用popen,所以我们可以使用popen来执行命令:

1
2
3
$f = popen("ifconfig","r");
while(!feof($f)){$re .= fread($f,1024);}fclose($f);
echo $re;

问题二

自带的proftpd在创建新账户以后会将账号密码保存在/tmp目录下的.passwd中,这个文件权限是644,是允许所有用户读取的。

所以,只要我有一个webshell或普通用户权限,就能读取别人的ftp账号密码。(造成跨站等危险)

究其原因,就是在安装好proftpd后,lnmp会在/root目录下新建一个proftpd_vhost.sh脚本,目的是方便用户直接使用此脚本来创建ftp账号。

我们看看这个sh的代码:

/root/proftpd_vhost.sh 88行开始:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
useradd -s /sbin/nologin -d $userdir -c "lnmp proftpd user" $username
cat >/tmp/$user.passwd<<eof
$username:$userpass
eof

chpasswd < /tmp/$user.passwd

cat >/usr/local/proftpd/etc/vhost/$username.conf<<eof
<Directory $userdir>
<Limit ALL>
AllowUser $username
</Limit>
</Directory>
eof

echo "Restart ProFTPd......"
/etc/init.d/proftpd stop
/etc/init.d/proftpd start

echo "========================================================================="
echo "Add ProFTPd Virtual Host for LNMP v1.0 , Written by Licess "
echo "========================================================================="
echo "For more information please visit http://**.**.**.**/"
echo ""
echo "Your UserName:$username"
echo "Your Password:$userpass"
echo "Directory of $username:$userdir"
echo ""
echo "========================================================================="

先调用useradd添加了一个账号,用cat > 将字符串$username:$userpass写入/tmp/$user.passwd文件中。然后将/tmp/$user.passwd文件的内容传入chpasswd命令,来修改新增加的用户的密码。最后将配置写入vhost配置文件,再echo一些信息,这个sh脚本就结束了。

直到最后lnmp也没有去删除这个/tmp/$user.passwd文件,所以就遗留了一个包含新创建的ftp账号密码的文件,而且所有用户都有读权限:

004.jpg