V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
yw121141111
V2EX  ›  程序员

纯小白 请问怎么保护自己的服务器

  •  
  •   yw121141111 · 2022-11-07 17:51:57 +08:00 · 8689 次点击
    这是一个创建于 776 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天刚买的阿里云 玩了一会 docker 开放了 22 端口和 docker 的默认端口 就报警说有挖矿程序 纯小白 请问改怎么做能尽量避免此类情况 求指点

    60 条回复    2022-11-09 15:34:54 +08:00
    me221
        1
    me221  
       2022-11-07 17:55:42 +08:00
    设置仅密钥登录, 限制 IP

    但如果服务器不对外开放的话... 建议用 WireGuard
    GoRoad
        2
    GoRoad  
       2022-11-07 17:56:27 +08:00
    22 端口一般是没事的 主要是 2379 端口 不开就行了
    GoRoad
        3
    GoRoad  
       2022-11-07 17:57:06 +08:00
    22 端口密码设置复杂一些问题不大的
    opengps
        4
    opengps  
       2022-11-07 18:02:48 +08:00
    几个基本点做到了足够应付 90%的问题:
    1 ,公网一定不能密码
    2 ,用不到的端口不开,用到的端口如果可以使用非默认端口最好,管理型用途端口配合白名单 ip
    3 ,堵住自身系统漏洞,别 443 的网站发布一个随意上传文件之类的漏洞
    4 ,经常检查,以便于识别出可疑文件,可疑进程,可疑资源占用等风险点
    5 ,其他
    masker
        5
    masker  
       2022-11-07 18:05:31 +08:00 via Android
    只开 sshd 。
    用公钥进行 ssh 连接,关闭密码连接,关闭 root 用户连接
    测试就搞个 tailscale ,想用啥端口用啥端口,不用过防火墙
    cweijan
        6
    cweijan  
       2022-11-07 18:55:35 +08:00
    禁用密码登录, 改为私钥登录
    wu67
        7
    wu67  
       2022-11-07 21:33:00 +08:00
    上面几位已经说完了.
    不用密码, 用 key 登录, 关掉 root
    关掉所有端口, 只留自己用到的.

    吐槽一下, 这两点 aws 就做得挺好, 就是劳资已经忘记了切到 root 用户的密码是啥....
    yiXu
        8
    yiXu  
       2022-11-07 21:53:18 +08:00
    如果要开放端口,更改下默认的端口。
    xratzh
        9
    xratzh  
       2022-11-07 21:55:05 +08:00
    改高位数的端口。密码倒是无所谓。
    重要的是,系统得带有自动备份。不畏惧
    wangyu17455
        10
    wangyu17455  
       2022-11-07 22:02:25 +08:00
    用 tailscale 组虚拟网,禁 ping 然后不开任何端口,服务器搞炸了就用 vnc 上去修,保证不出问题
    yogogo
        11
    yogogo  
       2022-11-07 22:04:29 +08:00
    开启 SELinux
    chaoschick
        12
    chaoschick  
       2022-11-07 22:10:52 +08:00 via Android
    @cweijan
    whileFalse
        13
    whileFalse  
       2022-11-07 22:16:38 +08:00 via iPhone
    @wu67 aws 直接用 session manager 啊
    jiayouzl
        14
    jiayouzl  
       2022-11-07 22:21:15 +08:00
    密码复杂点,不需要私钥的.
    wu67
        15
    wu67  
       2022-11-07 22:30:05 +08:00
    @whileFalse 布吉岛. 我只是用来跑一下 v2 aria2 ftp, 别的就不管了, 反正现在能跑, 哪天炸了我直接重装算了
    javerlei
        16
    javerlei  
       2022-11-07 22:34:39 +08:00
    ssh 跟换端口,使用秘钥登录,或者直接限制内网登录( wg 搭建内网),应用使用容器进行部署。
    hingle
        17
    hingle  
       2022-11-07 22:43:09 +08:00   ❤️ 1
    楼上居然没有人提到 docker ,这一看就是开放了 docker 端口造成的。
    可以本地安装一个 docker cli ,配置一下,直接能操作远程的 docker 。
    QN2107
        18
    QN2107  
       2022-11-08 00:22:50 +08:00
    同小白,希望路过的大佬给看下,我的问题是 我的服务器准备到期了,打算重新买一个轻量的( 1 核 2g 2 核 4g 带宽 5M ?),不知道哪有比较便宜的呢?背景是 我不是 aliyun 和腾讯云的新用户 学生认证的已经用过了。感谢
    wizardyhnr
        19
    wizardyhnr  
       2022-11-08 01:08:04 +08:00
    ssh+2FA+fail2ban ,这个配置改不改端口无所谓,因为 brutal attack 触发 fail2ban 的规则就永 ban 了。
    安装用官方方法,不要用一键安装脚本之类的,有的时候后门是你自己请进去的。装的软件越多,可能的漏洞就越多,所以按需安装,不要装一堆有用没用的。
    用 webui 管理配置的程序,可以用 nginx 反代,这样不用的时候就关掉反代。
    caomingjun
        20
    caomingjun  
       2022-11-08 02:04:12 +08:00 via Android
    我目前是防火墙只开 22 ,只允许密钥登陆;所有服务都用 docker 管理,docker 不映射任何端口( web 服务一律走 cloudflare tunnel )
    houzhishi
        21
    houzhishi  
       2022-11-08 05:08:25 +08:00
    大家思路都狭隘了,ssh 不一定是好的入口,只要不是弱口令,很难进来。主要还是服务器跑的程序,可能是未授权访问,也可能存在已知漏洞。ssh 用了半天配置来加固,结果应用写了个 SQL 注入,这就尴尬了。
    几点建议吧:
    1 、谨慎开启各类服务,如果需要开启请更新最新版,以及配置安全策略(因为很多组件默认不开启安全措施)。几个月前的那次私有云泄露,就是因为默认对象储存无鉴权。也有人说了,问题可能就是你开放的 docker 服务。
    2 、避免口令复用,以及弱口令。
    3 、及时更新软件、系统。
    基本就差不多了,最后带一句,刚刚开始学习,别在意这些,大不了重新装系统呗,谁都是从小白过来的。
    sommio
        22
    sommio  
       2022-11-08 05:52:22 +08:00
    楼上都假设一定要用 SSH (
    实际上完全可以把 SSH 关了,在控制台网页 VNC 连接,只要关掉就不用在乎这个“攻击面”了
    yaott2020
        23
    yaott2020  
       2022-11-08 08:19:40 +08:00 via Android
    别用 22 端口
    RRyo
        24
    RRyo  
       2022-11-08 08:50:54 +08:00
    改端口没啥用,高位端口一样有人扫,我这边家里防火墙检测到连续 3 次敏感端口扫描 ban ip, 因为高位端口 ban 掉的一周能上百

    0. 不要使用来路不明的什么一键 xxx 脚本,软件自己根据手册安装配置,别把 root 权限就这么莫名其妙的交了
    1. 如无必要不开放端口 /服务
    2. 关掉 ssh 的密码登录,只用密钥登录
    3. 把 fail2ban 装上,规则配好,有扫描 /入侵行为直接 ban
    4. 定时升级对外暴露服务和系统的安全补丁
    5. 定期检查如 /etc/passwd /etc/passwd- /etc/shadow /etc/shadow- ~/.ssh/known_hosts 这些敏感文件有无异常
    0001110001011
        25
    0001110001011  
       2022-11-08 08:54:18 +08:00
    楼上们说的都对,

    我感觉 楼主中了这个坑 @yw121141111

    我记得 docker-compose 里面的端口要 127.0.0.1:xxx:xxx 来映射, 不要 xxx:xxx 来映射, 不然就会有风险,暴露所有端口出去.
    oneisall8955
        26
    oneisall8955  
       2022-11-08 08:59:13 +08:00 via Android
    @0001110001011 安全策略组会禁掉外网的,没在策略组开,相当于本地了吧?
    LinYa
        27
    LinYa  
       2022-11-08 09:01:28 +08:00
    @0001110001011 请问大佬可以举个例子吗?我没看明白 `docker-compose 里面的端口要 127.0.0.1:xxx:xxx 来映射`这段话?
    GGGG430
        28
    GGGG430  
       2022-11-08 09:07:24 +08:00
    privileged: true 把这个关了就行
    Suaxi
        29
    Suaxi  
       2022-11-08 09:08:30 +08:00
    密钥登录,改高位端口,装个 fail2ban ,还有谨慎使用一键脚本
    azev
        30
    azev  
       2022-11-08 09:23:39 +08:00
    @caomingjun
    cloudflare tunnel 国内速度怎么样?
    jackmod
        31
    jackmod  
       2022-11-08 09:40:26 +08:00
    ssh 包装在了 v2 的后面,ufw 只留了 tcp443 和 wireguard ,443 外面套了 cf 。
    yulgang
        32
    yulgang  
       2022-11-08 09:56:11 +08:00   ❤️ 3
    caomingjun
        33
    caomingjun  
       2022-11-08 09:56:52 +08:00 via Android
    @azev 我去年 2 月做过一次测试:
    https://blog.caomingjun.com/cloudflare-tunnel-speedtest/
    国内还是比较慢的。时间比较长,不一定准了。如果服务器在国内我还是不建议用,可以把防火墙限制到仅国内可以访问,攻击面小很多。
    dongtingyue
        34
    dongtingyue  
       2022-11-08 10:00:53 +08:00
    centos 的机子可以用这个
    https://github.com/zarte/vps_deploy
    简单的防御措施
    wizardyhnr
        35
    wizardyhnr  
       2022-11-08 10:17:06 +08:00
    楼上正好给了个一键脚本的案例,像这种脚本都是要 root 权限的,所以运行脚本之前最好都自己审查一遍脚本确保没问题。
    weeei
        36
    weeei  
       2022-11-08 10:26:40 +08:00
    使用 UFW 设置只允许服务需要的端口。
    就不用担心 Docker 设置不当对外暴露端口的问题了。
    SSH 设置为仅允许 Key 登录,不允许 root 登录。最好也更改的 22 端口为其他的
    vone
        37
    vone  
       2022-11-08 10:26:59 +08:00
    ssh 密钥发一下,我帮你看看。
    lujiaosama
        38
    lujiaosama  
       2022-11-08 10:27:19 +08:00
    @hingle 对的. docker 映射端口会直接暴露. 我纳闷了好久才发现.
    tommyzhang
        39
    tommyzhang  
       2022-11-08 11:15:04 +08:00
    目前是官网网页登录 外部不可 ssh 其他的就是服务不要有漏洞
    MMMMMMMMMMMMMMMM
        40
    MMMMMMMMMMMMMMMM  
       2022-11-08 11:15:39 +08:00
    自动化渗透脚本扫一下,metasploit 之类的

    没有已经公开了的漏洞就算很安全了,能挖 0day 的也不会来专门黑你
    jones2000
        41
    jones2000  
       2022-11-08 13:30:02 +08:00
    买杀毒软件装一个就行了。
    Bijiabo
        42
    Bijiabo  
       2022-11-08 13:39:55 +08:00
    楼上都说得很好,我再补充一个关键点:不要用阿里云
    TsukiMori
        43
    TsukiMori  
       2022-11-08 13:48:06 +08:00
    VPS 就是密钥登陆+尽量不开端口
    NAS 就是路由器防火墙不开 web 之外的端口
    cheng6563
        44
    cheng6563  
       2022-11-08 13:54:45 +08:00
    只对公众暴露 80 和 443 端口。ssh 用的 22 端口改成高位端口,比如 49214 什么的,然后每次登录都去安全组把自己的 IP 加白名单。
    用阿里云面板上的安全组功能控制,系统内的防火墙可以关掉。
    ltkun
        45
    ltkun  
       2022-11-08 14:10:33 +08:00
    每次用好 ssh 关闭端口 这是公网服务器的基本原则哈
    terencelau
        46
    terencelau  
       2022-11-08 14:11:32 +08:00
    看看是不是 docker 开了 2375 端口,容易被提权
    onice
        47
    onice  
       2022-11-08 14:42:27 +08:00
    遵循最少服务原则,能不开的服务尽量不开。
    所有服务采用普通用户权限运行。
    软件包采用最新版本,定期升级。
    确保服务的安全。比如开了 redis ,就不能空口令或弱口令。开了 web 站点,就要确保 web 站点没有 sql 注入,命令执行等漏洞。
    gps949
        48
    gps949  
       2022-11-08 15:36:39 +08:00
    1 、完全重做系统(保证系统用的是干净的官方版,最好阿里云的那些破 monitor 也别装)。
    2 、防火墙(阿里云网络安全组)设置入方向全部关闭。
    3 、使用阿里云登录(如 vnc ),在上面装个 tailscale 。可以开 tailscale ssh ,也可以单独开 ssh (但建议绑定 ssh 服务在 tailscale 的 100.x.x.x 接口上,如果修改 ssh 端口、使用公钥登录禁用密码登录就更好了)。
    4 、后续都适用 tailscale 访问。
    5 、使用 docker 的话,看楼上一堆说 2375 口的安全问题,但我记得默认是不开 2375 的,只是用 linux sock 访问的。如果需要使用 tcp 访问 docker api ,建议开启 docker api tcp 访问的双向 tls 加密。
    6 、说句实在话,挖矿这东西大多数不是别人黑(登入)进你的设备给你装的,多半是你自己下载执行些程序搞的,尤其是玩 docker 的话,小心 docker 镜像被挂马或者挂挖矿脚本。
    tonzeng
        49
    tonzeng  
       2022-11-08 17:29:24 +08:00
    遠離 docker
    abc0123xyz
        50
    abc0123xyz  
       2022-11-08 17:35:43 +08:00
    网线拔了
    webcape233
        51
    webcape233  
       2022-11-08 17:39:02 +08:00 via iPhone
    禁止 root 密码登陆
    普通用户名和密码不要简单 比如 test test123
    fail2ban 设置密码错误三次到五次就拉黑 1024000000 秒
    防火墙除了必要的都不开
    内核老的滚上新内核
    装个 vpn 自己用、vpn 子网里面不做限制自己想开啥端口就开啥端口
    radiocontroller
        52
    radiocontroller  
       2022-11-08 17:44:08 +08:00
    开 ssh ,我上去检查一下
    zpfhbyx
        53
    zpfhbyx  
       2022-11-08 19:07:48 +08:00
    加个 otp 基本可以解大部分了.
    sunnysab
        54
    sunnysab  
       2022-11-08 19:38:20 +08:00
    @azev 我这边电信能跑到 1MB/s ,但是新疆、移动等地区或运营商,或因为线路,或因为政策,可用性较差。
    w3sun
        55
    w3sun  
       2022-11-08 21:11:01 +08:00
    改下 ssh 端口,ssh-keygen 创建密钥,修改 /etc/ssh/sshd_config 设置密钥登陆
    dnsaq
        56
    dnsaq  
       2022-11-08 21:49:54 +08:00 via iPhone
    主要考虑你跑的程序安全性就行了。系统默认就只有 sshd 端口而已,sshd 端口不要对外开放就是了。
    Aixtuz
        57
    Aixtuz  
       2022-11-08 23:02:28 +08:00 via iPhone
    我是 vps 到手先这样:
    1. ssh 新用户、用密钥、禁密码、禁 root ;
    2. ufw 只开一部分要用的;
    3. f2b 限制一下十分钟内的错误次数;
    暂时没用别的,顺道请问一下路过的彦祖:
    国外的 vps 用上面那些朋友说的 tailscale 方案,会不会因为过墙而被消灭?最近这段时间阵亡的比较严重…
    JohnBull
        58
    JohnBull  
       2022-11-08 23:25:04 +08:00
    装一个 sshguard
    MonoLogueChi
        59
    MonoLogueChi  
       2022-11-08 23:35:58 +08:00 via Android
    1 不用的端口不开
    2 ssh 仅秘钥登录
    3 不直接使用 root 账户,禁用 root 远程登录
    4 最重要的一点,不明的程序不要运行,内部破坏是最容易的
    Picmen
        60
    Picmen  
       2022-11-09 15:34:54 +08:00
    我服务器上面装的东西都没有对外开放的需求,就开了一个 WireGuard 端口,通过 WG 访问
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1562 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:38 · PVG 00:38 · LAX 08:38 · JFK 11:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.