最近在对 esx和 esxi做安全加固,需要修改 esx的防火墙的配置,对一些管理端口做源地址限制。esxi5.1限原地址已经可以通过 vcenter 对这些进行操作了,不怕麻烦的,就进图形界面一个个的点,怕麻烦的,也可以使用 powercli 进行指修改。但是同样的方法,对 esx4.1就不能用了。

     esx4.1其实是个完整的 linux 系统,对系统稍有了解的我,自然的想到ssh 方式进到操作系统里看看有没有什么办法。结果还真有,同样是 iptables,我就轻车熟路的修改了 iptables 的配置文件/etc/sysconfig/iptables(事实上我对系统的东西仅到这此为止),保存,重启 iptables,和我想要的结果一致,安全复检一下,没有问题了。一切都是那么美好,美中不足的是我不会写 shell 脚本,批量修改这个。

    过了几天,安全复检的结果出来了,又报了一大堆问题,我修改的好象完全没有效果了!怎么可能呢?我登陆到那些设备,发现 iptables 的规则又恢复到默认值,不知道的还以为我啥也没干呢?后来我问了同事做了什么操作没有?他说集群HA状态有问题,他重置了一下集群 的 HA。难道集群HA重置还会修改防火墙策略?我试着改了一下防火墙配置,又重新初始化了一下集群HA,果然,策略又恢复成默认的了。看来 esx 的防火墙策略不是保存在/etc/ssyconfig/iptables 里。

  后来到 vmware 的官网上去查了一下,vmware的官方知识库里的解释请点这里。确实说明了,使用 iptables 配置的策略会随着集群 HA 重置而重置成使用 esxcfg-firewall 命令配置的结果。

  看来我得使用 esxcfg-firewall 了,

esxcfg-firewall --ipruleAdd x.x.x.x/x,443,tcp,ACCEPT,vmwareclient

   使用上面的命令的格式,其中最后的 vmwareclient 是我写的名字,不是命令的关键字,你可以根据自己的需求写。

   配置完策略后,可以直接生效,使用 iptables -nL 也能查看到变化,再次重置了一下集群的 HA,新配置的策略还在。但我没有找到这个命令找策略保存在哪个配置文件里。

 

  后续:

  esx 4.1将 防火墙策略保存在/etc/vmware/firewall/chains目录下,该目录下有四个文件,default.xml和 custon.xml, usercustom.xml, userdefault.xml。其中不带 user 前缀的是系统生成的,带 user 前缀的文件优先级更高,可以更改文件内容实惠这个功能,但是我照猫画虎的加了几个策略,都没生效。而且使用 esxcfg-firewall 命令配置的策略也没有在这几个配置文件里找到。

  如果可以,还是使用 esxi5以后的吧,可以通过 powercli 批量更改。