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

新到手的 Linux 服务器,我这样设置

  •  4
     
  •   DejavuMoe · 11 天前 · 5604 次点击
    48 条回复    2025-11-27 09:17:55 +08:00
    totoro625
        1
    totoro625  
       11 天前   ❤️ 1
    写的很详细,非常有帮助
    随便提几个小建议
    1. apt 和 apt-get 不要混用,统一用一个就行
    2. Debian13 源用 DEB822 格式,不要再用传统格式了
    3. ufw 默认的日志服务依赖 rsyslog ,建议额外安装一下,否则会漏日志

    有几个疑问
    1. 已经使用 key 登录 ssh 了,还需要 Fail2ban 保护 ssh 吗?
    2. docker 绑定 127.0.0.1 之后,如果需要公网端口访问+ufw 控制,如何解决?
    bodayw
        2
    bodayw  
       11 天前   ❤️ 12
    看到说要启用 BBR ,想起来我前阵子恰好稍微研究了一下这个。

    先说结论:虽然网上流传的烂大街的教程和脚本都写了 net.core.default_qdisc = fq ,但这个应该早就不需要了。只需 net.ipv4.tcp_congestion_control=bbr 即可。

    Linux kernel < 4.20 的时候,配置 fq 是必须的,但现在已经不是了,参见:
    https://groups.google.com/g/bbr-dev/c/4jL4ropdOV8

    根据 Bufferbloat 创始人之一 Dave Täht 的说法,fq_codel 是更好的默认值,而这也已经是几乎所有主流发行版的默认配置了( Debian 应该是最后一个改的,从 bullseye(11) 开始)。fq 只在少数情况下优于 fq_codel 。详见这里的评论:
    https://github.com/systemd/systemd/issues/9725
    以及这里:
    https://blog.cerowrt.org/post/state_of_fq_codel/
    Atma
        3
    Atma  
       11 天前
    @totoro625 端口最好也换一下;公网可以 ng 反代,甚至套 cloudflare ,只允许 cloudflare ip 访问
    cndns
        4
    cndns  
       11 天前 via Android
    DejavuMoe
        5
    DejavuMoe  
    OP
       10 天前
    @totoro625 建议 1~2 没影响,3 会再学习一下。
    已经使用 SSH key 了,还是需要 Fail2ban
    公网访问使用任何 web 服务器 Nginx 、Apache 、Caddy……反向代理即可
    DejavuMoe
        6
    DejavuMoe  
    OP
       10 天前
    @bodayw 学习了,感谢!
    villivateur
        8
    villivateur  
       10 天前   ❤️ 5
    我一直觉得,SSH 只要禁用密码登录就行了,改端口、fail2ban 都是画蛇添足
    jasonyang9
        9
    jasonyang9  
       10 天前 via Android
    👍大佬整个 ansible playbook 跑一下。。。
    evansun
        10
    evansun  
       10 天前
    有人给我解答下问题么,我本地装 podman php 做开发环境,但是现在 主机 nginx 访问无权限
    daimaosix
        11
    daimaosix  
       10 天前
    @bodayw 学习了!
    daimaosix
        12
    daimaosix  
       10 天前
    @villivateur 没有绝对的安全,即使改端口,使用 fail2ban 都是为了提高一些门槛,无非就是你不做其他的沦陷的更快一些
    secretys
        13
    secretys  
       10 天前
    这个博客好看,不知道 wp 有没有一样的主题
    villivateur
        14
    villivateur  
       10 天前
    @daimaosix 禁用密码登录,只允许密钥登录,就是现实意义上的绝对安全,不可能破解。
    iamwin
        15
    iamwin  
       10 天前   ❤️ 2
    提几点建议啊
    1. 不推荐使用经过加料的 dd 脚本,如果你要重装 debian 的话,我更推荐在服务商的恢复模式下使用官方的云镜像 dd 覆盖目标磁盘并手动调整分区 https://cloud.debian.org/images/cloud/ , 或者使用 https://netboot.xyz/ ,直接重装系统。
    2. 如果你是用的是 debian 最新版系统,这三个包已自带 ca-certificates apt-transport-https curl ,不需要再次安装,screen 包我不知道你安装来做什么,如果你是准备用来持久化后台运行某些程序,我建议你学习一下 systemd 服务的写法,还有 unzip 包,用的情况很多,推荐你安装
    3. docker 安装过程,他们官网的指南已经过时了,你只需要安装 docker-ce 这一个包其他都会跟着一起安装,更推荐使用新的 docker compose 命令,而不是老的 docker-compose
    4. 如果你是手打命令用 apt ,如果你是写脚本用 apt-get ,apt 在脚本里面用会出现一些 file locked 的问题
    5. fail2ban 和 ufw ,这两个东西,如果是你自己使用的服务器,我觉得是完全没有必要安装的,对于防火墙我推荐你也学习一下 firewalld
    6. 最后 ssh 配置我觉得改非默认端口就能减少绝大部分的密码爆破了,其他配置改了用处都不大
    BeforeTooLate
        16
    BeforeTooLate  
       10 天前
    @villivateur 你的理解没有错啊,改端口、fail2ban 只不过可以减少被暴力扫描的烦人的日志罢了,我就不安装 fail2ban ,日志里面就 N 多的扫描记录
    realpg
        17
    realpg  
    PRO
       10 天前
    @iamwin #15
    搞过云基础设施的建议:

    小厂云服务可以 dd 官方镜像
    大厂/巨厂不建议的, 会有很多隐性问题, 还是用厂商给你弄好的, 换了在一些特殊调度上会亏, 有些厂商是有一些黑科技的 除非你用来挖矿或者纯 CPU 密集应用
    mdn
        18
    mdn  
       10 天前
    @daimaosix ssh 密钥被破解,等于加密货币 可以被破解,fail2ban 唯一作用减少日志
    liuzimin
        19
    liuzimin  
       10 天前
    没人用 ssh 的两步验证吗?我觉得还挺爽的。
    Suomea
        20
    Suomea  
       10 天前
    密码复杂度
    密码过期
    登录失败锁定
    会话超时自动退出
    开启审计进程
    94nb
        21
    94nb  
       10 天前
    额,我也问个问题哈,你们单独用 ufw ,那安全组策略那里是直接全放开,直接用服务器的防火墙做防护吗?我的服务器基本没装过防火墙,都是依赖安全组设置传入传出。。。
    wangqi060934
        22
    wangqi060934  
       10 天前
    ChallengeResponseAuthentication no ,配这个是为啥?
    1018ji
        24
    1018ji  
       10 天前
    lotspeed
    CcHer
        25
    CcHer  
       10 天前
    softlimit 参数
    要不要根据情况关闭 swap
    selinux 和按需关闭防火墙,第三方防火墙要考虑使用的问题
    DejavuMoe
        26
    DejavuMoe  
    OP
       10 天前
    @BeforeTooLate 这个好!感谢分享
    hi2hi
        27
    hi2hi  
       10 天前   ❤️ 1
    我的步骤,1 、有枣没枣,先把一堆自己常用的工具安装上; 2 、改密钥登录和端口(防止一些无脑子爆破); 3 、装上 Docker ,开始 All in Docker
    lyxxxh2
        28
    lyxxxh2  
       10 天前

    被爆了一个月了,基本是爆 root admin 用户。
    好奇他多久停止,让他继续玩。
    asong
        29
    asong  
       10 天前
    感谢分享,最近买了一个 racknerd 的服务器,默认是 Ubuntu 系统的,请问是否也适用(我看这个帖子里都是关于 Debian 的🤣)
    zhanying
        30
    zhanying  
       10 天前
    补充两个中国特色小工具:
    1 、linuxmirrors
    2 、chsrc

    一个是给包管理器换源,一个是各种换源
    DejavuMoe
        31
    DejavuMoe  
    OP
       10 天前
    @asong 适用
    elevioux
        32
    elevioux  
       10 天前
    在 根目录运行 claude code !
    adoal
        33
    adoal  
       10 天前
    我一般会开 fail2ban 或 sshguard ,但不会换 ssh 端口
    mx1700
        34
    mx1700  
       10 天前 via Android
    @94nb 大厂有自己的防火墙,服务器全放开就行
    小厂一般都没有,就需要每台服务器自己维护
    artiga033
        35
    artiga033  
       10 天前 via Android
    @iamwin 关于第 2 点,screen 和 systemd 设计目标就不一样,我自己的话用的是 tmux 。主要是跑一些可能运行很久的临时任务,比如下载或者上传一个大文件,临时开个端口转发之类的这种一次性场景。
    94nb
        36
    94nb  
       10 天前
    @mx1700 哦哦哦,了解了,感谢
    ibegyourpardon
        37
    ibegyourpardon  
       10 天前
    这个帖子久违的没有人炫耀,显摆,而是真诚的给建议。

    真好。
    dbit
        38
    dbit  
       10 天前
    刚好需要 OP 的 cf 脚本
    Strikplf
        39
    Strikplf  
       10 天前
    @asong 装个 1pannel
    DejavuMoe
        40
    DejavuMoe  
    OP
       10 天前
    @ibegyourpardon 是的,评论区的一些观点和文章链接值得学习
    Apol1oBelvedere
        41
    Apol1oBelvedere  
       10 天前
    博客干净简洁,内容行文严谨细致,完美。
    yhxx
        42
    yhxx  
       10 天前
    @94nb 我就是这样的,只用安全组控制了
    不过做了备份,就算是全没了应该也问题不大
    wu00
        43
    wu00  
       10 天前
    @totoro625 一直以为 apt-get 和 apt 的关系相当于 version 和-v
    shylockhg
        44
    shylockhg  
       10 天前
    直接 opensuse-leap-micro 6.2 爽歪歪
    alex177027
        45
    alex177027  
       10 天前 via Android
    很好的指南,但是有几个地方可以更新一下
    1.net-tools 对于 debian13 来说有点老了,现在都有系统自带的 ss 之类的可以替代了
    2.nginx 推荐使用 n.wtf 已经打包好了 quic zstd brotli 模块了
    3.fail2ban 有一点过时了,对于低配置的服务器用 sshguard 就足以,性能好一点的用 crowdsec 配合 nftables 更好
    DejavuMoe
        46
    DejavuMoe  
    OP
       10 天前
    @alex177027 感谢指正
    gearfox
        47
    gearfox  
       9 天前
    codehz
        48
    codehz  
       9 天前
    都用 cloudflare 的话,其实没必要开端口给 cloudflare ,原站迟早会被找出来(即使限制了 cf 段的访问,攻击者还是可以用 worker 来定位)
    直接用 cloudflare tunnel 即可(
    甚至于 ssh 也可以用 zero trust
    这样甚至不需要有一个公网 ip ,想找原站也找不到
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   868 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 20:26 · PVG 04:26 · LAX 12:26 · JFK 15:26
    ♥ Do have faith in what you're doing.