<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>服务器安全 on OpusMia</title><link>https://opusmia.com/tags/%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%AE%89%E5%85%A8/</link><description>Recent content in 服务器安全 on OpusMia</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Thu, 08 Oct 2026 09:36:00 +0800</lastBuildDate><atom:link href="https://opusmia.com/tags/%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%AE%89%E5%85%A8/index.xml" rel="self" type="application/rss+xml"/><item><title>Ubuntu 新机第一件事：安全加固清单</title><link>https://opusmia.com/posts/ubuntu-server-hardening/</link><pubDate>Thu, 08 Oct 2026 09:36:00 +0800</pubDate><guid>https://opusmia.com/posts/ubuntu-server-hardening/</guid><description>&lt;p&gt;我的 VPS 刚装好 Ubuntu 那天晚上，我正规划博客长什么样，顺手看了一眼 &lt;code&gt;/var/log/auth.log&lt;/code&gt;，整个人瞬间清醒了：机器上线还不到一小时，日志里已经躺了几十条失败登录记录，全是来撞 22 端口的。好家伙，我这台刚出生的小机器，被全世界惦记的勤快程度，堪比我们 HOA 查违建。&lt;/p&gt;
&lt;p&gt;那天晚上博客没装成，我先花了半小时把门锁死。下面这份清单就是我当时一步步做下来的，每一步都有命令和原因，照着走一遍大概二十分钟。二十分钟，换以后半夜不用爬起来救火——第二天还要送孩子上学的人，伤不起。&lt;/p&gt;
&lt;h2 id="1-先更新系统再干别的"&gt;1. 先更新系统，再干别的&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt update &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt upgrade -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;新装的镜像多少都带点旧软件包，旧版本等于已知漏洞。先把系统补到最新，后面的配置才站在干净的地基上。这一步零技术含量，但很多人一兴奋就跳过。当晚的我差点也跳过，还好被那几十条登录记录吓清醒了。&lt;/p&gt;
&lt;h2 id="2-新建日常用户告别天天-root"&gt;2. 新建日常用户，告别天天 root&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;adduser blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;usermod -aG sudo blog
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;root 权限太大，手一抖就是灾难现场。我建了个叫 blog 的普通用户，日常操作都用它，真要提权再 &lt;code&gt;sudo&lt;/code&gt;。多敲四个字母，换来一道保险。这个习惯跟开车系安全带一样：平时觉得麻烦，出事时救命。&lt;/p&gt;
&lt;h2 id="3-改-ssh-端口禁密码登录只留密钥"&gt;3. 改 SSH 端口，禁密码登录，只留密钥&lt;/h2&gt;
&lt;p&gt;这是整份清单里最重要的一步，也是我差点翻车的一步。默认的 22 端口每天被扫几万次，改掉端口能挡掉绝大部分自动化扫描。这不是什么高深防御，就是把你家从大街上挪到小巷里，小偷懒得找。&lt;/p&gt;
&lt;p&gt;先编辑 SSH 配置：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nano /etc/ssh/sshd_config
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;改这三行（没有就加上）：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Port 2222
PasswordAuthentication no
PermitRootLogin no
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;Port 2222&lt;/code&gt; 是把端口从 22 换掉。我这里写 2222 只是举例，别真用这个，太常见了，换个自己记得住的四位数。&lt;code&gt;PasswordAuthentication no&lt;/code&gt; 关掉密码登录，只认密钥，暴力破解直接失业。&lt;code&gt;PermitRootLogin no&lt;/code&gt; 禁止 root 直接登录，攻击者连用户名都猜不对。&lt;/p&gt;
&lt;p&gt;改完先检查语法，再重启：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo sshd -t
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl restart sshd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;重点来了&lt;/strong&gt;：重启之前，一定先新开一个终端窗口，用新端口加密钥测试能连上，再关掉当前这个。把自己锁在门外是新手村最经典的翻车，我当时手心都出汗了。好在 DMIT 本来就只支持密钥登录，逼着我提前配好了密钥，阴差阳错躲过一劫。不然那天晚上，我就得给服务商发工单求救了——想想都头大。&lt;/p&gt;</description></item></channel></rss>