linux nginx php木马排查及加固整理

1、改变目录和文件属性,禁止写入

find -type f -name \*.php -exec chmod 444 {} \;
find -type d -exec chmod 555 {} \;

注:当然要排除上传目录、缓存目录等;
同时最好禁止chmod函数,攻击者可通过chmod来修改文件只读属性再修改文件

2、php配置
禁用危险函数

passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,
ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,popen,dl,
syslog,show_source

3、nginx配置

限制一些目录执行php文件 Continue reading

常用MYSQL安全设置加固

1.修改root用户口令,删除空口令
2.删除默认数据库和数据库用户
3.改变默认mysql管理员帐号
4.关于密码的管理
5.使用独立用户运行msyql
6.禁止远程连接数据库
7.限制连接用户的数量
8.用户目录权限限制
9.命令历史记录保护
10.禁止MySQL对本地文件存取
11.MySQL服务器权限控制
12.使用chroot方式来控制MySQL的运行目录
13.关闭对无关的Web程序访问的支持
14.数据库备份策略
15. Mysqld安全相关启动选项
16.information_schema 安全

1.修改root用户口令,删除空口令

缺省安装的MySQL的root用户是空密码的,为了安全起见,必须修改为强密码,所谓的强密码,至少8位,由字母、数字和符号组成的不规律密码。使用MySQL自带的命令mysaladmin修改root密码,同时也可以登陆数据库,修改数据库mysql下的user表的字段内容,修改方法如下所示:

# /usr/local/mysql/bin/mysqladmin -u root password “upassword” //使用mysqladmin
#mysql> use mysql;
#mysql> update user set password=password(‘upassword’) where user=’root’;
#mysql> flush privileges; //强制刷新内存授权表,否则用的还是在内存缓冲的口令

2.删除默认数据库和数据库用户
一般情况下,MySQL数据库安装在本地,并且也只需要本地的php脚本对mysql进行读取,所以很多用户不需要,尤其是默认安装的用户。MySQL初始化后会自动生成空用户和test库,进行安装的测试,这会对数据库的安全构成威胁,有必要全部删除,最后的状态只保留单个root即可,当然以后根据需要增加用户和数据库。 Continue reading

常用PHP安全设置加固

1.隐藏php版本
2.禁用危险的php函数
3.命令注入攻击
4.SQL注入攻击
5.xss攻击
6.会话劫持攻击
7.关闭注册全局变量
8.上传文件
9.远程包含、本地包含
10.Php.ini包含补丁文件,我们可以根据需要,通过它包含或者nginx的模块

1.隐藏php版本

expose_php=off

2.禁用危险的php函数
popen,pentl_exec,passthru,exec,system,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,show_source,escapeshellcmd,escapeshellarg,curl_exec,curl_multi_exec,parse_ini_file,assert
至于eval函数,我们用suhosin把这些全部都加进eval的黑名单 Continue reading

从administrators组中删除guest来宾账户时提示无法在内置账号上运行此操作的解决办法

从administrators组中删除guest来宾账户时提示无法在内置账号上运行此操作
我的win2003服务器曾经杀出过木马,后来发现guest账号还会自动开启
经检查,guest账号居然跑到administrators组里去了。
我用administrator登录后删除administrators组中的guest账户,保存时提示
无法在内置账户上运行此操作
解决办法:
1.从一台正常的的win2003上找到HKEY_LOCAL_MACHINE\SAM\SAM,单击鼠标右键,在弹出的子菜单中选择权限 (WIN 2000的操作系统运行regedt32,找到HKEY_LOCAL_MACHINE\SAM\SAM,选择 安全→权限),然后把你现在所使用的用户添加进入,并选择 完全控制,再刷新一下就可以看到SAM下面的项了。 Continue reading

本地用户和组里面的账户不见了(消失)的原因及解决办法

我的系统是Windows2003,在”计算机管理——本地用户和组——用户”里,原来的几个用户账户,不知何故消失了.

这个问题很有可能是被黑客入侵了电脑所致,解决方法:

方法一:
更新升级Window2003的补丁,并启用网络防火墙.
单击

  1. 开始——运行"输入"Regedit

打开”注册表编辑器”,删除

  1. HKEY_LOCAL_MACHINE\SAM\SAM\DOMAINS\Accout\Users\Names

中不明账户及

  1. HKEY_LOCAL_MACHINE\SAM\SAM\DOMAINS\Accout\Users\

中对应不明用户账户.然后右键单击

  1. HKEY_LOCAL_MACHINE\SAM\SAM
选择"权限——高级".接下来在对话框上单击"权限",在"权限项目"中选中"Administrators(计算机名\Administrators)",接着单击"编辑"按钮,在"允许"框中选择"写入DAC"及"读取控制",一路单击"确定"按钮出来.

然后重新启动电脑就可以显示账户列表了.

