要想禁止修改主机名,我们首先要知道怎么能修改主机名。
1.hostname xxx 这个调用了系统调用函数sethostname(); 修改的位置/proc/sys/kernel/hostname
2.sysctl kernel.hostname = xxx 调用了write 修改的位置/proc/sys/kernel/hostname
3.vi /etc/hostname 然后在写。调用了write
前两个都是临时修改主机名(重启之后失效),第三个是重启之后才生效,开机是自动读取配置文件下的hostname。
这样我们就开始分析:
1和2,hook住sethostname和write,write通过fd得到路径名是不是/proc/sys/kernel/hostname(内核里的路径就是/sys/kernel/hostname)
3 可以在写一个开机脚本,一开机就修改过来。
2和3也可以用inotify 来监听/proc/sys/kernel/hostname和/etc/hostname是否发生改动删除移动(IN_MODIFY | IN_DELETE_SELF | IN_MOVE_SELF),这个就比较强硬一些。