在面试的时候有时候曾被问到安全防护,其实此类问题多数都是泛泛之谈。
常见安全攻击有黑客渗透、漏洞扫描、缓冲区溢出、sql注入、ddos/cc 等。
cc是大量IP并发访问一个动态页面来消耗数据库连接。可以在防火墙限制IP并发链接数,或者程序断做限制。真正的ddos那原本是无解的,能做的不多,直接联系IDC做流量清洗,或者根本不用联系,你的IP就可能造被IDC封了。
关于cc假如你用的nginx,可以:
1.限制某IP一定时间内请求数量, 可以参考这个模块 />
2. 发送cookie来识别恶意用户,302重定向到某个页面或输入验证码。需要Lua模块
rewrite_by_lua '
local say = ngx.md5("website" .. ngx.var.remote_addr) # 让攻击方无法猜出cookie,所以用了md5.
if (ngx.var.cookie_say ~= say) then
ngx.header["Set-Cookie"] = "say=" .. say
return ngx.redirect(ngx.var.scheme .. "://" .. ngx.var.host .. ngx.var.uri)
end
';
放任意的location里面,如果你的网站有对外提供API功能的话,建议API一定不能加入这段,因为API的调用也是没有浏览器行为
3. 白名单, 允许某些IP,如蜘蛛IP
至于ops能做的大概就是:OS关闭不需要的服务,端口,应用软件采用稳定高版本,此外定期patch,控制权限,限制ssh登陆服务器的user/ip,开启日志审核,用证书来验证登陆服务器。此外防止SQL注入和xss需要程序员从代码方面去规避。
总的来看,ops能做的事不多,要真正的做安全,就跟银行/证券企业那样购买IDS/IPS等设备和安全服务,定期做渗透测试和企业安全培训以及开发人员安全培训等。
对了,定期关注安全社区的公告,该打patch或升级的时候升级即可。
阅读(1245) | 评论(0) | 转发(0) |