在开发网站的过程中定期复习这三本书的笔记。书里的一些我感觉没什么大用,并且很麻烦的方法我没用,比如 chroot 。
静态代码分析工具:gosec 、vet 、golangci-lint 、snyk 。TS 的 lint 工具。
CF DDoS 防护、CF Tunnel 。
应用开发注意事项。注入、XSS 、CSRF 之类的。太多了,懒得写了。嘴替:OWASP Top Ten 和 CWE top 25 。
写单元测试。
为各种服务提供最小的权限。
七天检查一次服务器和软件包更新。包括用 snyk 扫描一次代码,就算代码没更新,这个好像能发现用到的库的新发现的漏洞?
用 iptables 只开放必要的端口。基本只会开放 https 的端口的建立连接。数据包发出只允许系统和软件更新还有就是相关的入侵防御的规则的自动更新等。
网关 IP 地址绑定 MAC ,防止 ARP 攻击。使用 CF Tunnel 这步是不是多余了?
命令历史相关的环境变量设置为只读。命令历史附带执行时间。
删除无用的软件包和服务。
不使用隐藏的方式企图实现安全。比如改端口。
每月完整备份数据库。每天增量备份数据库。数据库中的密码 hash 和邮箱使用混合加密加密后备份到 OSS ,私钥保存在我电脑中的 KeePass 里。KeePass 数据库文件保存在 OneDrive 同步文件夹里。OneDrive 同步文件夹每月多处备份。不给 OSS API 分配修改和删除权限。对数据库的密码 hash 和邮箱添加数据库加密,就是数据库的数据文件泄露也无法读取的那种加密。我计划网站的上的所有数据都可以像维基那样打包下载。用户不想公开的数据保存在用户的浏览器或本地文件夹里。
入侵报警使用阿里云的云监控。
阿里云网页控制台使用自己生成的带密码的密钥对登录。私钥密码保存在 Keepass 里。
关键日志备份到阿里云的日志服务上。并设置好 API 的权限。主要是为了省钱,像书里那样用一个专门的服务器收集日志我感觉太贵了。
auditd 配置为锁定配置直到重启。
FireEye 辅助入侵检测和防御。我没在官网上找到怎么用。是个提供威胁情报数据的网站。
注意开发电脑的安全性。不安装来历不明的软件。来历不明的软件装到虚拟机里。不关闭杀软。操作系统有更新尽量马上更新。
数据库密码为 KeePass 生成的 20 位随机大小写字母与数字密码。特殊符号我嫌麻烦。
所有密码和密钥每季度换一次。
阿里云账号双因素认证。
使用 chkrootkit 和 rkhunter 扫描 rootkit 。
unhide 反隐。
如果没有证据证明黑客没有修改文件,就重装系统并回档。我想不到什么证明文件没被动的证据,所以大概率应该都会重装和回档。
查看服务器是否有重启记录。防止 auditd 的配置被修改。
参考《 Linux 系统安全》中的附录 B 。附录 B 是关于被入侵后的排查。
除了特定用户,任何用户登录之前必须登录特定的用户,否则就立刻断网。
还有把某个黑客大概率会用到,但是系统正常运行不会用到的命令换成触发报警的脚本。不知道有没有这种命令?比如 ls ,黑客执行 ls 就断网。我想要 ls 的功能就用 myls 。
这两个是我想到的,如果没人说能用我就不用了。我感觉挺危险的。轻则误报,重则没法登录。
首先我自认为我对安全的重视程度应该是超过平均水平了。
如果网站一直没什么流量的话,我也会一直维护这个网站。维护时间十年起步。长期运营的项目如果不在乎安全问题感觉迟早会出问题。另外我的网站虽然也能提供情绪价值,或者说用来娱乐,但是我希望主要是用它改善用户的生活。那些能用来改善用户生活的数据如果被篡改了很不好。虽然如果真被篡改了大部分可能会被发现,但是肯定会有漏掉的。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.