使用 Debian 來架設工作站
前言
最近剛好在重新安裝工作站,就順手記錄起來囉!
主要內容
下載映像檔
1wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-11.0.0-amd64-netinst.iso
製作安裝碟
1sudo dd if=debian-11.0.0-amd64-netinst.iso of=/dev/DISK bs=10M
安裝
安裝步驟可以參考這邊。
設定 IP
使用 systemd-networkd 設定 IP
透過重新命名 /etc/network/interfaces
的方式,來停用原本的網路介面配置。並建立 systemd-networkd
的設定檔。
完成後,我們就可以啟用 systemd-networkd 了。
1# 取消 IPv6
2echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
3
4mv /etc/network/interfaces{,.save}
5
6cat << EOF >> /etc/systemd/network/lan.network
7[Match]
8Name=eth0
9
10[Network]
11Address=192.168.0.2/24
12Gateway=192.168.0.254
13DNS=8.8.8.8
14EOF
15
16systemctl enable systemd-networkd
17systemctl start systemd-networkd
IP (已改用 systemd-networkd)
修改 /etc/network/interfaces 來設定主機的 IP
1allow-hotplug eth0
2iface eth0 inet static
3 address 192.168.0.2/24
4 gateway 192.168.0.254
5 # dns-* options are implemented by the resolvconf package, if installed
6 dns-nameservers 8.8.8.8
7 dns-search happy.internal
使用下列指令來重新起動網路
1/etc/init.d/networking restart
ℹ️
動態從 DHCP 取得 IP
1auto eth0
2allow-hotplug eth0
3iface eth0 inet dhcp
我們可以使用下列指令來進行臨時的設定
1ip addr add 192.168.0.2/24 dev eth0
2ip addr del 192.168.0.2/24 dev eth0
3
4dhcp eth0
5dhcp -r eth0
6
7ip link set eth0 up
8ip link set eth0 down
安裝系統更新與常用工具
1apt upgrade
2apt update
3apt install -y aptitude
4aptitude install -y silversearcher-ag vim htop
設定時間同步
1cat << EOF > /etc/systemd/timesyncd.conf
2[Time]
3NTP=time.google.com clock.stdtime.gov.tw
4EOF
5
6systemctl restart systemd-timesyncd.service
7timedatectl status
8date
設定防火牆規則
Firewalld
1aptitude install -y firewalld
2firewall-cmd --add-port=22022/tcp --permanent
3firewall-cmd --reload
4firewall-cmd --list-all
如果想直接操作 nftables 的話,可以使用下列指令
1systemctl enable nftables
2systemctl start nftables
3nft add rule inet filter input tcp dport 22 accept
4nft list ruleset
5#nft list table inet filter
ufw (已改用 firewalld)
1ufw enable
2ufw default deny
3ufw allow from XXX.XXX.XXX.XXX to XXX.XXX.XXX.XXX port 2234 proto tcp
修改 SSH Server 設定並上傳遠端存取公鑰
1sed -i 's/^Port.*$/Port 2234/g' /etc/ssh/sshd_config
2systemctl restart ssh
3ssh-copy -i ~/.ssh/id_rsa XXX.XXX.XXX.XXX -p 2234 -l user
ℹ️
產生新的金錀
如果想要生成新的金鑰,可以輸入下列指令
1ssh-keygen -t rsa -b 4096 -f ~/.ssh/new_key_rsa -C email@example.com
限定只能使用金鑰進行認證
1sed -i 's/^UsePAM.*$/UsePAM no/g' /etc/ssh/sshd_config
2sed -i 's/^PermitRootLogin.*$/PermitRootLogin no/g' /etc/ssh/sshd_config
3echo 'PasswordAuthentication no' >> /etc/ssh/sshd_config
4systemctl restart ssh
如果是使用 sudo 的話,可以使用 tee 將輸出導向檔案
1echo 'PasswordAuthentication no' | sudo tee -a /etc/ssh/sshd_config
查看有誰登入失敗以及有誰登入成功
1cat /var/log/auth.log | ag 'sshd.*Invalid'
2cat /var/log/auth.log | ag 'sshd.*opened'
擋掉登入失敗次數過多的連線
1aptitude install -y fail2ban
2sed -e 's/^enabled = false$/enabled = true/g' /etc/fail2ban/jail.conf > /etc/fail2ban/jail.local
3systemctl enable fail2ban
我們可以使用 fail2ban-client 來查看目前的運行狀況
1fail2ban-client status
自動安裝更新
1aptitude install -y unattended-upgrades
2dpkg-reconfigure -plow unattended-upgrades
3systemctl status unattended-upgrades.service
logrotate
1/etc/logrotate.conf
小結
本文記錄了系統在剛安裝完成時,要先進行的配置。如: IP、時間、防火牆等。 未來若有再新增設定,會再補充說明。