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}$)。