# 安裝一台新的 Debian 指南

# Update Log

2023-12-28 更新為 Debian 12

# 環境說明

  • Debian 12
  • Akamai Connected Cloud (Linode)

# 更新 Debian

apt-get update; apt-get upgrade

# 設定 Static IP

Linode 預設試用 dhcp 取得 IP ,這邊我會改成使用 static IP 的設定方式

# The primary network interface
allow-hotplug eth0
# iface eth0 inet dhcp
iface eth0 inet static
  address [your-ip]/24
  gateway [your-gateway]

# To add a private IP address:
iface eth0 inet static
  address [your-private-ip]/17

# To add a IPv6 address:
iface eth0 inet6 static
  address [your-ipv6]/64
  gateway fe80::1

# 安裝一些好用的 util

apt-get install htop vim zsh ntpdate git tmpreaper ncdu

# 安裝 Oh My Zsh

Oh My Zsh 是強化 zsh 的輔助程式,有主題、有外掛,增加使用 shell 的效率。

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

可以透過 .zshrc 設定檔設定你的 zsh

這邊是院長用的設定,有分為 一般 user (opens new window)root user (opens new window)

curl https://gist.githubusercontent.com/onlinemad/e0444bc8dc50b6fea810/raw/662a2c3655c8cb524baff0148be48db092060143/root.zshrc > .zshrc

# 設定 tmpreaper

tmpreaper 是可以定時刪除 /tmp 下面檔案的輔助程式,院長有好幾次翻車都是因為 /tmp 滿了。

vi /etc/tmpreaper.conf

SHOWWARNING 這個設定註解起來,這樣就會開始運作了,預設是清除超過 7 天的檔案。

# SHOWWARNING=true

# 新增管理 user 帳號

建立一個用來管理 server 的 admin 帳號,因為一般不會使用 root 帳號來管理 server 。

adduser [username]

# 增加 user 到 sudo 群組

vigr

sudo 這個群組後面加上 username

sudo:x:27:[username]

# 編輯 sudo 設定檔

vi /etc/sudoers

%sudo 這邊的設定取消註解

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# 調整 locales

我會調整成 zh_TW.UTF8

dpkg-reconfigure locales

# 設定時區

選擇 Asia → Taiwan

tzselect
dpkg-reconfigure tzdata

# 對時

ntpdate -u pool.ntp.org

# 設定 cronjob 定時對時

每天對一次就可以了

crontab -e
0	0	*	*	*	ntpdate -u pool.ntp.org

# 調整 SSH 設定

vi /etc/ssh/sshd_config

# 修改 port 號

不要用預設的 22 號 port ,減少被亂試的機率

Port 123456

# 關閉 root 登入

設定改為 no

PermitRootLogin no

# 設定 MaxAuthTries

設定最多嘗試幾次 SSH 連線

MaxAuthTries 6

# 關閉使用密碼登入

PasswordAuthentication no

WARNING

要記得先用 ssh-copy-id 把 key 傳到 server 上

# 關閉 X11Forwarding

X11Forwarding no

# 重啟 ssh server

service sshd restart

# 設定 hostname

hostnamectl set-hostname your-name

# 編輯 /etc/hosts

把 your-name 加在 localhost 後面

127.0.0.1	localhost your-name

# 設定 resolv.conf

預設會有 Linode 自己的 DNS,預設的不要動,在後面加上額外的 DNS ( Cloudflare 、 Google 、 TWNIC ),然後再加上 options rotateoptions timeout:1 這兩個參數,讓 DNS 反解以 rotate 的方式順序使用,另外如果 DNS 死掉 1 秒沒有回應換下一個 DNS ,因為之前 Linode DNS 曾經爛掉,導致服務中斷。

nameserver 1.1.1.1
nameserver 8.8.8.8
nameserver 101.101.101.101
options rotate
options timeout:1

# 除不需要的 service

ss -tunlp 看有哪些 port 是在 LISTEN 狀態,不需要的就把這些 service 關閉或是移除,院長這邊會都關到只剩下 SSH 的 port 。

# UDP Port 323

UDP Port 323 是 Chrony 的對時服務,我是用 ntpdate 對時,所以也可以關掉

systemctl stop chronyd
systemctl disable chronyd

# 參考資料

Last Updated: 2024-1-3 3:47:14
贊助商連結
    贊助商連結
    (adsbygoogle = window.adsbygoogle || []).push({});