routeros(ros)源于Linux,因此ros中的firewall拥有netfilter的影子,譬如ros的firewall含有INPUT、OUTPUT、FORWARD链,还有nat、mangle表,但是又有区别,特别是以下两点值得注意:
- ros的firewall似乎不支持状态检测;
- 默认情况下,ros的firewall允许所有数据包通过。
这两点我实在无法理解。
关于第一点,在一般的状态防火墙中,假如欲允许内网用户访问外网的web应用,只需要定义一条从内到外的访问规则即可,状态防火墙会自动识别从外至内的“相关(establised/related)”包,但是ros的firewall还需要额外再定义这两条(establised/related)从外至内的规则。
关于第二点,一般的防火墙的默认规则是drop,这是符合大多数管理员的思维的:凡是未经许可的连接均应丢弃,这种思路有两个好处:一是安全性高,不至于因为管理员的疏忽导致整个网络开放给外网,一是容易扩展,因为管理员永远都无法掌握或预知所有的威胁,因此仅定义允许的数据流才是正确的防火墙策略管理思路。
需求:
- 允许10.10.10.0/29访问192.168.100.0/24
- 允许10.10.10.8/29访问172.16.100.0/24
- 允许所有(方向)ping
- 允许ROS访问所有区域
脚本:
这里没有涉及到OUTPUT链,因为根据需求,不需要额外对OUTPUT进行限制。