iptables详解--转
[root@test3 ~]# grep -v '#' /etc/grub.confdefault=1timeout=5splashimage=(hd0,0)/grub/splash.xpm.gzhiddenmenutitleCentOS (2.6.32-l7.1)? ? root (hd0,0)? ? kernel /vmlinuz-2.6.32-l7.1 roroot=UUID=1ef834d4-3eae-4c95-a6ad-8940bb466dce rd_NO_LUKS ?KEYBOARDTYPE=pcKEYTABLE=us rd_NO_MD crashkernel=auto.UTF-8 rd_NO_LVM rd_NO_DM?rhgbquiet? ? initrd /initramfs-2.6.32-l7.1.imgtitle CentOS (2.6.32-358.el6.x86_64)? ? root (hd0,0)? ? kernel /vmlinuz-2.6.32-358.el6.x86_64 roroot=UUID=1ef834d4-3eae-4c95-a6ad-8940bb466dce rd_NO_LUKS ?KEYBOARDTYPE=pcKEYTABLE=us rd_NO_MD crashkernel=auto.UTF-8 rd_NO_LVM rd_NO_DM rhgbquiet? ? initrd /initramfs-2.6.32-358.el6.x86_64.img 可以看到已经被加载进来,先不要急着更改启动内核,先shutdown 将其关机 然后通过交互界面来选取相关内核,按回车进入 选择第一个,我们自己编译的内核,回车 [root@test3 ~]#uname -r2.6.32-l7.1 [root@test3 ~]# cd~/rpmbuild/SPECS/[root@test3 SPECS]# lsiptables.spec ? 对iptables.spec 进行rpm封装,如下所示 iptables的安装 1.?在iptables官方下载源码并打补丁后编译安装 在官网下载iptables-1.4.20.tar.bz2 [root@test3iptables]# cd /usr/src/netfilter-layer7-v2.23/[root@test3 netfilter-layer7-v2.23]# lsCHANGELOG ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?kernel-2.6.32-layer7-2.23.patchiptables-1.4.3forward-for-kernel-2.6.20forward ?README[root@test3 netfilter-layer7-v2.23]# cdiptables-1.4.3forward-for-kernel-2.6.20forward/[root@test3 iptables-1.4.3forward-for-kernel-2.6.20forward]# lllibxt_layer7.c ? ? ? #layer7的模块 libxt_layer7.man #将其复制到源码目录中 [root@test3iptables]# tar xf iptables-1.4.20.tar.bz2[root@test3 iptables]# cd iptables-1.4.20 #找到extensions目录,extensions目录内是iptables所支持的模块 #将上面的libxt_layer7.c libxt_layer7.man复制进此目录 并重新编译即可 [root@test3extensions]# cp/usr/src/netfilter-layer7-v2.23/iptables-1.4.3forward-for-kernel-2.6.20forward/libxt_layer7.*./[root@test3 extensions]# ls | grep laylibxt_layer7.clibxt_layer7.man #要想编译iptables,前提是先编译好新内核后,并对新内核的源码进行编译,而且需要将之前的iptables卸载 #感觉有些麻烦,那么有了第二种方法 2.?下载src.rpm 格式包,安装 打补丁 而后重新制作成rpm包 在官网下载 iptables-1.4.7-9.el6.src.rpm [root@test3iptables]# rpm -ivh iptables-1.4.7-9.el6.src.rpm 之后会在家目录生成rpmbuild的目录 [root@test3iptables]# cd [root@test3rpmbuild]# cd SOURCES/ [root@test3SOURCES]# ls iptables-1.4.5-cloexec.patch ? ? ? ? ?iptables-1.4.7-opt_parser_v2.patch iptables-1.4.7-xt_AUDIT_v2.patch iptables.init iptables-1.4.7 ? ? ? ? ? ? ? ? ? ? ? ??iptables-1.4.7.tar.bz2?? ? ? ? ? ? iptables-1.4.7-xt_CHECKSUM.patch ?libxt_AUDIT.man iptables-1.4.7-chain_maxnamelen.patch ?iptables-1.4.7-tproxy.patch ? ? ? ? iptables-config 解压iptables-1.4.7.tar.bz2 [root@test3SOURCES]# tar xf iptables-1.4.7.tar.bz2 [root@test3extensions]# pwd/root/rpmbuild/SOURCES/iptables-1.4.7/extensions 复制其目录 [root@test3extensions]# cp/usr/src/netfilter-layer7-v2.23/iptables-1.4.3forward-for-kernel-2.6.20forward/libxt_layer7.*./ [root@test3SOURCES]# pwd/root/rpmbuild/SOURCES [root@test3SOURCES]# rm -f iptables-1.4.7.tar.bz2?[root@test3 SOURCES]# tar jcf iptables-1.4.7.tar.bz2 ./iptables-1.4.7/* 升级: [root@test3 SPECS]# ?pwd/root/rpmbuild/SPECS 编辑其配置文件并将其封装 [root@test3 SPECS]#vim iptables.spec 修改参数 Release:?10%{?dist} ? #之前为9% 将其值调大 将内核目录改为我们新建立的内核目录 CFLAGS="$RPM_OPT_FLAGS-fno-strict-aliasing" ./configure--enable-devel --enable-libipq --bindir=/bin --sbindir=/sbin --sysconfdir=/etc--libdir=/%{_lib} --libexecdir=/%{_lib} --mandir=%{_mandir} --includedir=%{_includedir}--with-xtlibdir=/%{_lib}/xtables-%{version}?--with-kernel=/usr/src/linux/ --with-kbuild=/usr/src/linux/--with-ksource=/usr/src/linux/ 制作rmp安装包 [root@test3 SPECS]#rpmbuild -bb iptables.spec?[root@test3 x86_64]# pwd/root/rpmbuild/RPMS/x86_64 #以下生成的为iptables的升级包 [root@test3x86_64]# lsiptables-1.4.7-10.el6.x86_64.rpm ? ? ? iptables-ipv6-1.4.7-10.el6.x86_64.rpmiptables-devel-1.4.7-10.el6.x86_64.rpm 先来看一下当前iptables是什么版本 [root@test3x86_64]# rpm -qa | grep iptablesiptables-1.4.7-9.el6.x86_64iptables-ipv6-1.4.7-9.el6.x86_64 这里我们来升级以下2个包 iptables-1.4.7-10.el6.x86_64.rpmiptables-ipv6-1.4.7-10.el6.x86_64.rpm 在升级之前先将iptables服务停止以防出错 [root@test3x86_64]# /etc/init.d/iptables stop[root@test3 x86_64]# rpm -Uvh iptables-1.4.7-10.el6.x86_64.rpmiptables-ipv6-1.4.7-10.el6.x86_64.rpm[root@test3 x86_64]# /etc/init.d/iptables start 使layer7 能够识别应用 [root@test3iptables]# tar xf l7-protocols-2009-05-28.tar.gz[root@test3 iptables]# cd l7-protocols-2009-05-28 #直接make install [root@test3l7-protocols-2009-05-28]# make install[root@test3 l7-protocols-2009-05-28]# mkdir -p /etc/l7-protocols[root@test3 l7-protocols-2009-05-28]# cp -rfa * /etc/l7-protocols Layer 7所别的协议全部都在/etc/l7-protocols/protocols 目录下 Layer 7的功能需要利用内核ACCT追踪的功能,所以还必须修改内核参数,修改ACCT参数 [root@test3protocols]# sysctl -w net.netfilter.nf_conntrack_acct=1 [root@test3protocols]# sysctl -a | grep acctnet.netfilter.nf_conntrack_acct = 1 这时,我们的iptables已经支持Layer 7了 Layer 7的规则匹配: 决绝使用QQ [root@test3protocols]# iptables -A FORWARD -i eth0 -m layer7 --l7proto qq -j REJECT 拒绝到本机内部http协议 [root@test3protocols]# iptables -A INPUT -d?本机ip -m layer7--l7proto http -j DROP (编辑:源码网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |