CentOS Hostname安全設置指南
設置合理的主機名是安全的第一步,需遵循以下原則:
localhost
、localhost.localdomain
)或包含服務器用途、IP地址、管理員姓名等敏感信息的名稱(如webserver-192.168.1.100-admin
)。dbserver-prod-01
、webapp-staging-02
),明確標識服務器用途和環境,便于管理和審計。-
),避免下劃線、空格等特殊字符(防止解析錯誤或注入攻擊)。CentOS 7及以上版本推薦使用hostnamectl
命令(systemd原生工具),兼容性高且不易出錯:
sudo hostnamectl set-hostname 新主機名 --static
--static
:設置靜態主機名(系統啟動時加載,優先級最高),區別于--transient
(臨時)和--pretty
(用戶友好顯示)。hostnamectl status
(查看靜態主機名)、hostname
(查看當前生效主機名)。對于CentOS 6及以下版本,需編輯/etc/sysconfig/network
文件:
sudo vim /etc/sysconfig/network
修改HOSTNAME
變量為新的主機名(如HOSTNAME=dbserver-prod-01
),保存后重啟系統生效。
主機名配置文件需嚴格限制訪問權限,避免普通用戶篡改:
/etc/hostname
(CentOS 7+靜態主機名文件):sudo chmod 444 /etc/hostname # 僅root可讀
sudo chown root:root /etc/hostname
/etc/hosts
(本地主機名解析文件):sudo chmod 644 /etc/hosts # root可讀寫,其他用戶只讀
sudo chown root:root /etc/hosts
/etc/sysconfig/network
(CentOS 6及以下主機名配置文件):644
權限,確保root專屬修改權。通過sudo
機制控制誰能執行主機名修改命令,避免濫用:
visudo
編輯sudoers文件(安全編輯方式,防止語法錯誤):sudo visudo
adminuser
為例,允許其無需密碼執行hostnamectl set-hostname
):adminuser ALL=(root) NOPASSWD: /usr/bin/hostnamectl set-hostname *
sudo hostnamectl set-hostname 新主機名
時,無需輸入密碼即可完成修改(僅限指定命令)。修改主機名后,需同步更新/etc/hosts
文件,確保本地解析正確(防止服務因主機名解析失敗而中斷):
sudo cp /etc/hosts /etc/hosts.bak
/etc/hosts
,將舊主機名替換為新主機名(重點修改127.0.0.1
和::1
行):sudo vim /etc/hosts
示例內容:127.0.0.1 localhost localhost.localdomain
::1 localhost localhost.localdomain
127.0.1.1 新主機名
ping 新主機名
應能正常解析到本地IP。auditd
(Linux審計工具)監控/etc/hostname
和/etc/hosts
文件的修改行為,及時發現異常:sudo auditctl -w /etc/hostname -p wa -k hostname_change
sudo auditctl -w /etc/hosts -p wa -k hosts_modify
日志會記錄到/var/log/audit/audit.log
,可通過ausearch -k hostname_change
查詢。firewalld
或iptables
)限制相關端口的訪問范圍(如僅允許可信IP訪問DNS服務的53端口)。/etc/hostname
內容是否符合正則表達式^[a-zA-Z0-9-]{1,15}$
)。