Befehishaber
V2EX  ›  Java

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

  •  
  •   Befehishaber · May 6, 2023 · 9591 views
    This topic created in 1277 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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

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

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

    3. 应用安全。大多数时候,操作系统本身是很安全的。但是操作系统上安装的应用却不一定安全。例如 Linux 操作系统上的 ssh 应用,你使用了弱口令,攻击者可以通过暴力破解攻进来。或则是你安装了 redis ,没有设置密码,而默认配置是没有密码的,攻击者可以通过控制 redis 进而控制服务器。还有你使用了其他低版本含有漏洞的软件。例如之前比较火的心脏滴血漏洞。这一步往往是最难的,因为一个系统的软件包那么多,我们无法知道哪些软件包存在问题。不过,你可以使用 nessus 扫描器,来找出哪些软件存在问题。对于存在问题的软件包,只需要升级到最新的版本即可。
    onice
    onice
    May 7, 2023
    58
    @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
    Befehishaber
    OP
    May 8, 2023
    59
    @onice 受教了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1718 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 100ms · UTC 17:09 · PVG 01:09 · LAX 09:09 · JFK 12:09
    ♥ Do have faith in what you're doing.