V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
demolibs
V2EX  ›  程序员

道路千万条,安全第一条,开发不规范,用户两行泪

  •  
  •   demolibs · 2019-11-21 10:50:11 +08:00 · 5834 次点击
    这是一个创建于 1825 天前的主题,其中的信息可能已经有所发展或是发生改变。

    事件背景: 昨晚我们线上服务被恶意调用了,出现大量随机请求,猜测是想暴力破击我们管理后台,窃取用户数据。

    部分服务器日志截图:
    

    https://static.demolibs.com/v2ex/%E8%A2%AB%E8%B0%83%E6%88%8F%E4%BA%86.jpg ( PS:充值 V2EX 会员后,图片还是没法上传,所以用的七牛云,V 友见谅)

    所以想跟 V 友们一起讨论下网站安全的措施,防范于未然。

    目前我们的安全措施:
    

    一、运维方面:

    1、所有服务器都禁用 root 登陆功能,防止被别人通过 root 暴力破解。

    2、程序部署、数据库都用不同的账号管理,不同账号职责不同。

    3、数据库一定要设置密码,特别说明:MongoDB、Redis 是默认没有密码的。

    二、程序方面:

    1、程序部署最好用 Git 统一管理。区分 master、test、dev 等环境,紧急修复问题用 fix_分支。

    2、程序日志一定要打印好!访问日志、404 等错误日志都要打印,监控异常。

    3、日志里边要添加 IP 地址,为了以后对恶意请求做限制(当然,如果遇到 DDoS 攻击的话,光这点肯定不够)

    一起讨论下安全吧
    

    V 友们还有其他的安全测录?一起来分享一下,互相抱团更安全。

    关于我们
    

    我们初创的网站:呆萌库 | 一个自由定制的主页 网址: https://demolibs.com/ 留言板: https://support.qq.com/products/96596

    33 条回复    2019-11-22 11:57:25 +08:00
    eason1874
        1
    eason1874  
       2019-11-21 11:11:51 +08:00   ❤️ 2
    你截图显示每间隔 6~7 分钟来 10 多个异常请求,扫描机已经相当客气了,谈不上暴力破解。

    扫描机都是扫已经披露的漏洞,绝大部分路径以 .asp | .php | .jsp 结尾,你网站所有访问路径都不要用这些后缀,然后直接在 Nginx 屏蔽这些后缀,就可以解决大部分扫描机的骚扰了。

    至于数据库那些,你设置密码、禁止远程访问,在腾讯云安全组拒绝这些端口访问就行了。
    demolibs
        2
    demolibs  
    OP
       2019-11-21 11:44:59 +08:00
    @eason1874 感谢大佬解答。 请问如有遇到 DDoS 怎么办?有什么好的对策吗?
    fengshils
        3
    fengshils  
       2019-11-21 11:51:19 +08:00
    🐧?
    demolibs
        4
    demolibs  
    OP
       2019-11-21 12:57:42 +08:00
    johnniang
        5
    johnniang  
       2019-11-21 13:07:29 +08:00 via Android
    遇到 DDos 可能需要用 cloudflare 之类的后盾帮你抗了
    ipadpro4k
        6
    ipadpro4k  
       2019-11-21 13:09:47 +08:00 via iPhone
    充值 v2 会员是什么样的操作
    demolibs
        7
    demolibs  
    OP
       2019-11-21 13:17:14 +08:00
    @johnniang 确实,目前买云服务商的 DDoS 防护包最简单了。
    我们还想着多做两三个备份域名和服务器,以防万一,至少保证用户的访问和使用。
    demolibs
        8
    demolibs  
    OP
       2019-11-21 13:19:11 +08:00
    @ipadpro4k 充会员,看的 V 友的这片教程:
    攻略:教你如何在 V2EX 发图片 /插链接 /插代码 /插视频(第二版)
    https://www.v2ex.com/t/408727

    主要是我们想发图片贴,可惜有点问题,明天再试试
    ZredoC
        9
    ZredoC  
       2019-11-21 13:40:14 +08:00
    主页不错 0.0 粉了
    defunct9
        10
    defunct9  
       2019-11-21 13:41:16 +08:00
    开 ssh,让我上去看看
    shintendo
        11
    shintendo  
       2019-11-21 13:53:13 +08:00
    @defunct9 老哥你来了
    demolibs
        12
    demolibs  
    OP
       2019-11-21 13:53:26 +08:00
    @ZredoC 多谢啦,初创阶段,欢迎多提提建议
    demolibs
        13
    demolibs  
    OP
       2019-11-21 13:55:00 +08:00
    @defunct9 老哥,目前除了这些非法请求之外,没有其他异常,ssh 就免了吧 ^_^
    struggle001
        14
    struggle001  
       2019-11-21 18:28:37 +08:00   ❤️ 1
    现在部署网站,不是防火墙做 nat 和负载均衡,之后 app 和 db 都是内网,防火墙只暴露对外服务的端口吗?
    上内网服务器,都是需要走防火墙的 sslvpn,而且防火墙具有漏洞检测及风险分析功能,这样就安全多了。
    struggle001
        15
    struggle001  
       2019-11-21 18:29:51 +08:00
    如果代码有漏洞,通过 80 做注入,那就很惨了,不过防火墙也有 sql 注入防护等安全防护的。
    Andy1999
        16
    Andy1999  
       2019-11-21 18:49:31 +08:00 via iPhone
    @demolibs 可以考虑阿里云的高防
    zarte
        17
    zarte  
       2019-11-21 19:00:38 +08:00
    我是挑了几条在 nginx 上弄重定向到百度搜索我的站点的连接。嘿嘿。
    xuanbg
        18
    xuanbg  
       2019-11-21 22:33:07 +08:00   ❤️ 1
    1、ssh 换端口
    2、ssh 访问设置 ip 白名单
    3、对外只开 80 和 443
    4、做好应用层安全,例如 sql 注入什么的

    漏洞扫描什么的,根本不用去理睬
    cydian
        19
    cydian  
       2019-11-22 02:23:09 +08:00 via Android
    能否留个可用的联系方式。
    想提交信息,但是不想用那些需要登录的反馈平台。
    email 也行啊
    l4ever
        20
    l4ever  
       2019-11-22 08:28:34 +08:00
    堡垒机了解一下?
    fanyingmao
        21
    fanyingmao  
       2019-11-22 08:57:38 +08:00 via Android
    感觉爆破密码还是比较困难的,没设密码端口外放有遇到过一些。
    lc7029
        22
    lc7029  
       2019-11-22 09:50:30 +08:00   ❤️ 1
    1,服务器只允许内网登陆,且登陆必须通过堡垒机。
    2,服务按类型部署在内网,ACL 控制内网间调用。比如 10.0.0.0/24 给核心网,10.0.1.0/24 给安全设备,10.0.2.0/24 给数据库,数据库不能访问核心网等。
    3,内网部署安全设备,比如 DDOS 防火墙,流量清洗,堡垒机,数据库审计,IPS 等设备。
    4,CDN 配置 WAF 功能。
    5,想起来再写。
    demolibs
        23
    demolibs  
    OP
       2019-11-22 10:26:54 +08:00
    @struggle001 多谢您的建议。
    我们的服务器只暴露业务相关接口,链路如下:
    http 请求 -> 云服务器(centos) -> 服务器防火墙(firewalld) -> Nginx -> 后端业务程序。

    SQL 防注入是个很古老,很重要的问题,项目内部代码审核还是很有必要的,尤其是 SQL 注入和满 SQL。
    demolibs
        24
    demolibs  
    OP
       2019-11-22 10:28:29 +08:00
    @Andy1999 好滴~~ 云服务商的高防,让开发运维又轻松了不少
    demolibs
        25
    demolibs  
    OP
       2019-11-22 10:31:15 +08:00
    @zarte “挑了几条在 nginx 上弄重定向到百度搜索我的站点的连接”
    这操作听起来很赞👍啊
    demolibs
        26
    demolibs  
    OP
       2019-11-22 10:33:37 +08:00
    @cydian 多谢啦,能收到用户的反馈,是我们最大的期望。
    请发到我们的邮箱吧: [email protected]
    demolibs
        27
    demolibs  
    OP
       2019-11-22 10:39:28 +08:00
    @l4ever 堡垒机确实很安全,做到内网隔离。
    一般大公司都是有专门运维团队来搭建的。
    初创公司,我们目前还没有对接这块,以后业务起来,确实得加上。
    中小公司,可以用云服务商的堡垒机服务,一个月几千块吧。
    demolibs
        28
    demolibs  
    OP
       2019-11-22 10:43:49 +08:00
    @fanyingmao 主要是看过很多博客提过,安全意识不到位的问题还是挺多的,就是做好预防
    1、开放 ssh 接口,默认登陆账号 root、密码 root 或 123456 等简单密码。
    2、管理后台,账号 admin、密码 admin
    3、MySQL、MongoDB、Reids 密码过于简单,甚至默认没有密码。
    demolibs
        29
    demolibs  
    OP
       2019-11-22 10:46:26 +08:00
    @lc7029

    1,服务器只允许内网登陆,且登陆必须通过堡垒机。
    2,服务按类型部署在内网,ACL 控制内网间调用。比如 10.0.0.0/24 给核心网,10.0.1.0/24 给安全设备,10.0.2.0/24 给数据库,数据库不能访问核心网等。
    3,内网部署安全设备,比如 DDOS 防火墙,流量清洗,堡垒机,数据库审计,IPS 等设备。
    4,CDN 配置 WAF 功能。


    膜拜运维大神🙏
    struggle001
        30
    struggle001  
       2019-11-22 10:46:40 +08:00
    @demolibs 麒麟堡垒机 了解下。
    struggle001
        31
    struggle001  
       2019-11-22 10:48:12 +08:00
    @lc7029 说实话 运维稍微上点心 就不会被黑,程序有问题除外。
    lc7029
        32
    lc7029  
       2019-11-22 11:28:16 +08:00
    @demolibs 额。。。我是网管啊。。。
    656002674
        33
    656002674  
       2019-11-22 11:57:25 +08:00
    看到#10 突然觉得正确的回复应该是这样的:

    运维请联系我,比楼上老哥便宜一块钱。

    溜了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3215 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 00:39 · PVG 08:39 · LAX 16:39 · JFK 19:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.