实现一个可以用web配置的防火墙

endian是一个可基于web配置的防火墙,2006年就知道它了,只是具体是怎么做的我也没有研究过,因为没有时间,最重要的是那时我根本不知道什么是防火墙,也不从来没有使用过linux(期末考linux的时候,我带了小抄),现在琢磨起来应该也不会很难,但是可以自己实现一个拥有类似功能的,虽然很丑陋但是可以完成基本的web配置功能。
本次行动要用到的知识点有xml,xsl,php等等。xml是一种将数据和数据的表现形式分离的格式化文档格式,xml只关注数据的组织形式而不管最终如何显示,xsl是一种将XML转换成其他格式文档的编程语言,它根据xml这种纯数据可以得到任意格式的输出,具体得到哪一种格式就要看xsl如何写了,专门负责显示的开发人员不用再关注数据本身,只需要用心写xslt文件就是了。常见的输出格式有html,linux的.conf文本,windows的.ini文本等等,对于html的生成是很有意义的一个xml在web服务器可以直接返回给客户端,在返回的路上只要有xsl将它转化为html就可以了,可以随意转化成随意的html文件,比如不同语言,不同文化对应的不同的风格,但是数据都是同一份。下面是web配置页面生成的xml文件(conf.xml):



filter 

 
no
I
2
192.168.1.7
168
192.168.1.0
192
tcp
eth0
ACCEPT

aaa
   
           


nat


no
I
2
2
192.168.1.7
192.168.1.0
eth0
1
aaa
   


下面是对应的xslt文件(parse.xslt):







- INPUT -i -s -p -m -d --sport --dport -j






-t nat - POSTROUTING -o -s -j SNAT --to





接下来使用xalan命令根据xslt文件解析上面的xml文件,最终生成一个文本文件:
debian:/home/zhaoya/xslt# xalan -IN conf.xml -XSL parse.xslt
文本文件的内容为:
-I INPUT 2 -i eth0 -s 192.168.1.7 -p tcp -m tcp -d 192.168.1.0 --sport 168 --dport 192 -j ACCEPT
-t nat -I POSTROUTING 2 -o eth0 -s 192.168.1.7 -j SNAT --to 192.168.1.0
我们保存为firewall.conf,然后就可以用iptables执行了,实际上上述的工作并不是手工完成的,而是web来完成的。web服务器根据用户的web UI操作而生成xml文件,然后执行xalan命令,并且负责执行最终配置文件的中的iptables命令,如何用web完成就是php的事情了,这件事不是很难。

你可能感兴趣的:(实现一个可以用web配置的防火墙)