欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

马哥 29_02 _iptables系列之layer7 有大用

自己编译的内核版本当中netfilter的内核模块(名称都重命名为 xt)与以前的红帽自带的iptables所使用的内核模块的名称是不一样的(好像叫lpt)

image.png


172.16.100.7

192.168.10.6






保证能够上互联网

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT 172.16.100.7

iptables -A FORWARD -s 192.168.10.0/24 -m layer7 --l7proto qq -j REJECT

        QQ:    UDP,如果QQ在这个规则前已经上了QQ(哪怕QQ下线了,也还是能照样上线的),则这个规则不生效的

只有在这个规则生效后,上QQ,这个规则才生效(上不了QQ)


-m time 时间扩展

    --datestart --datestop


    --timestart  --timestop   (可以结合 --monthdays 和 --weekdays 使用 )


iptables -A FORWARD -s 192.168.10.0/24 -m time --timestart 08:10:00 --timestop 12:00:00 -j DROP

iptables -A FORWARD -s 192.168.10.0/24 -m time --timestart 14:30:00 --timestop 18:20:00 -j DROP



service iptables save

iptables-save > /etc/sysconfig/iptables.tus    保存iptables规则到一个文件里

iptables-restore < /etc/sysconfig/iptables.tus 想让保存的iptables规则让生效

其实我们可以完全自定义脚本的,不需要非得使用iptables服务



iptables 脚本:


#!/bin/bash

#

ipt=/usr/sbin/iptables

einterface=eth1

iinterface=eth0


eip=172.16.100.7

iip=192.168.10.6


$ipt -t nat -F

$ipt -t nat -F

$ipt -t mangle -F


$ipt -N clean_up

$ipt -A clean_up -d 255.255.255.255 -p icmp -j DROP

$ipt -A clean_up  -j RETURN


$ipt -A


想让它开机自动执行,怎么办

POST-->MBR(bootloader)-->Kernel(initrd)-->init (/etc/inittab)

            1,设定默认级别

            2,系统初始化脚本

            3,运行指定级别的服务

                        /etc/rc.d/rc 0 

                                /etc/rc.d/rcN.d

                                    S*      (启动)

                                    K*      (停止)


                                    S99local

/etc/rc.d/rc.local       ( /etc/rc.local  链接指向 /etc/rc.d/rc.local    )

/etc/rc.local       # 开机后自动执行的脚本写在这里面

自己定制iptables脚本比服务器本身的脚本更灵活,更易用




IDS (Intrusion Detection Systems 入侵检测系统)

    nids    网络入侵检测系统  snort 入侵防御系统  snort + iptables = NIPS (  Network Intrusion Prevention System 网络入侵防御系统)

image.png

        xen, kum :    iptables  虚拟

    hids    主机入侵检测系统 













# make modules_install

image.png

# make install

image.png

别忘了 重启电脑,使用新版本的内核


# cd 

# vim /etc/grub.conf

image.png

image.png


# shutdown -r now

image.png


查看此时的新内核版本 

# uname -r 

image.png


为了使以前的iptables 的服务脚本能继续使用,把原来的iptables的服务脚本备份一下


(这里备份到家目录下)  波浪号~表示家目录

iptables服务保存一下

# cp /etc/init.d/iptables  ~/

配置文件保存一下

# cp /etc/sysconfig/iptables-config  ~/

原来的iptables规则保存一下

# cp /etc/sysconfig/iptables ~/iptables.rules


停止iptables 服务

# service iptables stop

image.png

# chkconfig iptables off

image.png


# rmp -e iptables-ipv6 iptables ipstate --nodeps

(这里警告一下,因为我们改变过,没关系的,等下我们还可以把它复制过来)

image.png

# ls 

image.png


# tar xf iptables-1.4.6.tar.bz2 -C /usr/src

image.png

# cd /usr/src/iptables-1.4.6

# ls 

里面有个 extensions 目录 ,就是扩展

image.png


# ls extensions/

image.png

libipt(内核认识的iptables 扩展) libxt(对于内核来讲内核模块)


# cd /usr/src

# ls 

image.png


# cd netfilter-layer7-v2.22

# ls

# ls iptables-1.4.3forward-for-kernel-2.6.20forward

image.png

# cp iptables-1.4.3forward-for-kernel-2.6.20forward/libxt_layer7.* ../iptables-1.4.6/extensions/

image.png

# cd ../iptables-1.4.6/extensions/

# ls

image.png

image.png

# cd ..

# pwd

image.png



# ./configure --prefix=/usr --with-ksource=/usr/src/linux

--prefix=/usr 就是指定安装路径

 --with-ksource=/usr/src/linux  就是kernel 内核源码的路径

image.png

# make

image.png

# make install 

image.png


# which iptables    (看iptables这个二进制程序的路径)

image.png


# cd 

# ls 

image.png

# vim iptables

image.png

image.png


# cp iptables /etc/init.d

# chkconfig --add iptables    (把它加到服务控制列表中来)

image.png


# chkconfig --list iptables  (查看iptables服务状态)(2 3 4 5 是 on,但此时服务尚未启动)


image.png


# ls 

# cp iptables-config /etc/sysconfig/   (启动之前复制iptables的配置文件)

image.png


# vim iptables.rules     (iptables.rules 里面其实什么规则也没有,不用复制它吧,可以直接启动iptables了)

image.png

image.png


# service iptables start

image.png


# lsmod

image.png


我们希望 iptables 的 layer7 能够过滤对应的协议包,还需要提供协议包,

l7-protocols-2009-05-28.tar.gz 这里协议特征包(layer7支持的qq,msn等协议,是靠协议本身的特征码来识别协议本身的,而这里就是特征码的定义) (l7是英文字母l,不是数字1)


# ls

image.png


make install 无非就是将l7-protocols-2009-05-28.tar.gz解压后的东西复制到/etc目录下而已

# tar xf l7-protocols-2009-05-28.tar.gz 

# cd l7-protocols-2009-05-28.tar.gz 

# make install


image.png


# service iptables restart  (照道理,其实是不用重启的)

image.png



我们验证一下 layer7 是不是已经生效了



# ls /etc/l7-protocols/protocols/  (可以看到l7支持的layer协议名称)(对协议进行的控制)

image.png





# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 172.16.100.7

# iptables -t filter -A FORWARD -s 192.168.10.0/24 -m layer7 --l7proto qq -k REJECT

# iptables -L -n

image.png




(这里 172.16.200.7 是内网地址,记住仅仅这里)

# iptables -t nat -I POSTROUTING -s 172.16.100.7 -j MASQUERADE

# iptables - I FORWARD -s 172.16.100.7 -j ACCEPT

image.png




网关电脑(中间电脑),保证DNS正常

image.png

image.png

网关电脑(中间电脑) 可以上网

image.png



windows 电脑配置

image.png

windows 配置网络

image.png

windows 安装QQ

image.png

windows  可以上网

image.png

image.png


QQ 登不上

image.png



网关电脑(中间电脑)

image.png


# iptables -D FORWARD 1  (网关电脑(中间电脑) 删掉这个规则)

image.png

windows 电脑可以上QQ

image.png



# man iptables

image.png




# cd  /etc/rc.d/init.d

# ls 

image.png

# cd ..

# ls 

# cd rc3.d/

# ls 

image.png


# cat S99local

image.png


# ll S99local

# cd ../

# ls 

# pwd

image.png


# vim rc.local

image.png

image.png





普通分类: