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

最近想搭一个服务器 大佬们来指导下安全问题

  •  
  •   Befehishaber · 2023-05-06 10:13:32 +08:00 · 7200 次点击
    这是一个创建于 367 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1 、改 ssh 端口 2 、禁止 root 远程登录 3 、禁止除 xxx 用户的一切用户 su 4 、禁用密码使用密钥 5 、上 fail2ban 6 、使用 nginx 代理 7 、除 ssh 和服务端口其他端口全部关闭 8 、vm 自动快照

    在做好上述步骤后 还会存在侵入和数据丢失风险吗

    59 条回复    2023-05-08 09:46:40 +08:00
    mohumohu
        1
    mohumohu  
       2023-05-06 10:15:49 +08:00
    你不如搭个 zerotier ,一个端口都不用开
    cwcc
        2
    cwcc  
       2023-05-06 10:16:28 +08:00   ❤️ 1
    没有绝对的安全,只有降低风险的措施。所以你说还会存在侵入和数据丢失风险的问题,答案永远是否定的。你能做的只有加强安全检测和防护,以及数据备份。你提到的几个措施都是很有效的防范措施,但不能保证服务器不出事。另外,对于开公网的服务器,如果业务很重要的话,也要在外面套 IPS/WAF 等措施。
    cwcc
        3
    cwcc  
       2023-05-06 10:17:33 +08:00
    @cwcc 修正语病:肯定
    gzlock
        5
    gzlock  
       2023-05-06 10:19:49 +08:00
    其实用外网的 vps+cf tunnel 的可行性怎么样?
    seers
        6
    seers  
       2023-05-06 10:20:07 +08:00 via Android   ❤️ 1
    我有台公网小鸡跑了三四年了都没被黑过,就关掉了密码登陆用 key
    mineralsalt
        7
    mineralsalt  
       2023-05-06 10:23:43 +08:00
    只要把 root 密码搞复杂些, 就完全够了
    bjzhush
        8
    bjzhush  
       2023-05-06 10:28:08 +08:00
    除了防攻击,还要做定时数据备份,把万一被黑或者其它意外之后丢失数据的损失降低的最小
    defunct9
        9
    defunct9  
       2023-05-06 10:29:34 +08:00
    裸奔是王道
    poyanhu
        10
    poyanhu  
       2023-05-06 10:32:55 +08:00
    换个 ssh 端口,用证书登陆。其他无所谓了。
    Hack3rHan
        11
    Hack3rHan  
       2023-05-06 10:33:54 +08:00
    其实你自己用的话,你只需要关注对外暴露的服务就可以了,改 SSH 端口都多余的,减小不必要的暴露面,保证运行的服务没有已知漏洞就可以了。公司服务器的话,总体上也是类似的思路,要是不安心,应该不难找到一些配置规范相关文档,参考着来。
    Befehishaber
        12
    Befehishaber  
    OP
       2023-05-06 10:35:37 +08:00
    @cwcc 哈哈哈
    Befehishaber
        13
    Befehishaber  
    OP
       2023-05-06 10:36:11 +08:00
    @gzlock 不知道 没听别人谈过呢
    iyiluo
        14
    iyiluo  
       2023-05-06 10:36:14 +08:00
    只要服务器提供了对外服务,就存在入侵的风险,因为软件 bug 是永远无法消灭的
    Befehishaber
        15
    Befehishaber  
    OP
       2023-05-06 10:36:46 +08:00
    @seers 嗯嗯 理论上是这样 但是一直被扫描还是会影响性能的
    Befehishaber
        16
    Befehishaber  
    OP
       2023-05-06 10:39:26 +08:00
    @taogen 很全面 应该够大部分人用了
    Moofeng
        17
    Moofeng  
       2023-05-06 10:49:31 +08:00
    一般服务器最主要的风险就是暴露在外的服务,其他的不用过多担心,但问题就是时间一长,很多人就疏忽了对自己这些服务的管理。
    benedict00
        18
    benedict00  
       2023-05-06 10:53:28 +08:00
    有时间可看看这个,算是安全基线的东西,有些参考价值。https://learn.cisecurity.org/benchmarks
    bingfengfeifei
        19
    bingfengfeifei  
       2023-05-06 10:54:55 +08:00
    被攻破的基本上都是弱密码或者有漏洞的
    benedict00
        20
    benedict00  
       2023-05-06 10:56:12 +08:00
    InDom
        21
    InDom  
       2023-05-06 10:57:45 +08:00   ❤️ 1
    只做了这么几件事:

    ssh 端口改掉, 只允许密钥登陆, 所有服务跑在 docker 中.

    除了 ssh 端口外只通过 docker 中的 nginx 暴露(docker 中的)端口.
    icegaze
        22
    icegaze  
       2023-05-06 11:06:40 +08:00 via Android
    ssh 可以用敲端口方式来保护,
    平时不会打开端口,
    用的时候依次敲特定几个端口,
    打开防火墙。

    方便的狠。
    Linken404
        23
    Linken404  
       2023-05-06 11:19:13 +08:00
    高位非常用 ssh 端口+仅密钥登录,基本上就能防范绝大部分常规扫描嗅探了,有时候不太重要的数据做好备份就好,搞太麻烦会大幅增加平时的维护成本也挺烦的。
    fox0001
        24
    fox0001  
       2023-05-06 11:20:39 +08:00 via Android
    我们试过服务器做好了安全防护,最后问题出在部署的服务,其漏洞被利用了。
    adoal
        25
    adoal  
       2023-05-06 11:22:52 +08:00
    别忘了操作系统组件的安全更新。
    0o0O0o0O0o
        26
    0o0O0o0O0o  
       2023-05-06 11:28:13 +08:00 via iPhone
    搜点 Linux server hardening 、security baseline 跟着抄抄、学学。除了 ssh 什么也别跑,服务全部放在 rootless container 里。

    也就够了
    liuxu
        27
    liuxu  
       2023-05-06 11:33:43 +08:00
    差不多了,还觉得不安全就上 selinux ,几年前写过 centos 安装后的安全配置,现在不建议 centos 了,但是相关的软件在 debian 也能装

    https://www.liuquanhao.com/posts/Centos7%E4%BB%8E%E5%88%9D%E6%AC%A1%E7%99%BB%E9%99%86%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%88%B0%E5%AE%89%E8%A3%85nginx%E9%85%8D%E7%BD%AEhttps%E5%85%A8%E8%A7%A3/#5ssh%E9%85%8D%E7%BD%AE%E5%AE%8C%E6%88%90
    xuanbg
        28
    xuanbg  
       2023-05-06 11:39:59 +08:00
    无需如此麻烦,除 80/443 外,其他端口全 ip 白名单,再加上服务容器化就足够安全了。
    xuanbg
        29
    xuanbg  
       2023-05-06 11:42:32 +08:00
    @fox0001 所以服务要容器化!漏洞在所难免,容器化后通过漏洞入侵只能在你的容器里面转悠,无法造成更大的破坏。容器么,坏掉就坏掉,重建一个也就几秒钟的事情。
    ZoeMak
        30
    ZoeMak  
       2023-05-06 11:52:27 +08:00
    试试 fail2ban ,ssh 登录密码设置复杂些,设置 1 小时内失败 1 次就 ban 一小时
    chenPiMeiHaoChi
        31
    chenPiMeiHaoChi  
       2023-05-06 11:57:12 +08:00
    开个白名单就完了,没啥重要东西不用这么复杂
    nba2k9
        32
    nba2k9  
       2023-05-06 13:07:32 +08:00
    如果是 ecs 的话直接设置安全组白名单可以吗?
    rm0gang0rf
        33
    rm0gang0rf  
       2023-05-06 13:16:10 +08:00
    所以 ddos 怎么防
    alex8
        34
    alex8  
       2023-05-06 13:35:02 +08:00 via iPhone
    fail2ban 对密钥登陆没作用,密钥证书除非泄漏 破解的可能性几乎不存在
    taogen
        35
    taogen  
       2023-05-06 13:58:46 +08:00
    @rm0gang0rf Cloudflare DDoS Protection
    codewld
        36
    codewld  
       2023-05-06 14:06:13 +08:00
    开 ssh ,让我上去看看
    aaa5838769
        37
    aaa5838769  
       2023-05-06 14:13:16 +08:00
    key 登陆,制定 IP 访问。
    HackerTerry
        38
    HackerTerry  
       2023-05-06 14:13:29 +08:00
    @gzlock 请问怎么配置?头一次听说 cf tunnel ,听起来很安全
    hack
        39
    hack  
       2023-05-06 14:15:47 +08:00
    @xuanbg 容器也可以逃逸
    Befehishaber
        40
    Befehishaber  
    OP
       2023-05-06 14:27:05 +08:00
    @xuanbg 有道理
    benjaminliangcom
        41
    benjaminliangcom  
       2023-05-06 14:37:13 +08:00
    WAF
    yulgang
        42
    yulgang  
       2023-05-06 15:43:54 +08:00
    密码发上来看看
    yxzblue
        43
    yxzblue  
       2023-05-06 15:49:53 +08:00
    别在服务器上面搭网站,就没有被黑的风险!
    crazyweeds
        44
    crazyweeds  
       2023-05-06 16:05:13 +08:00
    还是有风险,最好只给指定 IP 开放 SSH 。
    剩下的风险项不限于,你使用的服务有安全漏洞或者不安全的配置,比较容易中招的,比如 Redis 。
    还有,你本地可能有木马程序。。
    jalena
        45
    jalena  
       2023-05-06 16:48:07 +08:00
    你在怕什么!!!!!!!!!!!!我的博客服务器裸奔 7 年了。。。
    jackmod
        46
    jackmod  
       2023-05-06 16:53:46 +08:00
    最开始先通过控制台修改 ssh 端口。
    vps 提供商有防火墙的话,全禁,只允许本机 IP 访问修改后的 ssh 端口。
    之后是创建普通用户,删除 root 的 ssh ,必要时通过 su 切换。
    80 和 443 也没必要开,通过 cf tunnel 反向暴露。
    运行的服务放在 docker 里面。
    docker 使用 rootless 版本。
    x77
        47
    x77  
       2023-05-06 17:05:09 +08:00
    感觉 1 、2 、3 、5 、6 给自己造成的麻烦大于安全,还不如限制登录的 IP ,只有你自己 IP 能登录
    Scen
        48
    Scen  
       2023-05-06 17:07:49 +08:00
    说的这么详细了,不如问问 chatgpt
    EvanQu
        49
    EvanQu  
       2023-05-06 19:35:16 +08:00
    只改了端口+ssl
    其他基本属于裸奔
    caomingjun
        50
    caomingjun  
       2023-05-06 20:26:18 +08:00 via Android
    借楼问下,我长期设置只允许密钥登录,但是从来没改过 SSH 端口,会存在什么风险吗?
    bugmakerxs
        51
    bugmakerxs  
       2023-05-06 20:50:18 +08:00
    提供一个 vpn 思路,wireguard 固定端口+固定 ip 允许登录就好。
    gzlock
        52
    gzlock  
       2023-05-06 20:57:37 +08:00
    @HackerTerry #38 我家里尝鲜用的话,就是域名的 dns 绑定到 cf 那里之后就可以用 tunnel 服务了,也不用怎么配置啊,先装 cf tunnel(在 github 开源的,有安装方法),从 cli 启动 tunnel 后要求你登录 cf 账号,登录之后就去 cf tunnel 网页绑定机器就可以了
    Paulownia
        53
    Paulownia  
       2023-05-07 00:32:31 +08:00
    一般来说你的措施已经有比较好的效果了,互联网上充斥着的自动化攻击多数都是一些常见漏洞和弱口令等脆弱性的利用。只要不是被人针对,你的措施算是比较有效了。但是数据安全之类的,不是只是被攻击才存在风险,人为的失误也会造成你担心的风险,比如你自己的策略调整可能导致你前面的一些措施都失效,手误删除了什么数据或者配置等,所以说还是前面大佬们都说过的问题,没有绝对的安全,你的措施只能是让自己的服务抵御一部分风险。
    benjaminliangcom
        54
    benjaminliangcom  
       2023-05-07 00:46:22 +08:00 via iPhone
    你这只是系统层面的 应用层面才是主要的突破口
    n18255447846
        55
    n18255447846  
       2023-05-07 01:31:31 +08:00   ❤️ 1
    老哥你这造原子弹呢,什么数据这么保密
    HackerTerry
        56
    HackerTerry  
       2023-05-07 16:30:31 +08:00
    @gzlock 内网穿透吗?在国内速度应该挺感人的
    onice
        57
    onice  
       2023-05-07 21:13:57 +08:00   ❤️ 1
    对于大多数场景的安全加固,从三个方面入手。分别是:

    1. 项目安全。如果是自己开发的项目,专业点的可以找人进行代码审计,次一点是也要找渗透测试人员进行漏洞挖掘。如果是自己干,最起码要通过漏洞扫描器的测试。例如 awvs 。如果这一步检测出安全问题,可以修改代码进行修复。如果是使用的开源项目,要确保项目不存在公开漏洞。例如很多网站都是用 php 开发的,但开发 php 项目的框架 thinkphp5 存在漏洞。因此,如果你部署的项目使用这个版本的框架开发的,就容易受到攻击。当然,自己开发的项目,也要避免使用存在漏洞的库。不过一般知名的 web 漏洞扫描器都能检测出来这些安全问题。

    2. 系统安全。大多数时候,就操作系统层面来说,系统默认配置就足够安全了。你只需要保持操作系统打上最新的补丁就行了。当然,对于弱口令这类问题,服务器操作系统基本上都有密码复杂度检测,密码简单了无法设置密码的。当然,你关了这个检查,强行设定的简单的密码,就没办法了。

    3. 应用安全。大多数时候,操作系统本身是很安全的。但是操作系统上安装的应用却不一定安全。例如 Linux 操作系统上的 ssh 应用,你使用了弱口令,攻击者可以通过暴力破解攻进来。或则是你安装了 redis ,没有设置密码,而默认配置是没有密码的,攻击者可以通过控制 redis 进而控制服务器。还有你使用了其他低版本含有漏洞的软件。例如之前比较火的心脏滴血漏洞。这一步往往是最难的,因为一个系统的软件包那么多,我们无法知道哪些软件包存在问题。不过,你可以使用 nessus 扫描器,来找出哪些软件存在问题。对于存在问题的软件包,只需要升级到最新的版本即可。
    onice
        58
    onice  
       2023-05-07 21:24:11 +08:00
    @onice
    问:
    1 、改 ssh 端口 2 、禁止 root 远程登录 3 、禁止除 xxx 用户的一切用户 su 4 、禁用密码使用密钥 5 、上 fail2ban 6 、使用 nginx 代理 7 、除 ssh 和服务端口其他端口全部关闭 8 、vm 自动快照

    在做好上述步骤后 还会存在侵入和数据丢失风险吗

    答:
    1. 改了 ssh 端口没用,使用端口扫描器依旧能找到你设置的新端口
    2. 禁止 root 远程登录。可以防御部分攻击,例如大部分僵尸木马,都是暴力破解 root 口令控制服务器,做到这点可防止这类木马。
    3. 禁止除 xxx 用户的一切用户。可以提升攻击者的攻击门槛,但作为一个合格的攻击者,还有其他方法在系统中添加新用户。
    4. 禁用密码使用密钥。可以防御针对 ssh 服务的暴力破解。但无法防御钓鱼和社会工程学。例如攻击者通过网站找到你,告诉你网站有问题,给你发包含木马的文档,如果你中招了,可以窃取你的私钥。
    5. 上 fail2ban 。可以限制同一个 IP 的访问频率,从而防止 CC 攻击,但攻击者可能会使用分布式的 DDos ,这样就防不住了。
    6 、使用 nginx 代理。这一步没啥意义。如果 web 应用出现问题,无论你用的是 httpd(apache),tomcat ,还是 iis ,都防不住。
    7. 除 ssh 和服务端口其他端口全部关闭。这个能提高攻击门槛吧。攻击者不会只从端口上找漏洞。
    8. vm 自动快照。这个是可以保证数据完整性,但无法保证安全性。
    Befehishaber
        59
    Befehishaber  
    OP
       2023-05-08 09:46:40 +08:00
    @onice 受教了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   6061 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 02:42 · PVG 10:42 · LAX 19:42 · JFK 22:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.