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):
<?xml version="1.0"?>
<Firewall xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Table name="filter">
<name>filter</name>  <!--一个tables-->
<Chian name="INPUT"> <!--一个tables的一条链-->
<Rule>  <!--一条链的一条规则-->
<Readonly>no</Readonly> <!--是否可更改或者删除-->
<Act>I</Act> <!--添加I,追加A,删除D-->
<Num>2</Num> <!--匹配序号,iptables会基于序号进行匹配-->
<Src_addr>192.168.1.7</Src_addr> <!--源地址-->
<Src_port>168</Src_port> <!--源端口-->
<Dst_addr>192.168.1.0</Dst_addr> <!--目的地址-->
<Dst_port>192</Dst_port> <!--目的端口-->
<Proto>tcp</Proto> <!--协议-->
<Interface>eth0</Interface> <!--网络接口-->
<Action>ACCEPT</Action> <!--iptables的target-->
<!--其它任意可以配置的参数-->
<Comment>aaa</Comment> <!--注释-->
</Rule>    
</Chian>            
</Table>
<Table name="nat">
<name>nat</name>
<Chian name="INPUT">
<Rule>
<Readonly>no</Readonly>
<Act>I</Act>
<Num>2</Num>
<Type>2</Type> <!--类型,有地址转换,端口映射等等-->
<Src_addr>192.168.1.7</Src_addr> <!--源地址-->
<Dst_addr>192.168.1.0</Dst_addr> <!--目的地址-->
<Interface>eth0</Interface> <!--起作用的网络接口-->
<Drection>1</Drection> <!--snat还是dnat-->
<Comment>aaa</Comment>
</Rule>    
</Table>
<Firewall>
下面是对应的xslt文件(parse.xslt):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="text" version="1.0"/>
<xsl:template match="Table">
<xsl:choose>
<xsl:when test="name= 'filter'"> <!--很简单的基本配置,很多参数没有用到-->
<xsl:for-each select="/Firewall/Table/Chian/Rule">
-<xsl:value-of select="Act" /> INPUT <xsl:value-of select="Num" /> -i <xsl:value-of select="Interface" /> -s <xsl:value-of select="Src_addr" /> -p <xsl:value-of select="Proto" /> -m <xsl:value-of select="Proto" /> -d <xsl:value-of select="Dst_addr" /> --sport <xsl:value-of select="Src_port" /> --dport <xsl:value-of select="Dst_port" /> -j <xsl:value-of select="Action" />
</xsl:for-each>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="name= 'nat'">
<xsl:for-each select="/KOAL_SSL/Table/Rule"> <!--下面的通配并不完全,正确的做法应该用正则表达式去写,另外还要根据xml文件中参数确定某一项是否可选-->
-t nat -<xsl:value-of select="Act" /> POSTROUTING <xsl:value-of select="Num" /> -o <xsl:value-of select="Interface" /> -s <xsl:value-of select="Src_addr" /> -j SNAT --to <xsl:value-of select="Dst_addr" />
</xsl:for-each>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
接下来使用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的事情了,这件事不是很难。

本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1271948

