前言
最近工作關係開始又要回味 CentOS 了,在本次實作環境中採用的是 CentOS-6.8-x86_64-minimal.iso 映像檔,也就是 CentOS 6.8 最小化安裝版本 (Minimal Install)。為何不用最新的 CentOS 6.9 版本? 因為,最新的 LIS 4.1.3-2 僅支援至 CentOS 6.8,所以便以 CentOS 6.8 版本開始回味起了,那麼開始來玩玩吧。💪實作環境
關閉不必要的系統服務並了解服務監聽 Port
了解系統啟動的服務以及該服務開啟的相應 Port ,也是主機安全防護的基本功。我們可以使用內建的 「netstat」指令,配合 「–tunpl」 參數,顯示系統目前啟動服務及協定等相關資訊。使用到的 5 個參數意義為 t(TCP)、u(UDP)、n(IP 位址及 Port 號)、p(PID 名稱)、l(Listen)服務,這些指令執行後顯示出來的相關欄位解釋如下:- Proto:服務運作的協定,通常為 TCP 或 UDP Protocol。
- Recv-Q:收到的封包 Bytes 數量。
- Send-Q:傳送的封包 Bytes 數量。
- Local Address:本地端的 IP 位址及 Port 號。
- Foreign Address: 遠端主機的 IP 位址及 Port 號。
- State:連接狀態,此例中僅顯示 Listen 狀態,實際上還有已建立連線(ESTABLISHED)、連線結束等待 Socket 關閉(TIME_WAIT)、主動連線 SYN 封包(SYN_SENT)、連線要求 SYN 封包(SYN_RECV)等狀態。
- PID / Program name:該程序(Process) 的名稱。
本文環境採用 CentOS 6 Minimal Install 安裝類型,安裝完畢後可以透過「netstat -tunpl」指令來解目前主機所啟動的服務所帶起的監聽 Port 號,由指令輸出的訊息可以發現到系統在預設的情況下啟動了一些用不到的服務及監聽 Port 號,例如,
當我們採用的 Minimal Desktop 群組套件安裝好 CentOS 6 作業系統後,我們可以透過「netstat -tunpl」指令來解目前主機所啟動的服務所帶起的監聽 Port 號,可以看到 CentOS 6 主機相關的服務只要有支援 IPv6 協定的服務也會啟動起來,例如 ::1:25 即為內建的郵件伺服器 Postfix 的 IPv6 服務而 :::22168 即為我們設定的 SSH IPv6 服務。
# netstat -tunpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22168 0.0.0.0:* LISTEN 3019/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1116/master
tcp 0 0 :::22168 :::* LISTEN 3019/sshd
tcp 0 0 ::1:25 :::* LISTEN 1116/master
接著查詢 CentOS 6 主機在預設的 RunLevel 3的啟動等級情況下 (因為使用 Minimal Install 安裝類型),會於 CentOS 6 主機於開機時自動帶起的服務,後續操作會把不需要的服務關閉一方面減少安全性問題(有的服務會開 Port),一方面也可以增加系統效能(因為每個服務的啟動都會佔系統記憶體)。
# chkconfig --list | grep 3:on
auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
blk-availability 0:off 1:on 2:on 3:on 4:on 5:on 6:off
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
hv_fcopy_daemon 0:off 1:off 2:off 3:on 4:off 5:on 6:off
hv_kvp_daemon 0:off 1:off 2:off 3:on 4:off 5:on 6:off
hv_vss_daemon 0:off 1:off 2:off 3:on 4:off 5:on 6:off
ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
iscsi 0:off 1:off 2:off 3:on 4:on 5:on 6:off
iscsid 0:off 1:off 2:off 3:on 4:on 5:on 6:off
lvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off
mdmonitor 0:off 1:off 2:on 3:on 4:on 5:on 6:off
netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off
下列為個人安裝 CentOS 6 主機 Minimal Install 安裝類型後,將相關不必要的系統服務關閉。同時,也會將 CentOS 6 主機支援 IPv6 網路功能關閉:
關閉 IPv6 網路功能: 透過建立 disable-ipv6.conf 設定檔使 CentOS 6 主機關閉 IPv6 網路功能。
- ip6tables:關閉 IPTables IPv6 防火牆功能。
- iscsi / iscsid:關閉 iscsi / iscsid 功能。
- lvm2-monitor:使 CentOS 6 主機支援 LVM(Logical Volume Manager) 邏輯磁區,因為本書實作中沒有使用 LVM 來管理磁碟。
- blk-availability: Controls availability of LVM2 block devices。
- mdmonitor: not needed unless running software RAID。
- netfs: Network File System Mounter 網路掛載系統 (如 NFS、Samba、NCP)。
了解上述說明後接著就是執行相關的動作了,下列操作為關閉 CentOS 6 主機 IPv6網路功能,以及停止及關閉不必要的服務,第一行指令是將「options ipv6 disable=1」參數設定值寫入至名為 「disable-ipv6.conf」 的檔案內(CentOS 5.x 則為直接寫入 /etc/modprobe.conf 設定檔內即可),其餘指令則為立刻停止該服務並且關閉該服務於 CentOS 6 主機在啟動時自動啟動該服務:
echo 'options ipv6 disable=1'> /etc/modprobe.d/disable-ipv6.conf
service ip6tables stop ; chkconfig ip6tables off
service iscsi stop ; chkconfig iscsi off
service iscsid stop ; chkconfig iscsid off
service lvm2-monitor force-stop ; chkconfig lvm2-monitor off
service blk-availability stop ; chkconfig blk-availability off
service mdmonitor stop ; chkconfig mdmonitor off
service netfs stop ; chkconfig netfs off