防止对shell的直接存取
这个设置可能使一些使用系统调用的函数失效,大多数的php或perl后门都可能不被执行,即使关闭了安全模式.
要达到此目的,需要对shell,各种语言的编译器还有环境做一些设置,剥离other位的读写和执行权限. 比如你的系统中有如下帐户:
- root:x:0:0:root:/root:/bin/bash
- flydragon:x:500:501::/home/flydragon:/bin/bash
复制代码
那可以把flydragon作为管理帐户,加入wheel组.这样就和root用户同组了。直接编辑/etc/group修改wheel一行为下面这样:
wheel:x:10:root,flydragon
然后就可以对shell进行重新设置:(这步很重要,如果不做,那除了root就不能登陆了]]) chown -R root:wheel /bin/{sh,bash,ash,ksh,tcsh,zsh}
如果你的系统下还有其他shell也需要更改他们为同样的设置
然后把这些文件的权限再改成710也就是去掉other位的权限.那系统中就只有flydragon和root可以使用shell了。
chmod 710 /bin/{sh,bash,ash,ksh,tcsh,zsh}
作完这些设置后,修改/etc/shells,删除掉不应该信任的shell,保留最简单的环境.
如果你有多个管理用户,可以在wheel组里继续添加,但注意不要使用过多和root同组的用户, 更多的用户会带来更多的风险.如果你需要更多的shell登陆用户,请使用更高级的acl来打开对某个shell的权限设定,而对其他的文件保持系统原来的属性.
其他设置
php.ini的disable_functions 禁止如下函数
- phpinfo,passthru,exec,system,popen,chroot,escapeshellcmd,escapeshellarg,shell_exec,proc_open,proc_get_status,socket_create,socket_bind,socket_listen,socket_accept,socket_write,socket_read
复制代码
一些可以解释,编译,下载,文件传输类的程序(假如除管理员外并不需要使用这些程序),限制other位对他们的读取和执行
- perl
- php
- python
- gcc
- c++
- cc
- wget
- lynx
- links
- ftp
- sftp
- scp
- ......
复制代码
编译选项
如果你不需要php的命令行方式,只需要和apache集成,那你还可以在编译的时候,指定--disable-cli参数. |