如果在HKEY_LOCAL_MACHINE\SAM\SAM下看不见任何东西,可以将HKEY_LOCAL_MACHINE\SAM\SAM 的权限设置为administrators完全控制,重新启动机器,再进入HKEY_LOCAL_MACHINE\SAM\SAM 查看,就有了.

方法二:

复制下面的命令到开始运行里执行

1、去掉:

reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MMC\SnapIns\{5D6179C8-17EC-11D1-9AA9-00C04FD8FE93}" /f

2、恢复

regsvr32 localsec.dll

解决Nginx文件类型错误解析漏洞的方法

[文章作者:张宴 本文版本:v1.2 最后修改:2010.05.24 转载请注明原文链接:http://blog.s135.com/nginx_0day/]

注:2010年5月23日14:00前阅读本文的朋友,请按目前v1.1版本的最新配置进行设置。

昨日,80Sec 爆出Nginx具有严重的0day漏洞,详见《Nginx文件类型错误解析漏洞》。只要用户拥有上传图片权限的Nginx+PHP服务器,就有被入侵的可能。

其实此漏洞并不是Nginx的漏洞,而是PHP PATH_INFO的漏洞,详见:http://bugs.php.net/bug.php?id=50852&edit=1

例如用户上传了一张照片,访问地址为http://www.domain.com/images/test.jpg,而test.jpg文件内的内容实际上是PHP代码时,通过http://www.domain.com/images/test.jpg/abc.php就能够执行该文件内的PHP代码。 Continue reading

nginx文件类型错误解析漏洞

漏洞介绍:nginx是一款高性能的web服务器,使用非常广泛,其不仅经常被用作反向代理,也可以非常好的支持PHP的运行。80sec发现 其中存在一个较为严重的安全问题,默认情况下可能导致服务器错误的将任何类型的文件以PHP的方式进行解析,这将导致严重的安全问题,使得恶意的攻击者可 能攻陷支持php的nginx服务器。 Continue reading

Windows服务器组件安全设置

A、卸载WScript.Shell Shell.application 组件,将下面的代码保存为一个.BAT文件执行(分2000和2003系统)
windows2000.bat regsvr32/u C:\WINNT\System32\wshom.ocx del C:\WINNT\System32\wshom.ocx regsvr32/u C:\WINNT\system32\shell32.dll del C:\WINNT\system32\shell32.dll
windows2003.bat regsvr32/u C:\WINDOWS\System32\wshom.ocx del C:\WINDOWS\System32\wshom.ocx regsvr32/u C:\WINDOWS\system32\shell32.dll del C:\WINDOWS\system32\shell32.dll
B、改名不安全组件,需要注意的是组件的名称和Clsid都要改,并且要改彻底了,不要照抄,要自己改
【开始→运行→regedit→回车】打开注册表编辑器

然 后【编辑→查找→填写Shell.application→查找下一个】

用这 个方法能找到两个注册表项:

{13709620-C279-11CE-A49E-444553540000}Shell.application

第一步:为了确保万无一失,把这两个注册表项 导出来,保存为xxxx.reg 文件。

第二步:比如我们想做这样的更改

13709620-C279-11CE-A49E-444553540000 改名为 13709620-C279-11CE-A49E-444553540001

Shell.application 改名为 Shell.application_nohack

第三步:那么,就把刚才导出的.reg文件里的内容按 上面的对应关系替换掉,然后把修改好的.reg文件导入到注册表中(双击即可),导入了改名后的注册表项之后,别忘记了删除原有的那两个项目。这里需要注 意一点,Clsid中只能是十个数字和ABCDEF六个字母

其 实,只要把对应注册表项导出来备份,然后直接改键名就可以了,

改好的例子
建议自己改
应该可一次成功
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}] @="Shell Automation Service" [HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\InProcServer32] @="C:\\WINNT\\system32\\shell32.dll" "ThreadingModel"="Apartment" [HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\ProgID] @="Shell.Application_nohack.1" [HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\TypeLib] @="{50a7e9b0-70ef-11d1-b75a-00a0c90564fe}" [HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\Version] @="1.1" [HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\VersionIndependentProgID] @="Shell.Application_nohack" [HKEY_CLASSES_ROOT\Shell.Application_nohack] @="Shell Automation Service" [HKEY_CLASSES_ROOT\Shell.Application_nohack\CLSID] @="{13709620-C279-11CE-A49E-444553540001}" [HKEY_CLASSES_ROOT\Shell.Application_nohack\CurVer] @="Shell.Application_nohack.1"
老杜评论:
WScript.ShellShell.application 组件是 脚本入侵过程中,提升权限的重要环节,这两个组件的卸载和修改对应注册键名,可以很大程度的提高虚拟主机的脚本安全性能,一般来说,ASP和php类脚本 提升权限的功能是无法实现了,再加上一些系统服务硬盘访问权限、端口过滤、本地安全策略的 设置,虚拟主机因该说,安全性能有非常大的提高,黑客入侵的可能性是非常低了。注销了Shell组件之后,侵入者运行提升工具的可能性就很小了,但是 prel等别的脚本语言也有shell能力,为防万一,还是设置一下为好。下面是另外一种设置,大同小异。
一、禁止使用FileSystemObject组件 FileSystemObject可以对文件进行常规操作,可以通过修改注册表,将此组件改名,来防止此类木马的危害。

