29_1_iptables系列之layer7

1.有一种场景:
   该公司只有一个互联网地址,想让内网客户端上网,又想让内网的服务器被外网客户端访问。
   想让内网客户端主机上网,就使用SNAT;
   想让内网的服务器被外网客户端访问,就使用DNAT;
   内网主机是员工用来办公的,有很多的机密资料,是不能被外网访问到的,
   但是内网的服务器主机又必须被外网访问,那怎么把它们分开处理呢?
   
方法1:如果有人攻破了内网的服务器主机,利用它做跳板,去窃取内网客户端的资料,这是非常危险的。
   在有公网IP的主机上设置3块网卡,1个面对互联网,1个面对内网客户端,1个面对内网服务器;
   这样就可以分开处理它们啦;即使被攻破了服务器也不能去访问内网客户端,除非破解了防火墙。
   内网服务器区域叫做:DMZ(非军事化区域),那内网客户端就是军事化区域啦。
   但是这种方法有公网IP的主机比较繁忙。
方法2:背靠背方式
   两个主机防火墙各有两个网卡,前端主机防火墙有1个公网IP连接外网,另1个IP连接交换机,
   交换机连接后端主机防火墙的1个IP,交换机还连接内网服务器,
   后端主机防火墙的另1个IP连接内网的客户端。
   这就做到了分开处理,并且不繁忙。
             ----                 ----
             |防|                 |防|
内网客户端-- |火|                 |火|
             |墙|-- 交换机--(内网)|墙|---外网
             ----     |           ----
                      |
                    服务器

2.小项目:
   有一个主机,有3个网卡,1个面对互联网,1个面对内网客户端,1个面对内网服务器;
   内网服务器有SMTP,DNS,WEB,3个独立的服务主机。
   当外网客户端访问内网WEB服务器时,先需要DNS服务器解析,转换成公网IP,最后转到WEB服务器;
   内网的客户端访问内网的WEB就不需要解析成公网IP,
   只需要把两个内网网段通过路由转发即可,DNS定义view:内网请求转换成私有IP,外网请求转成公网IP。

3.内核编译:
   查看硬件详细信息:
       /proc/cpuinfo:cup相关信息
       lspci:pci相关信息
       lsusb:usb相关信息
       hal-device:查看每个硬件的相关详细
       记下硬件的型号,在配置的时候选择对应的驱动
   配置:保存在.config文件中,也可以在此文件直接配置
        make menuconfig
    make gconfig
    make kconfig
    make config:会遍历每一个选项,比较痛苦,时间比较长
    make oldconfig
   编译:
        make:编译全部功能
    只编译部分功能:
         make SUBDIR=arch/:只编译和内核核心相关功能的
         make driver/net/pcnet32.ko:只编译一个驱动,如只编译一个网卡驱动
         make dir/:只编译此目录下的所有内核原码
        转存编译结果:make O=/path/to/somewhere

安装内核模块:make modules_install
   安装内核:make install

清除:make clean
        make mrproper

iptables:二(源MAC),三,四层
    string:七层过滤,只能实现字符串,过滤七层协议很薄弱

4.layer7【实现七层过滤】
  作用:基于应用层协议实现过滤。
  应用:xunlei,qq,netfilter<--patch
       -m layer7 --17protp xunlei -j DROP
  实现步骤:
      1.给内核打补丁,并重新编译内核
      2.给iptables源码打补丁,并重新编译iptables
      3.安装17proto
  打补丁:
      1.kernel,patch:为了让netfilter提供一个框架接收iptables的相应规则
      2.iptables,patch:为了让iptables写相关的规则

(1).kernel patch
    #tar zxvf linux-2.6.28.tar.gz -C /usr/src
    #tar zxvf netfilter-layer7-v2.22.tar.gz -C /usr/src
    #cd /usr/src
    #ln -s linux-2.6.28.10 linux
    #cd /usr/src/linux
    #patch -p1 < ../netfilter-layer1-v2.22/kernel-2.6.25-2.5.28-layer7-2.22.patch

#cp /boot/config-2.6.18-164.el5 /usr/src/linux/.config
    #make menuconfig

Networking support >  Networking Options-> Network packet filtering framework-> Core Netfilter Configuration
    <M> Netfilter Configure tracking support
    <M> "layer7" match support
    <M> "string" match support
    <M> "time" match support
    <M> "iprange" match support
    <M> "connlimit" match support
    <M> "state" match support
    <M> "coontrack" connection match support
    <M> "mac" address match support
    <M> "multiport" match support

Networking support >  Networking Options-> Network packet filtering framework-> IP:Netfilter Configuration
    <M> IPv4 connection tracking support(required for NAT)
    <M> Full NAT
       <M> MASQUERADE target support
       <M> NETMAP target support
       <M> REDIRECT target support

#yum provides */screen
    #yum install screen-4.0.3-16.el6.x86_64
    #screen  为了防止编译被打断

#make
    #make modules_install
    #make install

(2).Compiles iptables:
    #cp /etc/init.d/iptables ~/iptables
    #cp /etc/sysconfig/iptables-config ~/
    #rpm -e iptables-ipv6 iptables iptstate  --nodeps
    #tar jxvf iptables-1.4.6.tar.bz2 -C /usr/src
    #cd /usr/src/iptables-1.4.6
    #cp ../netfilter-layer1-v2.22/iptables-1.4.3forward-for-kernel-2.6.20forward/libxt_layer7.*  ./extensions/
    
    #./configure --prefix=/usr  --with-ksource=/usr/src/linux
    #make
    #make install

