最近,我的伺服器被撐爆了,因為伺服器磁碟空間不足(其實這個問題已經存在很久了,一直沒有下定決心整改)。這次一不留神備份服務時撐爆了,我就順便重裝系統,認真調教一些配置,將一些過程進行記錄,以備查用。
一、更新元件,包管理#
要在 Ubuntu 系統上更新軟體包,可以使用以下命令:
- 不推薦,安裝時間太長了
apt update && apt upgrade -y
- 推薦用下面兩條
sudo apt update #這個命令會更新軟體包列表,讓系統知道有哪些軟體包可以更新。
sudo apt upgrade --only-upgrade #這個命令會安裝所有可用的軟體包更新。
二、常用工具#
1、VIM 編輯器#
- 檢查有沒有安裝 VIM(主要是我習慣用 vim 編輯器了,Ubuntu 是預設自帶 nano 的)
vim --version
- 沒有的話就用命令安裝
apt install vim
- 配置 VIM 為預設的系統編輯器。
- 很簡單,執行這條命令,選擇 Vim,以後凡是自動調用編輯器的地方,都会用 Vim 啦。
sudo update-alternatives --config editor
2、安裝 command-not-found#
很多伺服器提供商可能會提供精簡版本的 Ubuntu,於是一些實用的命令行工具並不會預裝。比如command-not-found
,它可以當你在打命令時,提示對應的但沒有安裝的 package。
sudo apt install command-not-found
安裝完後,就可以在使用命令行的過程中更加方便了。
三、添加普通用戶#
adduser {your-username} {your-password}
visudo
在 User Privilege Specification
下加入一行 ubuntu ALL=(ALL) NOPASSWD: ALL
即可。
- 檢驗是否添加成功
su - newuser #切換到新用戶
ls /root #列出/root目錄下的文件(沒有root權限是看不了的)
sudo ls /root #然後用給普通用戶授予root權限(這樣就有權限可以看到了)
exit #退出
四、防火牆配置#
要在 Ubuntu 上使用 ufw
(Uncomplicated Firewall)開啟端口 22、80 和 443,你可以按照以下步驟進行配置:
-
檢查
ufw
是否安裝:- 如果尚未安裝
ufw
,你可以使用以下命令安裝:sudo apt install ufw
- 如果尚未安裝
-
開啟端口:
- 開啟端口 22:
sudo ufw allow 22
- 開啟端口 80:
sudo ufw allow 80
- 開啟端口 443:
sudo ufw allow 443
- 開啟端口 22:
-
啟用防火牆:
- 啟用
ufw
防火牆:sudo ufw enable
- 啟用
-
檢查配置:
- 可以運行
sudo ufw status
來查看防火牆的狀態和已開啟的端口。
- 可以運行
參考文章
五、配置 SSH 登錄及 SSH Server 安全設定#
- 先在 windows 端生成 ssh 公私鑰對
ssh-keygen -t rsa -f ~/.ssh/id_rsa_xxxx
- 在用戶目錄下創建
authorized_keys
文件,並將公鑰(pub 結尾)的內容粘入authorized_keys
文件中
mkdir -p ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
- 禁用 root 身份登錄
- 找到
PermitRootLogin Yes
這一項,然後把它後面的設定值改為no
即可。
- 找到
vim /etc/ssh/sshd_config
如下:
PermitRootLogin no
- 把 PasswordAuthentication 設置成 no,禁止密碼登錄,更安全:
PasswordAuthentication no
- SSH 端口號改為其他數字,注意了,改成其他端口後,記得防火牆設定也要更新。
Port {SSH端口號,最好在10000以上}
最後重啟 SSH Server 生效:
sudo systemctl restart sshd.service
六、自定義 shell 界面安裝#
- 安裝 oh-my-zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
七、Docker 配置#
1、安裝 Docker#
-
官方地址:https://docs.docker.com/install/linux/docker-ce/ubuntu/
-
首先安裝基本環境:
sudo apt install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
- 再安裝 key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- 再增加 Docker 官方源:
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
- 最後就可以安裝 Docker 了,我一般也同時會用 Docker Compose,一起安裝上去吧!
sudo apt update
sudo apt install docker-ce docker-compose
- 安裝好 Docker 後,記得將當前用戶加到 docker 用戶組裡去(如果你不想每次都用 sudo 用 Docker 的話)
sudo gpasswd docker -a username
2、Docker 日誌管理#
全局配置日誌大小限制
- 創建或修改文件
/etc/docker/daemon.json
,並增加以下配置(3 份日誌、每份 10M)。
{
"log-driver": "json-file",
"log-opts": {
"max-file": "3",
"max-size": "10m"
}
}
- 隨後重啟 Docker 服務
sudo systemctl daemon-reload
sudo systemctl restart docker
不過已存在的容器不會生效,需要重建才可以!
單個容器日誌大小限制
- 寫在 docker-compose 中
logging:
driver: json-file
options:
max-size: "100m"
max-file: "3"
八、swap 配置#
swapoff -a #刪除原分區
dd if=/dev/zero of=/root/swapfile bs=1M count=1024 #配置新分區大小
mkswap /root/swapfile
swapon /root/swapfile
- 最後設置開機啟動:可以編輯
/etc/fstab
文件,把最後一行改成:/root/swapfile swap swap defaults 0 0
參考文章:
九、logrotate 日誌大小限制#
sudo apt install logrotate
sudo apt install cron
/var/log/syslog
/var/log/mail.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/cron.log
{
weekly
rotate 3
maxsize 100M
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
參考文章:
- https://www.cnblogs.com/uglyliu/p/13206868.html
- https://wsgzao.github.io/post/logrotate/
- https://www.noisyfox.io/logrotate.html
- https://www.cnblogs.com/liujunjun/p/17924699.html
- https://nj.transwarp.cn:8180/?p=10556
十、Fail2ban 封禁 IP#
https://aws.amazon.com/cn/blogs/china/open-source-tool-to-protect-ec2-instances-fail2ban/
https://github.com/fail2ban/fail2ban/issues/3420
十一、面板安裝 ——1panel#
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
sudo apt autoremove docker-compose
參考文章:
十二、常規安全更新#
- 安裝 unattended-upgrades 來自動更新 security upgrade
通過 unattended-upgrades,可以使 Ubuntu 系統自動進行常規的安全相關更新,使系統一直保持 security。
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
參考資料:
- https://leonis.cc/sui-sui-nian/2023-11-11-necessary-config-of-new-server.html#ji-ben-she-zhi
- https://spenserj.com/posts/2013-07-15-securing-a-linux-server/
- https://www.ruanyifeng.com/blog/2014/03/server_setup.html
- https://blog.laoda.de/archives/vps-basic-configuration
- https://www.hackerneo.com/blog/dev-tools/better-use-terminal-with-zsh
- https://xtls.github.io/document/level-0/ch04-security.html
原文地址: