前言
常常在 linode 或其他 platform 開 VM,如果開完的話其實有些動作要先做,別急著用 root 開始工作 (咳咳。
以下內容都是從參考資料的影片來的,影片中的講者有很多優質的 Python 和後端分享影片,推薦追蹤。
紀錄
更新機器
剛擁有一個 VM 時,先用 root
登入,然後做基本更新
apt-get update && apt-get upgrade
設定 hostname
設定 hostname
hostnamectl set-hostname <your-hostname>
用 vim
到 /etc/hosts
vim /etc/hosts
加入 VM 本身的 ip
# /etc/hosts
127.0.0.1 localhost
XXX.XXX.XXX.XXX <your-hostname> # <-- add this
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
創建使用者
創建一個自己的使用者,以後就別再用 root
登入了,除非情況特殊。
adduser <username>
把 user 加入 sudo
group 中,這樣也可以下一些原本只有 root
才能下的指令
adduser <username> sudo
ssh key 登入
用剛剛建立好的使用者登入,然後建 .ssh/
的路徑
ssh <username>@XXX.XXX.XXX.XXX
mkdir -p ~/.ssh
(Local) 接著把 local 的 ssh key 複製到剛建立的路徑下,如此一來之後登入就不用打密碼了
scp ~/.ssh/id_rsa.pub <username>@XXX.XXX.XXX.XXX:~/.ssh/authorized_keys
回到 server 上看,確認是否成功複製到 server
ls .ssh/
查看完成後,更改一下路徑跟檔案的權限。
sudo chmod 700 ~/.ssh/
sudo chmod 600 ~/.ssh/*
重登一次,這次就不用再打密碼了
ssh <username>@XXX.XXX.XXX.XXX
重啟 ssh server
sudo systemctl restart sshd
簡易防火牆設置
有個簡單的防火牆設置套件 ufw
(Uncomplicated Firewall) ,顧名思義就是比較不複雜的防火牆,設定阻擋這台 server 被亂戳。
sudo apt-get install ufw
sudo ufw default allow outgoing
sudo ufw default deny incoming
抵擋所有外來流量後,再開放一些 service 的使用,像是 ssh
,以及放後端會常用的 port,第一次安裝後要執行 sudo ufw enable
才算成功。
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 8000/tcp
sudo ufw allow 5000/tcp
sudo ufw enable
查看已經設定的規則
sudo ufw status
(Optional)關閉 root 登入和密碼登入
開啟 sshd_config
sudo vim /etc/ssh/sshd_config
把選項 PermitRootLogin
以及 PasswordAuthentication
改成 no
# Ciphers and keying
...
# Authentication:
#LoginGraceTime 2m
PermitRootLogin no # <-- change this to `no`
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
...
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no # <-- change this to `no`
PermitEmptyPasswords no
...