实现一个可以用web配置的防火墙相关推荐

  1. centos 7配置firewall防火墙的地址伪装和端口转发实例

    环境如下图所示,网关服务器和网站服务器都采用centos 7操作系统,网关服务器安装3块千兆网卡,分别连接Internet.企业内网.网站服务器. 网关服务器连接互联网卡ens33配置为公网IP地址, ...

  2. 什么是WEB应用waf防火墙和DDOS高防IP?

    什么是WEB应用waf防火墙和DDOS高防IP? WEB应用防火墙顾名思义就是解决WEB应用防护问题的专属服务,今天的WEB应用已不仅限于网站门户,APP服务接口.业务系统之间的相互调用.数据共享服务 ...

  3. 虚拟机web配置服务器,【搭建web服务器】以及web的所有配置

    首先打开一台server 2008和一台win 7的虚拟PC机. 第一步.配置IP地址,要求两台虚拟机的IP地址要在同一个网段server 2008的DNS地址指向自己.注意要绑定同一个物理网卡. W ...

  4. 【Microsoft Azure 的1024种玩法】二十四.通过Azure Front Door 的 Web 应用程序防火墙来对 OWASP TOP 10 威胁进行防御

    [简介] 我们都知道像 SQL 注入.跨站点脚本攻击(XSS)之类的恶意攻击以及 OWASP 发现的十大威胁都可能会导致服务中断或数据丢失,让 Web 应用程序所有者受到巨大威胁.那么如何有效的解决O ...

  5. 【web-攻击web服务器】(13.2)易受攻击的服务器软件、Web 应用程序防火墙

    目录 一.易受攻击的服务器软件 1.1.简介: 1.2.应用程序框架缺陷 简述: .NET填充提示 1.3.内存管理漏洞 简述: 1.4.编码与规范化漏洞 简述: 1.5.查找Web服务器漏洞 简述: ...

  6. 一个智能的 Web 界面测试系统

    一个智能的 Web 界面测试系统 2011年01月05日 本文内容包括: Web2.0 技术使 Web 界面更加丰富多彩,使信息交流更加灵活,同时也使得相关的 Web 技术测试需求越来越多.那么,如何 ...

  7. (ASA) Cisco Web ××× 配置详解 [三部曲之一]

    (ASA) Cisco Web ××× 配置详解 [三部曲之一] 注意:本文仅对Web×××特性和配置作介绍,不包含SSL ×××配置,SSL ×××配置将在本版的后续文章中进行介绍.   首先,先来 ...

  8. 想成为一个高效的Web开发者吗?来看看大牛分享的经验吧~ #精选JAVASCRIPT前端开发...

    想成为一个高效的Web开发者吗?来看看大牛分享的经验吧~ 作为一个软(ku)件(bi)工(de)程(ma)师(nong),你有没有觉得做什么事都没时间?没时间学习新东西,没时间去回顾.整理原来写的烂代 ...

  9. HTTPS Web配置举例

    http://www.h3c.com.cn/Products___Technology/Technology/Security_Encrypt/Other_technology/Representat ...

最新文章

  1. C# 汉字编码GB2312转换
  2. array用法 numpy_NumPy总结(基础用法)
  3. 【数据结构】顺序循环队列及其实现(C语言)
  4. 达到年薪 40W 必需掌握的技术。
  5. java如何禁用usb_IT技巧分享59: 如何禁用USB端口以及光驱来保证数据不被泄露
  6. 被腾讯看上,叽里呱啦获近亿美元C轮融资
  7. TypeScript算法专题 - [双链表1] - 双链的概念及其实现
  8. 360勒索病毒补丁,不能访问共享修复
  9. vba正则表达式入门
  10. java读写xlsx文件
  11. 用极限定义证明微积分基本定理
  12. 记录常用的chrome插件
  13. excel数据分组存到一个excel的多个sheet中
  14. 定制小狼豪(五笔+拼音)输入法
  15. QIODevice::write : device not open
  16. Java实现打开浏览器的N种办法
  17. 饥荒如何修改服务器人数,饥荒联机怎么改房间人数?饥荒修改房间人数方法
  18. 安卓使用sqlite
  19. 基于C语言扫雷游戏的设计与实现
  20. 【公告】博客专家4月发布原创/翻译奖励发放

热门文章

  1. 从远程服务器拷贝文件命令,远程拷贝文件命令Scp的使用
  2. java拼图游戏Mian_Java拼图游戏源码 MainApp启动器 main(): 创建主界面类对 联合开发网 - pudn.com...
  3. html点线面制作,利用HTML5绘制点线面组成的3D图形的示例_html5教程技巧
  4. vue中页面跳转传值_vue 页面跳转传参
  5. React Router V6 新特性
  6. 计算机字处理软件word文档,2012计算机字处理软件 Word(answer)
  7. linux修改web密码忘记,Ubuntu 直接修改IPMIweb登录密码
  8. java去掉文本格式分割成字然段落_Java实现文本按照自然段落进行切分详解
  9. matlab图上面加箭头,如何在matlab中显示箭头
  10. 安装eclipse插件sts