V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shendaowu
V2EX  ›  信息安全

我的网站开发安全计划,求大佬过目

  •  
  •   shendaowu · 12 天前 · 4714 次点击

    希望获得的帮助

    • 我的计划中有没有冲突、错误、多余或者缺少的东西?
    • 下面会有一些零散的问题。
    • 100 元左右一个月的服务器能不能顶住那些一直运行的服务?
    • 可以喷,我心大。但是请尽量不要单纯地骂,喷的话希望能给我提供点有用的信息。

    开发技术栈等

    • 开发语言:Go 、TS 。
    • 框架:Gin 。
    • 数据库:PostgreSQL 。
    • 操作系统:Debian 。
    • 其他:Git 、Github 、阿里云云效代码管理。项目闭源。
    • IDE:VS Code 。
    • 云服务:阿里云。

    我看过的安全相关的书

    • 《 WEB 应用安全权威指南》
    • 《编程精粹》
    • 《 Linux 系统安全》

    在开发网站的过程中定期复习这三本书的笔记。书里的一些我感觉没什么大用,并且很麻烦的方法我没用,比如 chroot 。

    安全工具和服务

    静态代码分析工具:gosec 、vet 、golangci-lint 、snyk 。TS 的 lint 工具。

    CF DDoS 防护、CF Tunnel 。

    • Coraza:WAF 。
    • Snort 3:入侵防御。据说有入侵检测功能。
    • auditd:安全审计。
    • Kali Linux:我打算至少把桌面的工具都用上,自己干自己。开发电脑意思意思,服务器端使劲干。
    • Caldera 和 Atomic Red Team:通过这两个练习被入侵后的应急操作。不知道会不会完全没头绪。
    • sxid:监控 SUID 和 SGID 的改变。每天自动运行一次。改变就报警。
    • ClamAV:每星期运行一次。

    安全措施

    应用开发注意事项。注入、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 。

    这两个是我想到的,如果没人说能用我就不用了。我感觉挺危险的。轻则误报,重则没法登录。

    我为什么这么在乎安全问题?

    首先我自认为我对安全的重视程度应该是超过平均水平了。

    如果网站一直没什么流量的话,我也会一直维护这个网站。维护时间十年起步。长期运营的项目如果不在乎安全问题感觉迟早会出问题。另外我的网站虽然也能提供情绪价值,或者说用来娱乐,但是我希望主要是用它改善用户的生活。那些能用来改善用户生活的数据如果被篡改了很不好。虽然如果真被篡改了大部分可能会被发现,但是肯定会有漏掉的。

    第 1 条附言  ·  12 天前
    我忘了说了。我估计我的那个网站会得罪很多人和公司。所以我感觉我被干的可能性比较大,所以才安全这么在意。不是违法的网站。主要就是可能会揭露一些人的骗术或者影响某些公司赚钱。我想在坚持不下去之前多坚持一段时间。前一句好像有问题?我感觉安全问题可能是影响我坚持不下去的重点之一。等到我的人身安全受到威胁的时候估计就只能同流合污了。
    45 条回复    2025-08-24 11:06:25 +08:00
    happybabys
        1
    happybabys  
       12 天前   ❤️ 9
    没有绝对安全的系统,开 ssh 让我上去看看
    MHPSY
        2
    MHPSY  
       12 天前
    何止超过平均水平,已经非常厉害了,多少公司是直接用一个开源搭好的脚手架,直接修修改改就上线了
    sampeng
        3
    sampeng  
       12 天前 via iPhone
    你这有点多此一举…
    就两个,阿里云二次认证打开 mfa 就足够了。
    开 ssh 只允许特定 ip 访问或者用的时候开。其他完全不需要做,因为进不去这些操作都是自己感动自己。服务器只开 443 和 80 端口。你只要保证应用没安全漏洞神仙都进不去。
    opengps
        4
    opengps  
       12 天前
    我说安全问题不用过于在乎肯定会被喷。因为这句话的前提是已经具备常见的防护能力,这时候做到只是随手的事,比如新手一上来就“关闭防火墙”的偷懒骚操作。
    op 已经的覆盖面已经很广泛了。只是对于漏洞来说,没有绝对的安全所以也不用过于投入(现在就说“维护时间十年起步”过于压榨自己了)
    illl
        5
    illl  
       12 天前 via iPhone   ❤️ 1
    愿意为这个网站的安全付费可能更有效果。可以开个众测,攻防是一体的,说的再好不如拉出来测试一波。
    shepherdlazy
        6
    shepherdlazy  
       12 天前
    @sampeng 确实,很多操作都是浪费。我一般新开通第一件事 ssh 关闭密码登录,关闭 root 登录,服务器跑四五年都没啥问题
    dzdh
        7
    dzdh  
       12 天前
    想太多系列。
    danbai
        8
    danbai  
    PRO
       12 天前
    建议放个有价值的东西 然后大家一起帮你测
    gmfan
        9
    gmfan  
       12 天前   ❤️ 1
    楼主技术栈和我差不多,不过我没这么多安全的,还有就是服务器我用的是腾讯轻量云服务器。
    我的网站(二次元类型):anifun.cn
    Hack3rHan
        10
    Hack3rHan  
       12 天前
    太长了没细看,核心的几个点就是,开发学习对应语言的安全开发 checklist ,服务配置符合安全基线要求,尽可能缩小互联网暴露面这样。
    daxin945
        11
    daxin945  
       12 天前
    如果能一直坚持下去话没啥太大问题
    再就是多关注些新出现的 0day ,及时打补丁。没事看看 IP 请求情况,根据威胁情报 ban 些 IP 下去
    bingfengfeifei
        12
    bingfengfeifei  
       12 天前   ❤️ 12
    作为一个网络安全行业开发人员,有几个看法。

    像是 Coraza/ModSecurity 这种开源 WAF ,以及配置的 Coreruleset 这种开源规则,误报率就是完全不可用级别的。我们用这种做旁路分析误报率对我们来说都是辣眼睛的。
    Sort3/Suricata 这种核心在于规则,开源的同样也是闹着玩的,甚至安全公司专业人员维护的规则,应对真实攻击也没有多么好用。
    Clamav 这种后知后觉的,而且也只能应对落盘的病毒。
    都到查找 rootkit 这种级别了,我劝你重装系统。
    ARP 攻击这种,是内网攻击方式,现实中我是没见过真实存在的。

    我有几个看法:
    1. CF 可以用
    2. WAF 直接用雷池社区版
    3. 暴露端口的开源软件,不能有漏洞,是新版
    4. 服务器 ssh 强密码,关 root 登录,权限配置合理,重点是强密码甚至证书登录
    5. 搞几个登录几次错误 ban ip 的工具
    6. 数据库等非必要业务不要暴露端口
    7. 核心数据备份到其他地方

    核心是 3,4 搞完这种,个人网站就不太可能被攻破了,攻击基本上都是利用现有漏洞,弱密码机器人爆破的。你业务的漏洞除非被人盯上了,否则就算有漏洞都可能一辈子不暴雷。业务漏洞让 AI 看看代码就可以了。


    你说的大部分防御都是幻想的场景,你以为的安全是一堆真实的黑客,对着你的机器一堆死艹。 真实情况是,一堆机器人扫漏洞,扫弱密码,扫不到人家就走了。

    你想想的很多场景,就算是一年花几百万找安全大厂安服的,也没有查这个东西的。
    liubaicai
        13
    liubaicai  
       12 天前
    ip 发出来看看,让老师傅打一下试试
    Ma4cus
        14
    Ma4cus  
       12 天前   ❤️ 1
    是给五角大楼开发业务吗
    xiuming
        15
    xiuming  
       12 天前
    作为一个后端忙这写业务都没时间管安全 唯一能做的就是不要暴露自己在前面套一层 专业的事 让专业人去做
    shendaowu
        16
    shendaowu  
    OP
       12 天前
    @illl 这个我想过有点相关的,忘了写了。能推荐个众测平台吗?我谷歌中文搜了一下好像都需要企业资质。三四百百元能有比较好的效果吗?找人测试一下我倒是想过,就是做好之后在本站求人渗透一下。我也了解过渗透测试,不过被阿里云的渗透测试的三万元吓到了。不过如果网站有很多人在乎的话,我倒是愿意组织个众筹,买一下渗透测试服务。这个有意义吗?
    mayli
        17
    mayli  
       12 天前 via Android
    闲的系列 大部分都没意义
    先把 attack surface 列出来 再加对策
    CodeCodeStudy
        18
    CodeCodeStudy  
       12 天前
    “所有密码和密钥每季度换一次”

    这个有什么用,只要密码和密钥强度够就行,换得太频繁,搞忘了咋整?
    illl
        19
    illl  
       12 天前 via iPhone   ❤️ 1
    @shendaowu 直接在 v 站发众测邀请应该还是有人来的,到时候我也来参与一下。不过渗透测试一般的 src 都是按结果付费的,高危、中危、低危的价格不同,可以参考一下一般的 src 平台。
    kuxuan
        20
    kuxuan  
       12 天前
    换做出来,然后用 crontab 定时备份数据,能赚钱了,再慢慢弄。要不然就浪费时间了。
    kuxuan
        21
    kuxuan  
       12 天前
    @kuxuan 先做出来
    deplives
        22
    deplives  
       12 天前
    直接托管 cf 上该开的都打开就完事儿了,别把自己太当回事儿
    WoneFrank
        23
    WoneFrank  
       12 天前
    没必要,多了很多没有啥用还折腾的操作。
    要真正理解安全,在必要的地方做好防护就行了。
    做网站类无非就是 ssh+web 服务+数据库,那你只需要 ssh 公私钥登陆/白名单登陆,数据库本地访问,web 服务 go 代码就考虑三个事:文件写入、数据库操作、命令执行,剩下的都不需要管
    WoneFrank
        24
    WoneFrank  
       12 天前
    @WoneFrank 严格意义上来说是:文件读写、数据库操作、有没有命令执行漏洞。
    其他的如果用 oss 那就注意下 aksk 权限就行了。
    dsb2468
        25
    dsb2468  
       12 天前
    防火墙:ANY TO ANY
    huluhulu
        26
    huluhulu  
       12 天前
    自我感动,完全没必要,前端上 cf 就好了
    xuanbg
        27
    xuanbg  
       12 天前   ❤️ 1
    如果会被人干的话,仅凭安全机制是没用的。人家 ddos 你你能防?人家去有关部门举报你能防?
    pota
        28
    pota  
       12 天前
    如果不存在交互的话。最简单的方案就是 全静态化,提供的服务只有 html 文件。不存在任何执行逻辑
    xinglihua93
        29
    xinglihua93  
       11 天前 via Android
    买个 AWS 就 OK
    Fqy
        30
    Fqy  
       11 天前
    可以看看我朋友的网站有什么安全问题么
    http://www.huogua.net
    Nem0
        31
    Nem0  
       11 天前
    是不是 P 站 (滑稽)
    jciba5n4y6u
        32
    jciba5n4y6u  
       11 天前
    抓到一只 script kiddy
    Jesmora
        33
    Jesmora  
       11 天前
    盲猜是类似企查查那种网站
    monway
        34
    monway  
       11 天前
    你用的这些工具其实意义都不大,用长亭的 xary 把所有后台接口都跑一下,服务器只开放 web 端口,SSH 白名单登录。接入 waf 。有条件的购买阿里云安全中心的高级版就行了。再有条件的花几千块找人测下逻辑漏洞。

    如果网站会得罪人,一般会 DDOS 攻击,不会费这么大力气入侵你的服务器
    listnodeptr
        35
    listnodeptr  
       11 天前   ❤️ 1
    一个想当武林奇侠的同学有一天想出了一个好主意,自己造一个帮派出来参加江湖混战不就顺带能练习武功了吗

    于是他往桌子上排开了短剑、长矛、钉头锤、连枷、十字弩、反曲弓,然后兴奋而忐忑地问前辈们这些东西还差什么,并且仔细地挨个武器拿起比画了起来

    4 楼#4 说年轻人你不必过度在乎你帮派的安全,江湖上义薄云天看淡生死方能成大气候

    12 楼#12 说长矛不适合街巷、弓弩不适合山林,你管好帮派出入的关隘比部署啥兵器都重要,不会有侠客上山踢馆,只会有毛贼门前晃悠

    26 楼#26 说江湖险恶,最好还是把帮派业务全部立成石碑,只能看,搬不动

    要我说:小马过河你亲自蹚水试一试才好,书里面都是过时的东西,比如你说到 iptables ,云厂商都有免费的安全组 security group 端口策略,你不上去试一试怎么会知道这件事呢,你说到 clamav ,云厂商由于某些原因都有免费的主机安全可以用(想卸载都费劲),你需要去试试下载个挖矿软件触发一下才会知道你的云机器是被严格管控不允许出病毒的,以及你竟然觉得日志服务是用来省钱放日志的,它是解决规模问题而提供的一体化解决方案,你一台机器直接自带的云监控+告警策略就够了,你需要试一试才会知道这些事情,别问了,冲啊皮卡丘,去试试就好了
    Hieast
        36
    Hieast  
       11 天前
    大部份网站的问题是没有流量,有了流量和钱再考虑安全也不迟。
    ShuoHui
        37
    ShuoHui  
       11 天前 via iPhone   ❤️ 1
    @happybabys 顶级黑客
    chinanala
        38
    chinanala  
       11 天前
    1. 业务服务器只开放应用端口( 80/443 );
    2. 服务器只允许证书登录,SSH 端口改高位;
    3. 云服务器控制台防火墙只允许白名单 IP 登录其它端口;

    这三项措施就符合 99.9%安全了,除非 Nginx Tomcat 这种 0day 漏洞。
    ihciah
        39
    ihciah  
       11 天前 via iPhone   ❤️ 1
    后端用 golang 很难搞出 RCE ,不瞎拼接 sql 放心用 ORM 通常也不会有问题,系统层面管好 ssh 和其他暴露端口的服务,那么除前端安全外,你就只剩被 dos 的可能了。
    安全还是一个成本问题,一切都有例外,但显然一个服务器成本 100 块的普通网站配不上一个核弹级 0day 的价格…
    fingerxie
        40
    fingerxie  
       11 天前
    我只开放了 80 、443 、11010 (打洞端口) 这三个端口,所有操作一律 vpn 访问。我是用的 easytail ,用起来没啥问题,密码设置的也很简单,至今没有问题
    php01
        41
    php01  
       11 天前
    一般就搞个宝塔+cf 就行了吧?
    xiaxiaokang
        42
    xiaxiaokang  
       11 天前
    0 元计划
    语言 TS
    框架: nextjs / sveltekit - 实现 SSG 静态化
    分布式: cloudflare
    托管 vercel
    数据库:( PostgreSQL ) Neon / Supabase
    图片服务:imagekit/cloudinary
    代码:github

    cloudflare 设置规则限制访问路径,阻挡无效请求(减少 vercel 计费)。如果有类似 ddos 攻击开启 Under Attack 模式。
    这一套下来基本来绝对满足大部分人。
    masterclock
        43
    masterclock  
       11 天前
    你的方案像个企业内网应用,不像个公网上的个人小网站
    另外看描述,压根不需要这个网站,微信小红书微博 telegram 、x 、github pages issues 等等都行
    SP00F
        44
    SP00F  
       11 天前
    没什么动态需求直接上 GitHub pages 拉倒。虽然安全是纯投入项,但是跟需求不成正比。
    dode
        45
    dode  
       8 天前
    关闭 ssh 密码登录了吗?问题还是要看系统日志,应用历史日志找找
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5939 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 06:16 · PVG 14:16 · LAX 23:16 · JFK 02:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.