Linux 初始化配置

*** 环境:Debian13(trixie) ***
*** 默认准备: ssh 命令登录,已进行软件依赖更新。 ***

Linux 安全防护

一台服务器装机后应先进行基本的安全配置。

基本分析

登录服务器的四要素: 【IP 地址】+【端口】+【用户名】+【密码】

其中公网 IP 地址全网公开,对于随机访问没有操作空间。如果怕被别有用心的人针对,也只能尽可能不要外泄你和网站的联系,只要你公开域名就一定会得到IP。

基于上述分析,我们能做的只有对【端口】、【用户名】及【密码】这三要素进行加强,来降低被攻破的风险:

  • 【端口】:将 SSH 远程登录端口修改为【非 22 端口】
  • 【用户名】:建立【非 root】的新用户、并禁用 root 用户 SSH 远程登录
  • 【密码】:SSH 启用 RSA 密钥验证登录、同时禁用密码验证登录

实际操作

❗记得按顺序来,别把自己锁在门外了。

修改登录端口

1
2
3
nano /etc/ssh/sshd_config
systemctl restart sshd
sudo ss -tlnp | grep sshd # verify

重启sshd时已经打开的ssh不会被关闭🥳, 所以不妨再开一个链接试试看。

❗部分系统需要添加防火墙规则(如 debian13, ubuntu) 。

1
sudo ufw allow <port>/tcp

禁用 root

1
adduser <user_name>

把用户加入 sudo 名单。

1
visudo

User Privilege Specification 下加入用户。

  • 需要密码: ALL=(ALL:ALL) ALL
  • 不输入密码: ALL=(ALL) NOPASSWD: ALL

修改文件 [/etc/ssh/sshd_config] 中的项 PermitRootLoginno 。(建议切换为上一步创建的用户完成操作)

sudo su 切换为 root 用户。

更改为密钥登录并禁用密码登录

笔者在高中摸鱼时就接触到了非对称加密算法,故在此不赘述。

  1. 生成密钥对

    1
    2
    cd ~/.ssh
    ssh-keygen -t Ed25519

    笔者使用自己的一般密钥对文件(general_ed25519 general_ed25519.pub).

  2. 使用密钥

    详情参见[[_posts/日拱一卒/开发随笔/SSH|SSH]]

  3. 禁用密码登录

    再次修改 ssh 配置 /etc/ssh/sshd_config

    • PubkeyAuthentication 改为 yes
    • PasswordAuthentication 改为 no

参考文献

https://xtls.github.io/document/level-0/ch04-security.html