#tar zxvf 17-protocols-2009-05-28.tar.gz
    #cd 17-protocols-2009-05-28
    #make install
    
    #mv ~/iptables /etc/rc.d/init.d/
    
    #/etc/init.d/iptables start

17-filter uses the standard iptables extension synatx
   #iptables [specify tables & chain] -m layer7 --17proto [protocol name] -j [action]

时间: 2024-11-03 21:43:42

29_1_iptables系列之layer7的相关文章

_iptables系列之layer7

uname -r查看内核版本. [[email protected] ~]# ls anaconda-ks.cfg  install.log.syslog      l7-protocols-2009-05-28.tar.gz  netfilter-layer7-v2.22.tar.gz install.log      iptables-1.4.6.tar.bz2  linux-2.6.28.10.tar.bz2 [[email protected] ~]# tar xf linux-2.6.

LinuxDevOps两个月学习路线安排

01_01_面授班开场.mp401_02_面授班开场.mp401_03_操作系统基础.mp401_04_Linux操作系统基础.mp402_01_Linux操作系统及常用命令.mp402_02_Linux操作系统及常用命令.mp402_03_Linux根文件系统详解.avi02_04_Linux文件管理命令详解.avi03_01_Linux文件管理类命令详解.avi03_02_bash特性详解.avi03_03_bash特性详解.avi03_04_Linux用户及权限详解.avi04_01_Li

马哥linux运维初级+中级+高级 视频教程 教学视频 全套下载(近50G)

马哥linux运维初级+中级+高级 视频教程 教学视频 全套下载(近50G)目录详情:18_02_ssl协议.openssl及创建私有CA18_03_OpenSSH服务及其相关应用09_01_磁盘及文件系统管理详解之三10_05_脚本编程之八 脚本完成磁盘分区格式化20_01_DNS主从复制及区域传送04_04_grep及正则表达式01_03_操作系统基础08_02_bash脚本编程之七 case语句及脚本选项进阶14_03_bash脚本编程之十一(Linux启动流程之三) SysV服务脚本01

【Windows10&nbsp;IoT开发系列】配置篇

原文:[Windows10 IoT开发系列]配置篇 Windows10 For IoT是Windows 10家族的一个新星,其针对不同平台拥有不同的版本.而其最重要的一个版本是运行在Raspberry Pi.MinnowBoard和Galileo平台上的核心版.本文重点针对Raspberry Pi平台的Windwos10 IoT配置做介绍. Windows 10 IoT Editions ​一:设置你的电脑. 注:​开发Windows10 IoT的电脑需要Visual Studio 2015.

【Windows10&nbsp;IoT开发系列】PowerShell的相关配置

原文:[Windows10 IoT开发系列]PowerShell的相关配置 可使用 Windows PowerShell 远程配置和管理任何 Windows 10 IoT 核心版设备.PowerShell 是基于任务的命令行 Shell 和脚本语言,专为进行系统管理而设计. 1.​启动 PowerShell (PS) 会话 注:若要使用装有Windows10 IoT Core设备启动PS会话,首先需要在主机电脑与设备之间创建信任关系. ​启动 Windows IoT 核心版设备后,与该设备相连的

【Windows10&nbsp;IoT开发系列】API&nbsp;移植工具

原文:[Windows10 IoT开发系列]API 移植工具 Windows 10 IoT Core 中是否提供你的当前 Win32 应用程序或库所依赖的 API? 如果不提供,是否存在可使用的等效 API? 此工具可以为你回答这些问题,并协助你将你的当前 Win32 应用程序和库迁移到 Windows IoT Core. Windows 10 IoT 核心版 API 移植工具可在 ms-iot/iot-utilities github 存储库中找到.下载存储库 zip 并将 IoTAPIPor

【Windows10&nbsp;IoT开发系列】“Hello,World!”指导

原文:[Windows10 IoT开发系列]"Hello,World!"指导 本文主要是介绍使用C#来开发一个可以运行在Raspberry Pi2上的一个基本项目. ​1.在启动Visual Studio 2015后,选择"文件"→"新建项目". ​在打开的"新建项目"对话框中,选择"通用". ​选择第一个项目"空白应用(通用Windows)" 新建项目 ​注:如果这是你创建的第一个项

【Windows10&nbsp;IoT开发系列】开发人员模式设置

原文:[Windows10 IoT开发系列]开发人员模式设置  声明:本文转自微软Windows 开发人员中心(https://msdn.microsoft.com/library/windows/apps/xaml/dn706236.aspx),在此基础上进行删减和修改. ​对于要用于开发.安装或测试应用的设备,不再需要开发人员许可证.你只需从设备的设置中为这些任务启用设备一次.(仅限于运行Windows 10系统的设备) 使用开发人员功能 ​使用 Microsoft Visual Stud

【Windows10&nbsp;IoT开发系列】Powershell命令行实用程序

原文:[Windows10 IoT开发系列]Powershell命令行实用程序 更新帐户密码: 强烈建议你更新默认的管理员帐户密码.若要更新帐户密码,你可以发出以下命令: net user Administrator [new password]​ (其中 [new password] 表示你选择的强密码). 创建本地用户帐户: 如果你想要授予其他人访问你的 Windows IoT Core 设备的权限,你可以通过在 net user [username] [password] /add​ 中键