由 Linode 後台介面新增主機時,會要求設置 root 密碼,也可以增加 SSH Key、讓 root 能使用 SSH Key 無密碼登入,由於後面會關閉 root 的登入權限,因此選擇不設置金鑰。
ssh root@your_ip
以 root 身份登入乾淨的新創主機adduser new_user
建立例行登入使用的新用戶,設置密碼與必要資訊adduser new_user sudo
將新用戶加入 sudo 群組- 先不要關閉 root 登入的終端機視窗,另開一個新視窗
ssh-copy-id -i ~/.ssh/id_ed25519.pub new_user@your_ip
替新用戶增加公鑰ssh new_user@your_ip
確認新用戶能以金鑰模式登入無誤- 關閉 root 登入的終端機視窗
先更新一下套件: $ sudo apt update && sudo apt dist-upgrade -y
(有可能要求重開機)
- 修改登入限制
$ sudo vi /etc/ssh/sshd_config
- PermitRootLogin no (不允許 root 登入)
- PasswordAuthentication no (不允許使用密碼登入)
- Port xxxx (不使用預設 22 port)
$ sudo systemctl restart sshd
- 修改 sudo 時不需要驗證密碼
$ sudo visudo
修改為 %sudo ALL=(ALL:ALL) NOPASSWD: ALL
- 替開發機(macOS)設置便利登入
(local)$ vi ~/.ssh/config
Host myserver
Hostname your_ip
Port xxxx
User new_user
IdentityFile ~/.ssh/id_ed25519
UseKeychain yes
之後在 Mac 上只需要輸入 (local)$ ssh myserver
就可連線登入。
- 修改主機的必要配置
$ sudo hostnamectl set-hostname your_hostname
$ sudo vi /etc/hosts
$ sudo dpkg-reconfigure tzdata
修改主機時區為 Asia/Taipei$ sudo apt install unattended-upgrades
$ sudo dpkg-reconfigure -plow unattended-upgrades
- 設置基礎防火牆
$ sudo ufw default allow outgoing
$ sudo ufw default deny incoming
- `$ sudo ufw allow xxxx (自訂的 ssh port)
$ sudo ufw allow http
$ sudo ufw allow https
$ sudo ufw logging on
啟用紀錄(/var/log/ufw.log)$ sudo ufw enable
- 安裝 Fail2ban
$ sudo apt install -y fail2ban
$ sudo vi /etc/fail2ban/jail.local
編寫自訂監獄規則
[DEFAULT]
ignoreip = 127.0.0.1/8 <加入自己需要的白名單 ip>
[sshd]
enabled = true
port = xxxx
filter = sshd
logpath /var/log/auth.log
backend = systemd
maxretry = 3
findtime = 3600
bantime = 999999
$ sudo systemctl start fail2ban
$ sudo systemctl enable fail2ban
至此,完成了 Ubuntu 18.04 LTS 乾淨主機的必要預配置,可以開始玩弄其他東西了。