精品軟體與實用教程
如何設定Ubuntu伺服器,新手安全入門設定教學課程
對於Ubuntu伺服器的新手用戶,入門安全配置可以幫助保護系統免受常見的網路威脅。安全性配置包括修改預設的SSH連接埠、限制登入使用者、設定防火牆規則、定期更新系統修補程式、啟用Fail2Ban等防護工具。這些基礎步驟不僅能減少伺服器暴力破解和未授權存取的風險,還可以為伺服器建立一個堅實的安全基礎。
網路安全非常重要,特別是新手安裝好作業系統後,不做任何安全設置,等於是給駭客敞開了大門。
Ubuntu僅依賴作業系統的預設設定並不足以確保伺服器的安全。本文將介紹如何在Ubuntu 22.04上進行安全性配置,以提高伺服器的安全性。
切換到root 用戶
在SSH 終端機中,輸入以下指令切換到root 使用者:
sudo -i
輸入使用者密碼後,進入到root帳戶,輸入下面指令設定root密碼。
sudo passwd root
更新系統
系統安裝好後的第一步就是更新系統,讓系統中的軟體都是最新的。
sudo apt update && sudo apt upgrade -y
啟用自動更新以確保系統保持最新:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
安裝最新的安全性補丁
sudo apt autoremove -y
定期更新和修補程式管理,定期更新Ubuntu系統和所有安裝的軟體包,確保及時取得安全性修補程式。
這幾個資訊通常出現在系統更新或安全檢查的報告中,表示系統的狀態良好,具體含義如下:
- No containers need to be restarted:目前沒有需要重新啟動的容器,說明所有容器正在執行最新的程式碼或設定。
- No user sessions are running outdated binaries:沒有使用者會話運行過期的二進位文件,確保了使用者正在使用最新的程序,避免安全漏洞。
- No VM guests are running outdated hypervisor (qemu) binaries on this host:沒有虛擬機器客戶機使用過期的QEMU(虛擬機器管理程式)二進位文件,確保了虛擬化環境的安全性。
總體來說,這表明系統中的容器、使用者會話和虛擬機器都已更新,無需重新啟動或進一步操作,是一種「狀態正常」的提示。
安裝中文語言包
可以透過圖形介面或命令列安裝中文語言包。
透過命令列:
更新套件清單並安裝語言套件:
sudo apt update
sudo apt install language-pack-zh-hans -y
安裝完成後,設定係統的語言環境:
sudo update-locale LANG=zh_CN.UTF-8
重新啟動或登出系統以套用新的語言設定。
調整時區
可以透過命令列或圖形介面變更時區。
設定時區,例如,將時區設定為中國標準時間(Asia/Shanghai):
sudo timedatectl set-timezone Asia/Shanghai
設定Swap檔(可選)
如果系統記憶體較小,建立Swap檔案可以提升系統效能:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
安裝基本工具包
安裝一些常用的工具包和開發工具。
sudo apt install -y build-essential curl wget git vim unzip htop nload
安裝網路工具,一些網路調試和管理工具。
sudo apt install -y net-tools dnsutils traceroute telnet nload
安裝Python 及其工具,Python 是常用的腳本語言,許多應用都依賴它。
sudo apt install -y python3 python3-pip python3-venv
安裝Node.js 和npm,Node.js 是伺服器端的JavaScript 運作環境,npm 是其套件管理器。
sudo apt install -y nodejs npm
安裝Snap 並安裝更多應用,Snap 是Ubuntu 的軟體包管理器,可以用來安裝許多應用:
sudo apt install -y snapd
安裝開發相關工具,Java安裝OpenJDK(如OpenJDK 11 或17):
sudo apt install -y openjdk-17-jdk
C/C++ 開發,除build-essential 外,安裝一些常見的函式庫和工具:
sudo apt install -y cmake gdb
安裝影像處理工具,安裝一些常見的影像處理和轉換工具。
sudo apt install -y imagemagick ffmpeg
安裝文字處理工具,安裝一些常用的文字處理工具。
sudo apt install -y jq silversearcher-ag tree
可以使用以下命令清理不再需要的安裝套件和依賴:
sudo apt autoremove -y
sudo apt autoclean
根據不同需求,選擇安裝。完成這些後,系統將具備常見的開發和維運環境所需的工具。
新增多IP
查看ip設定檔
ls /etc/netplan/
編輯IP設定檔
vi /etc/netplan/50-cloud-init.yaml
應用新設定檔
sudo netplan apply
查看連接埠綁定IP
ip a show eno1
查看硬碟及掛載新硬碟到/home
查看目前磁碟情況
sudo fdisk -l
使用parted 對新硬碟進行分割:
sudo parted /dev/sdb
sdb是伺服器上的第二塊硬碟,一般第一塊硬碟sda作為系統盤,sdb作為資料盤。
SSH安全配置
為了增強Linux伺服器SSH存取的安全性,可以透過設定/etc/ssh/sshd_config檔來限制登入嘗試的次數、間隔時間,以及控制允許或拒絕的使用者。下面是具體的操作步驟:
設定登入嘗試次數和失敗間隔時間
編輯/etc/ssh/sshd_config檔:
sudo vi /etc/ssh/sshd_config
配置MaxAuthTries
MaxAuthTries:此參數用於設定最大認證嘗試次數,超出後將斷開連線。
預設值通常為6,可以將其設為3或更少,以增加安全性。
MaxAuthTries 3
使用DenyUsers和AllowUsers指令限制使用者訪問
設定DenyUsers 指令
DenyUsers:用於指定禁止透過SSH登入的使用者清單。
格式:DenyUsers 使用者名稱1 使用者名稱2
例如,禁止使用者testuser和guest透過SSH登入:
DenyUsers testuser guest
配置AllowUsers 指令
AllowUsers:用於指定允許透過SSH登入的使用者清單(只允許這些使用者登入)。
格式:AllowUsers 使用者名稱1 使用者名稱2
例如,允許僅adminuser透過SSH登入:
AllowUsers adminuser
注意:AllowUsers與DenyUsers不可混用。若使用AllowUsers,則只有在清單中的使用者才允許登錄,其他使用者即便未在DenyUsers中也無法登入。
完成後儲存並關閉文件,然後重新啟動SSH服務:
sudo systemctl restart sshd
使用Fail2Ban等工具
安裝Fail2Ban
透過監控登入日誌自動封鎖多次嘗試失敗的IP位址,進一步提高安全性。使用Fail2Ban自動封鎖IP。
Fail2Ban是一個非常有效的工具,可以監控SSH的失敗登入嘗試並自動封鎖多次失敗的IP位址。安裝並配置Fail2Ban可提供類似的延遲效果:
sudo apt install fail2ban
配置Fail2Ban
編輯/etc/fail2ban/jail.local文件
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
注意:jail.local如果不存在,可以複製jail.conf內容來建立jail.local:
sudo vi /etc/fail2ban/jail.local
在SSHD選項中加入以下內容來設定SSH監控:
[sshd] enabled = true port = ssh maxretry = 3 bantime = 6000 findtime = 60
maxretry:設定在findtime (秒) 內允許的最大失敗次數。
bantime:設定封鎖時間(秒),可依需求增加。
啟動Fail2Ban
儲存設定檔後,重新啟動Fail2Ban服務:
sudo systemctl restart fail2ban
檢查配置是否生效
sudo fail2ban-client status
如果顯示如下內容,表示配置成功
Status |- Number of jail: 1 `- Jail list: sshd
配置完/etc/ssh/sshd_config後,透過設定MaxAuthTries、DenyUsers、AllowUsers參數和安裝Fail2Ban,可以有效限制SSH登入的嘗試次數和允許的用戶,從而減少暴力破解的風險。
Fail2Ban 配置完成後,可以有效保護您的伺服器免受暴力破解攻擊。根據具體需求,您還可以啟用更多Jail 或自訂規則。
不使用root用戶進行ssh登入
為了提高安全性,建議避免直接使用root使用者登入伺服器,而是透過建立一個具有sudo權限的普通使用者來執行管理員任務。以下是設定和配置過程:
建立新用戶
使用以下命令建立一個新用戶,並為其賦予sudo權限:
sudo adduser 新用戶名
sudo usermod -aG sudo 新用戶名
運行命令後,確保新用戶名已被加入sudo組:
groups 新用戶名
如果命令傳回的群組清單中包含sudo,表示新增成功。
重新登入:使用者的群組資訊在會話開始時加載,因此需要登出並重新登入才能套用變更。
在某些系統中,sudo組可能並未啟用,或/etc/sudoers檔案配置不正確。
使用以下命令檢查sudoers檔案配置:
sudo visudo
確保文件中包含以下行:
%sudo ALL=(ALL:ALL) ALL
在文件末尾新增以下一行:
新用戶名ALL=(ALL) ALL
這樣可以確保新用戶名具有sudo權限。
禁止root用戶的SSH登入
透過停用root用戶的SSH訪問,可以進一步增強伺服器的安全性。編輯SSH設定檔/etc/ssh/sshd_config:
sudo vi /etc/ssh/sshd_config
找到以下行:
#PermitRootLogin prohibit-password
修改為:
PermitRootLogin no
儲存並關閉文件,然後重新啟動SSH服務以使變更生效:
sudo systemctl restart sshd
修改root密碼
在root登入後使用passwd指令將root的密碼修改的複雜一些。
使用密鑰進行ssh登入
使用SSH金鑰對進行登入是一種安全且方便的方式,能有效防止暴力破解攻擊。以下是如何產生金鑰對、上傳公鑰以及設定SSH伺服器以停用密碼登入的詳細步驟:
產生SSH金鑰對
在你的本機電腦上,打開終端機並執行以下命令:
ssh-keygen -t rsa -b 4096
這會產生一對RSA金鑰(公鑰和私鑰)。
系統會提示你輸入檔案名稱和密碼:
檔案名稱:你可以按回車使用預設的檔案名稱(通常是~/.ssh/id_rsa)。
密碼:可以選擇設定密碼來增強安全性,或留空。
產生後,密鑰對將保存在以下路徑:
私鑰:~/.ssh/id_rsa
公鑰:~/.ssh/id_rsa.pub
手動登入伺服器,開啟(或建立)~/.ssh/authorized_keys文件,將公鑰~/.ssh/id_rsa.pub貼進去:
vi ~/.ssh/authorized_keys
權限設定
確保~/.ssh 目錄和authorized_keys 檔案的權限設定正確:
.ssh 目錄應設定為700:
chmod 700 /root/.ssh
authorized_keys 檔案應設定為600:
chmod 600 /root/.ssh/authorized_keys
設定SSH伺服器
開啟SSH設定檔:
sudo vi /etc/ssh/sshd_config
確保以下配置項設定為:
PubkeyAuthentication yes
PasswordAuthentication no
使設定變更生效,重啟SSH服務:
sudo systemctl restart sshd
查看記憶體使用情況
記憶體使用情況也是伺服器安全的一個重要指標。我們可以使用free、top或htop等指令來查看目前伺服器的記憶體使用情況,確保沒有惡意進程佔用過多的記憶體資源。
安裝防火牆
病毒防火牆
在Ubuntu上,可以使用一些流行的病毒防護軟體來保護系統。 ClamAV 是一個開源的病毒掃描工具,廣泛用於Linux系統。
ClamAV 是一個開源的防毒軟體,適用於偵測和清除惡意軟體。以下是在Ubuntu 系統上安裝和設定ClamAV 的詳細步驟。
安裝ClamAV:
使用APT 套件管理器安裝ClamAV 和clamav-daemon(提供即時掃描支援)
sudo apt install clamav clamav-daemon -y
驗證安裝是否成功
clamscan --version
更新病毒資料庫:
更新病毒資料庫前,先停止ClamAV
sudo systemctl stop clamav-freshclam
sudo freshclam
更新完畢後,啟動服務
sudo systemctl start clamav-daemon
sudo systemctl start clamav-freshclam
進行全系統掃描:
sudo clamscan -r /
自動掃描(可設定Cron作業定期掃描),可以編輯Cron任務以定期執行ClamAV掃描。
配置ClamAV 守護程式clamav-daemon 提供即時掃描支援。確保服務已啟動:
sudo systemctl enable clamav-daemon
sudo systemctl start clamav-daemon
自動更新病毒庫
sudo systemctl enable clamav-freshclam
sudo systemctl start clamav-freshclam
修改設定檔
vi /etc/clamav/freshclam.conf
修改以下行,每小時更新
Checks 24
規劃定期掃描
您可以使用cron 來規劃定期掃描。編輯crontab:
sudo crontab -e
新增以下行,每天凌晨2 點掃描/home 目錄:
0 2 * * * clamscan -r /home
系統防火牆
UFW(Uncomplicated Firewall)是Ubuntu上常用的防火牆工具,它簡單易用,適合新手和經驗豐富的使用者。
安裝UFW:
sudo apt install ufw
啟用UFW:
sudo ufw enable
允許SSH存取(確保在啟用防火牆之前可以遠端存取):
sudo ufw allow ssh
允許其他連接埠存取(如HTTP和HTTPS):
sudo ufw allow 80/tcp # 允許HTTP
sudo ufw allow 443/tcp # 允許HTTPS
查看UFW狀態:
sudo ufw status verbose
禁用UFW:
sudo ufw disable
總結
在現代網路環境中,確保Ubuntu伺服器的安全至關重要。首先,定期更新系統和軟體包以獲取最新的安全性修補程式是防止潛在漏洞的基本措施。同時,建議使用SSH金鑰登入並停用密碼認證,以提高遠端存取的安全性。配置UFW防火牆可以有效限制不必要服務的存取。此外,定期安裝和更新病毒防護軟體(如ClamAV)及監控系統日誌有助於及時發現和應對安全威脅。透過這些綜合措施,Ubuntu使用者可以有效保護系統免受攻擊,確保資料安全與穩定。
安裝CSF防火牆(ConfigServer Security & Firewall)
在Ubuntu 上安裝CSF 並啟用基本設定的步驟如下:
# 安裝依賴sudo apt update sudo apt install -y perl libwww-perl liblwp-protocol-https-perl # 下載CSF wget https://download.configserver.com/csf.TP5z tar -xzf csf.tgz cdcsf 151 sudo perl /usr/local/csf/bin/csftest.pl
官方升級了安裝腳本,如果在安裝csf後遇到500錯誤,只需要使用官方的升級腳本進行升級安裝。
sh <(curl https://raw.githubusercontent.com/usmannasir/cyberpanel/stable/preUpgrade.sh || wget -O - https://raw.githubusercontent.com/usmannasir/cyberpanel/stable/preUpgrade.sh)