作者朴瑞卿
序言
近期做事器常常被暴力扫描、攻击, 故周末花韶光打理下做事器, 将一些可能存在的风险处理掉. 笔者根据实践总结出一份大略的戒备方法列表, 希望能对你有帮助.

阅读本文你能收成到:
一些做事器安全戒备方法.快乐 (如果学习能使你快乐的话 ( ̄. ̄) )一. 防火墙防火墙采取白名单策略, 只开放必要端口. 如: 80/443以及ssh登录端口.
而数据库、缓存等端口, 最好只许可本地访问, 若须要调试, 建议利用白名单IP、代理等方法进行连接.
二. 利用内网穿透工具
参考文档: https://github.com/fatedier/frp/
对付有调试需求的做事器而言, 数据库、缓存、行列步队等端口须要开放. 而直接开放端口会给做事器带来不必要的安全隐患. 此时我们必须对访问者进行限定, 如: IP白名单、VPN等. 除此之外, 笔者推举一个内网穿透工具用来赞助建立调试环境 —— FRP
FRP是一个可用于内网穿透的高性能的反向代理运用, 有多种穿透办法, 可以指定端口进行代理. 我们可以在做事器启动做事端(frps)和客户端(frpc)两个做事, 本地客户真个frpc通过frps监听的唯一端口与做事真个frpc建立连接, 这样就能将做事器上只能内部访问的端口映射到开拓者电脑本地端口.
利用FRP的上风: 指定端口、可压缩流量、可加密、做事端只须要暴露frps的端口.
三. 隐蔽无用信息
参考文档:
1). http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_hide_header
2). http://nginx.org/en/docs/http/ngx_http_core_module.html#server_tokens
3. http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_hide_header
通过做事器返回的信息, 攻击者能从中创造一些漏洞, 比如nginx版本、所利用的web做事器等. 而这些信息对付用户来说都是非必要的. 笔者随便找了个网站查看, 如图:
这些细节都可能为攻击者供应路子. 以是有必要屏蔽掉这些信息.
proxy_hide_header {Your-Header}: nginx中, 通过proxy_hide_header可以隐蔽掉上游做事返回的某些header.server_tokens off: server_tokens是nginx版本信息开关, 可以开启或隐蔽缺点页或header的Server字段后面带的版本号.fastcgi_hide_header X-Powered-By: 如果您利用的是php-fpm, 这个配置可以隐蔽掉header中php及版本信息.配置完成后实行nginx -s reload后配置即生效.
四. 限流参考文档: http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
用户正常的访问行为, 不会产生过于频繁的要求, 限流可以防止某些不安分的IP因某些目的而频繁访问做事器而导致资源耗尽, 影响正常用户的访问体验.
一样平常地, 我们可以通过nginx配置ngx_http_limit_req_module进行限流:
limit_req_zone...: 设置一个大小为10M的共享区域, 命名为one, 其KEY为$binary_remote_addr即IP, 访问速率限定为1次/秒.limit_req...: 路径为search的location利用共享区域one进行限流, 突发要求限定为5. (如果只限定了1r/s, 将会严格按照每秒一次的要求进行限定, 但对付用户来说, 点开网页可能会并发要求数个资源, 如此去世板的限定对付体验并不友好, 以是我们还须要设置突发的要求限定)五. 祸水东引
总之一句话, 引流到扛得住高并发的静态页. 比如GitPage.
参考文章: 我是如何通过Nginx日志实时封禁风险IP的
相信不少站长都理解被cc或ddos攻击支配的恐怖.
尤其对付个人主页等小站来说, 购买高防做事器或购买各种防护做事可能性价比并不高. 但普通做事器碰着稍大规模的攻击(大概这规模并不是真的很大), 可能做事器直接就挂了, 就算配置了页面的静态缓存, 也不一定能扛得住多大规模的攻击, 况且流量挺贵的.
对此笔者的方案是:
实时剖析访问日志, 对每个IP进行危险等级评分.锁定非常IP, 将这些IP的全部要求通过302临时重定向到GitPage备份站.对付危险等级更高的IP, 直策应用ipset+iptables封禁之以是对付一样平常危险等级的IP进行重定向, 紧张目的是:
节约流量, 节约做事器资源(这点对动态网站尤为主要)劝退攻击者: 大家无冤无仇, 您去找更好搞的站点攻击, 请不要在这里耗费太多韶光.防止误杀, 非常IP评估可能存在偏差, 直接封禁对付访问者而言极其不友好, 会白白丢失用户. 做事降级总比不供应做事要好. 故选择先临时重定向, 若该IP行为仍旧不规范, 此时再封禁也不晚.下图引自我的前一篇文章《我是如何通过Nginx日志实时封禁风险IP的》
六. 禁用root远程登录
禁止利用root用户远程登录, 仅许可某个权限少的普通用户远程登录, 登录后再实行su提权.
对付许可远程登录的账户, 建议不要利用密码登录, 更不能利用大略密码. 建议利用秘钥登录.
ssh-keygen天生秘钥对, 将公钥放入authorized_keys文件中即可.
七. 其他定期备份, 建议利用crontab配置备份定时任务. 并且定期将主要数据冷备份.及时更新系统, 修复安全漏洞.只安装须要的、用不着就关闭结语做事器安全事大, 对付开拓、运维、测试等事情来说, 安全都是重点关注的问题, 养成良好的习气, 防患于未然.