HKEY_CLASSES_ROOT\Scripting.FileSystemObject\

改名为其它的名字,如:改为 FileSystemObject_ChangeName

自己以后调用的时候使用这个就可以正常调用 此组件了

也要将clsid值也改一下

HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID\项 目的值

也可以将其删除,来防止此类木马的危害。

2000注销此组件命令:RegSrv32 /u C:\WINNT\SYSTEM\scrrun.dll

2003注销此组件命令:RegSrv32 /u C:\WINDOWS\SYSTEM\scrrun.dll

如何禁止Guest用户使用scrrun.dll来防止调用此组件?

使用这个命令:cacls C:\WINNT\system32\scrrun.dll /e /d guests

二、禁止使用WScript.Shell组件

WScript.Shell可以调用系统内核运行DOS基本命令

可以通过修改注册表,将此组件改名,来防止此类木马的危害。

HKEY_CLASSES_ROOT\WScript.Shell \及HKEY_CLASSES_ROOT\WScript.Shell.1\

改名为其它的名字,如:改为WScript.Shell_ChangeName WScript.Shell.1_ChangeName

自己以后调用的时候使用这个就可以正常调用此组件了

也要将clsid值也改一下

HKEY_CLASSES_ROOT\WScript.Shell\CLSID\项 目的值

HKEY_CLASSES_ROOT\WScript.Shell.1\CLSID\项 目的值

也可以将其删除,来防止此类木马的危害。

三、禁止使用Shell.Application组件

Shell.Application可以调用系统内核运行DOS基本命令

可以通过修改注册表,将此组件改名,来防止此类木马的危害。

HKEY_CLASSES_ROOT\Shell.Application\

HKEY_CLASSES_ROOT\Shell.Application.1\

改名为其它的名字, 如:改为Shell.Application_ChangeName Shell.Application.1_ChangeName

自己以后调用的时候使用这个就可以正常调用此组件了

也要将clsid值也改一下

HKEY_CLASSES_ROOT\Shell.Application\CLSID\项目的值

HKEY_CLASSES_ROOT\Shell.Application\CLSID\项目的值

也可以将其删除,来防止此类木马的危害。

禁止Guest用户使用shell32.dll来防止调用此组件。

2000使用命令:cacls C:\WINNT\system32\shell32.dll /e /d guests
2003使用命令:cacls C:\WINDOWS\system32\shell32.dll /e /d guests

注:操作均需要重新启动WEB服务后才会生效。

四、调用Cmd.exe

禁用Guests组用户调用cmd.exe

2000使用命令:cacls C:\WINNT\system32\Cmd.exe /e /d guests
2003使用命令:cacls C:\WINDOWS\system32\Cmd.exe /e /d guests

通过以上四步的设置基本可以防范目前比较流行的几种木马,但最有效的办法还是通过综合安全设置,将服务 器、程序安全都达到一定标准,才可能将安全等级设置较高,防范更多非法入侵。

C、防止Serv-U权限提升 (适用于 Serv-U6.0 以前版本,之后可以直接设置密码)
先停掉Serv-U服务

Ultraedit打开ServUDaemon.exe

查 找 Ascii:LocalAdministrator#l@$ak#.lk;0@P

修 改成等长度的其它字符就可以了,ServUAdmin.exe也 一样处理。另外注意设置Serv-U所在的文件夹的权限,不要让IIS匿名用户有读取的权限,否则人家下走你修改过的文件,照样可以分析出你的管理员 名和密码。

服务器安全设置.卸载极其危险的 Wscript.Shell 和 shell.application 组件

载极其危险的 Wscript.Shell 和 shell.application 组件,这2 个组件的主要作用是asp调用exe程序。
几乎所有正常的网站都用不到,而要黑服务器却几乎都需要调用这个组件来执行操作
运 行:regsvr32 /u c:\winnt\system32\wshom.ocx 即可卸载 Wscript.Shell
运 行:regsvr32 /u c:\winnt\system32\shell32.dll 即可卸载 shell.application

如果是window2000/20003则将winnt改为windows再运行即可

同服务器多网站的安全设置(windows server+apache+php)

在windows环境下,如果用IIS做webserver,可以配合ntfs为每个网站设置不同的用户权限,从而让一个网站的程序只能访问自己目 录下的内容.

而在windows的apache环 境下,由于apache默认是最高的system权限,因此非常危险,若不做安全设置,随便传一个php shell到任何一个网站上,就能控制整台服务器。 Continue reading