Skip to content

Instantly share code, notes, and snippets.

@wastemobile
Last active March 20, 2020 07:02
Show Gist options
  • Save wastemobile/5c98e731fdd0d32d0742c2eb5f28837f to your computer and use it in GitHub Desktop.
Save wastemobile/5c98e731fdd0d32d0742c2eb5f28837f to your computer and use it in GitHub Desktop.
Ubuntu 18.04 on Linode Initial

由 Linode 後台介面新增主機時,會要求設置 root 密碼,也可以增加 SSH Key、讓 root 能使用 SSH Key 無密碼登入,由於後面會關閉 root 的登入權限,因此選擇不設置金鑰。

新增用戶

  1. ssh root@your_ip 以 root 身份登入乾淨的新創主機
  2. adduser new_user 建立例行登入使用的新用戶,設置密碼與必要資訊
  3. adduser new_user sudo 將新用戶加入 sudo 群組
  4. 先不要關閉 root 登入的終端機視窗,另開一個新視窗
  5. ssh-copy-id -i ~/.ssh/id_ed25519.pub new_user@your_ip 替新用戶增加公鑰
  6. ssh new_user@your_ip 確認新用戶能以金鑰模式登入無誤
  7. 關閉 root 登入的終端機視窗

基礎設置(以下均以 new_user 身份操作)

先更新一下套件: $ sudo apt update && sudo apt dist-upgrade -y(有可能要求重開機)

  1. 修改登入限制

$ sudo vi /etc/ssh/sshd_config

  • PermitRootLogin no (不允許 root 登入)
  • PasswordAuthentication no (不允許使用密碼登入)
  • Port xxxx (不使用預設 22 port)

$ sudo systemctl restart sshd

  1. 修改 sudo 時不需要驗證密碼

$ sudo visudo

修改為 %sudo ALL=(ALL:ALL) NOPASSWD: ALL

  1. 替開發機(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 就可連線登入。

  1. 修改主機的必要配置
  • $ 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
  1. 設置基礎防火牆
  • $ 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
  1. 安裝 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 乾淨主機的必要預配置,可以開始玩弄其他東西了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment