实例简释iptables + l7-filter配置及使用
来源:互联网 发布:ddms 数据库 编辑:程序博客网 时间:2024/04/30 02:43
本文将以实例分析的方式简单介绍iptables实现防火墙,源/目的地址转换,iptables拓展模块,以及通过重新编译内核凭借l7-filter模块过滤QQ、迅雷等应用程序通信等内容。 52b*[tZ
iptables是linux中的一款强大的防火墙工具,它通过设置定义规则来实现控制网页通信的作用。由其访问控制的实现,主要是依靠filter表、nat表和mangle表配合五条netfilter链的协同作用,下面简单介绍一下他们作用以及对应关系:
filter用于一般的ip数据包过滤,包含input链、output链和forward链;
nat表的作用转发ip数据包,包含prerouting链、postrouting链和output链。
forward:通过防火墙转发数据;
input:外部访问本机应用程序;
output:本机应用程序向外部发起的访问;
prerouting:定义数据包在进入防火墙且在控制规则生效之前;
postrouting:定义数据包进入防火墙在向外转发之前。
由于iptables本身带有强大的说明文档,命令的具体使用细节这几就不在赘述,只对几个常用的命令进行介绍: cZ(elZ0~2-"0 ^n{ @^;j)%F} s TOa DhX#E& M;0]u.D*= v^ /Q 8Q :> &�fV kPQtQh]y%
一、访问控制简单实例分析
首先开启防火墙的路由功能
方法1: !r`,�=jK" 7},)]da>,'
方法2:
实例1:允许192.168.0.0/24访问防火墙的SSH服务
实例2:允许状态是new和established的访问web服务
实例3:拒绝所有192.168.0.0/16网段client来访问DNS解析服务的用户
实例4:让内网用户可以相互发邮件
二、iptables实现源地址转换以及目的地址转换
源地址转换:
作用:实现多个内网主机共同使用一个公网IP地址与公网通信。 cpt<WK} ?:|-Dq,
地址伪装源地址转换:
作用:使用ADSL拨号上网用户的IP都是由ISP随即分配,所以上述固定外网IP的情况就不在适用了,使用地址伪装能够自动匹配外网ip并实现源地址转换。 v+e|o:o#
目的地址转换:
作用:实现公网用户通过公网地址,访问内网服务器。 M(d6Z2ibh
三、常用模块扩展
iprange:地址范围匹配 )2DQ>cm Z+pom7A"E
multipoint:多端口匹配
string:传输内容中字符串匹配
传输日志功能启用:日志的向磁盘的写入会大大消耗系统资源,建议生产环境中关闭此功能。
四、使用l7-filter模块控制特定的应用程序访问网络
下面的内容旨在通过编译内核加入l7-filter模块,从而使iptables按照应用程序的特征来实现控制功能。
1.解压内核并创建软连接 =2y8 CgLj i#X!#vyc Fg/dS6=n`?
2.给内核打入netfilter补丁
3.配置内核编译选项 dSIH9D
Je4Z(kj 0
若您不清楚内核的基本配置选择策略,建议复制当前系统配置文件,并以此为蓝本完成本次内核编译。
【Networking support】 → 【Networking Options】 → 【Network packet filtering framework】 →【Code Netfilter Configuration】
<M> Netfilter connection 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> “conntrack” connection match support
<M> “mac” address match support
<M> "multiport" Multiple port 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
上述模块配置完成后保存退出配置界面 +Ra3bj�l [ neXFp}S gLL-VvJ[ 5 waw`F >+cVs: }tST)=M` h5|.Et YpdNX.P, c\cZ]RZ f?Bj _z NWmtwS+@OIaYHA U;�xF#e }dSFAKI2dM ^E>CGGS4 sDiHXDI_m Edt}",s7 �S;@ay/*~
编译安装完成后,重启在grub界面会出现新内核Title,选择并进入新内核系统。
4.备份iptables的配置文件和服务脚本 X} JOX9pK
5.卸载原有的iptables软件包
6.安装新的iptables
7.安装l7-protocol
它用于定义iptables可以识别哪些应用程序的特征 H/cTJ9zz jMpa?Jp�1
/etc/l7-protocols/protocols定义了所有能够限制的应用程序
8.将备份的服务控制脚本复制回去 T |"`8mG 3o8\/-*<
9.复制iptables的配置文件
重启服务
添加控制
保存iptables
iptables是linux中的一款强大的防火墙工具,它通过设置定义规则来实现控制网页通信的作用。由其访问控制的实现,主要是依靠filter表、nat表和mangle表配合五条netfilter链的协同作用,下面简单介绍一下他们作用以及对应关系:
filter用于一般的ip数据包过滤,包含input链、output链和forward链;
nat表的作用转发ip数据包,包含prerouting链、postrouting链和output链。
forward:通过防火墙转发数据;
input:外部访问本机应用程序;
output:本机应用程序向外部发起的访问;
prerouting:定义数据包在进入防火墙且在控制规则生效之前;
postrouting:定义数据包进入防火墙在向外转发之前。
由于iptables本身带有强大的说明文档,命令的具体使用细节这几就不在赘述,只对几个常用的命令进行介绍: cZ(elZ0~2-"0 ^n{ @^;j)%F} s TOa DhX#E& M;0]u.D*= v^ /Q 8Q :> &�fV kPQtQh]y%
- iptables -t {filter|nat} -L -n
- #查看当前{filter|nat}表
- iptables -t {filter|nat}t -L -n
- #查看当前{filter|nat}表;若后跟--line-number可以查看行号
- iptables -t {filter|nat} -F
- #清空所有{filter|nat}表规则
- iptables -t {filter|nat} -D num
- #删除{filter|nat}表中的第num条规则
- iptables -P {INPUT|OUTPUT|FORWARD|PREROUTING|POSTROUING} {DROP|REJECT|ACCEPT}
- #设置5种链的的3中策略
- service iptables save
- #保存当前iptables,保存路径为/etc/sysconfig/iptables
一、访问控制简单实例分析
首先开启防火墙的路由功能
方法1: !r`,�=jK" 7},)]da>,'
- echo 1 > /pro/sys/net/ipv4/ip_forward
- #此法重启后失效
方法2:
- vim /etc/sysctl
- net.ipv4.ip_forward = 1
- #将此项值设置成1
- service network restart
- #此法永久生效
实例1:允许192.168.0.0/24访问防火墙的SSH服务
- iptables -t filter -A INPUT -s 192.168.0.0/24 -d 192.168.0.71 -p tcp --dport 22 -j ACCEPT
- #filter表,INPUT链,从192.168.0.0/24网段,到192.168.0.71主机,基于tcp协议,目标端口22,采取动作ACCEPT
- iptables -t filter -A OUTPUT -s 192.168.0.71 -d 192.168.0.0/24 -p tcp --sport 22 -j ACCEPT
- #filter表,OUTPUT链,从192.168.0.70主机,到192.168.0.0/24网段,基于tcp协议,源端口22,采取动作ACCEPT A/7X9ir
- iptables -P INPUT DROP
- #设置INPUT策略:DROP
- iptables -P OUTPUT DROP
- #设置OUTPUT策略:DROP
实例2:允许状态是new和established的访问web服务
- iptables -R INPUT 2 -s 192.168.0.0/24 -d 192.168.0.70 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
- #此时改写链使用-R(replace)设置状态为established的响应请求全部放行
- intables -R OUTPUT 1 -p tcp -m state --state ESTABLISHED -j ACCEPT
- #响应状态 -s源地址 -d目的地址 不做限定(即只要是established状态的包output一律放行)
实例3:拒绝所有192.168.0.0/16网段client来访问DNS解析服务的用户
- iptables -t filter -A INPUT -s 172.16.0.0/16 -p udp --dprot 53 -j DROP
- #filter表,INPUT链,来自172.160.0.0/16网段,使用UDP协议,目标端口号53,采取动作 DROP
实例4:让内网用户可以相互发邮件
- iptables -A PREROUTING –p tcp --dport 110 –j ACCEPT
- iptebles -A PREROUTING –p tcp --dport 25 –j ACCEPT
- iptables -A FORWARD –p tcp --dport 110 –j ACCEPT
- iptables -A FORWARD –p tcp --sport 110 –j ACCEPT
- iptables -A FORWARD –p tcp --dport 25 –j ACCEPT
- iptables -A FORWARD –p tcp --sport 25 –j ACCEPT
- #邮件接收使用TCP110接口;邮件发送使用TCP25,放行数据转发。
二、iptables实现源地址转换以及目的地址转换
源地址转换:
作用:实现多个内网主机共同使用一个公网IP地址与公网通信。 cpt<WK} ?:|-Dq,
- iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 123.1.1.123
- #将192.168.0.0/24网段的地址作为源地址转换成123.1.1.123
地址伪装源地址转换:
作用:使用ADSL拨号上网用户的IP都是由ISP随即分配,所以上述固定外网IP的情况就不在适用了,使用地址伪装能够自动匹配外网ip并实现源地址转换。 v+e|o:o#
- iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
- #将192.168.0.0/24 网段的所有地址作为源地址转换成公网地址
目的地址转换:
作用:实现公网用户通过公网地址,访问内网服务器。 M(d6Z2ibh
- iptables -t nat -A PREROUTING -d 123.1.1.123 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.72
- #将外网的web访问请求(80端口)通过DNAT转发至内网web服务器192.168.0.72
- iptables -t nat -A PREROUTING -d 123.1.1.123 -p tcp --dport 22 -j DNAT --to-destination 192.168.0.73
- #将外网的ssh访问请求(22端口)通过DNAT转发至内网ssh服务器192.168.0.73
- iptables -t nat -A PREROUTING -d 123.1.1.123 -p udp --dport 53 -j DNAT --to-destination 192.168.0.74
- #将外网的DNS解析请求(53端口)通过DNAT转发至内网DNS服务器192.168.0.74
- iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT
- #转发所有状态为ESTABLISHED的数据包
三、常用模块扩展
iprange:地址范围匹配 )2DQ>cm Z+pom7A"E
- iptables -A FORWARD -m iprange --src-range 162.168.0.1-192.168.0.100 --dst-range 172.16.0.1-172.16.0.100 -j ACCEPT
- #限制源地址与目的地址的区间
multipoint:多端口匹配
- iptables -A FORWARD -p tcp -m multipoint --destination-ports 22,25,80,110 -m state --state NEW,ESTABLISHED -j ACCEPT
- #凡是目的端口匹配,状态匹配的就允许传输
string:传输内容中字符串匹配
- iptableis -A FORWARD -m string --string "xxxx.com" --algo bm -j REJECT
- #屏蔽含有xxxx.com的内容
传输日志功能启用:日志的向磁盘的写入会大大消耗系统资源,建议生产环境中关闭此功能。
- iptables -A INPUT -d 192.168.0.1 -p tcp --dport 22 -j LOG --log-prefix "SSH LOG:"
- #开启日志功能,并在每条日志前加上关机字符串
- iptables -A INPUT -d 192.168.0.1 -p tcp --dport 22 -m limit 6/minute -j LOG --log-prefix "SSH LOG:"
- #限制写入日志的频率每分钟6个
四、使用l7-filter模块控制特定的应用程序访问网络
下面的内容旨在通过编译内核加入l7-filter模块,从而使iptables按照应用程序的特征来实现控制功能。
1.解压内核并创建软连接 =2y8 CgLj i#X!#vyc Fg/dS6=n`?
- tar xvf linux-2.6.28.10.tar.gz -C /usr/src
- cd /usr/src
- ln -vs linux-2.6.28.10 linux
- cd linux
2.给内核打入netfilter补丁
- tar xvf netfilter-layer7-v2.22.tar.gz -C /usr/src
- cd /usr/src/linux
- patch -p1 < /usr/src/netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.patch
3.配置内核编译选项 dSIH9D
Je4Z(kj 0
若您不清楚内核的基本配置选择策略,建议复制当前系统配置文件,并以此为蓝本完成本次内核编译。
- cp /boot/config-您当前内核版本 /usr/src/linux/.config
- make menuconfig
- #打开配置界面
【Networking support】 → 【Networking Options】 → 【Network packet filtering framework】 →【Code Netfilter Configuration】
<M> Netfilter connection 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> “conntrack” connection match support
<M> “mac” address match support
<M> "multiport" Multiple port 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
上述模块配置完成后保存退出配置界面 +Ra3bj�l [ neXFp}S gLL-VvJ[ 5 waw`F >+cVs: }tST)=M` h5|.Et YpdNX.P, c\cZ]RZ f?Bj _z NWmtwS+@OIaYHA U;�xF#e }dSFAKI2dM ^E>CGGS4 sDiHXDI_m Edt}",s7 �S;@ay/*~
- make
- make modules_install
- make install
编译安装完成后,重启在grub界面会出现新内核Title,选择并进入新内核系统。
4.备份iptables的配置文件和服务脚本 X} JOX9pK
- cp /etc/init.d/iptables ~/
- cp /etc/sysconfig/iptables-config ~/
- #全部备份到root目录方便查找
5.卸载原有的iptables软件包
- rpm -e --nodeps iptables-ipv6 iptables iptstate
- #忽略关联形式卸载原iptables
6.安装新的iptables
- tar xvf iptables-1.4.6.tar.gz -C /usr/src
- #解压iptables文件到指定目录
- cp /usr/src/netfilter-layer7-v2.22/iptables-1.4.3forward-for-kernel-2.6.20forward/* /usr/src/iptables-1.4.6/extensions/
- #将之前解压的netfilter中的两个文件复制到对应iptables的目录中去
- cd /usr/src/iptables-1.4.6
- ./configure --prefix=/usr --with-ksource=/usr/src/linux
- #编译iptables
- make
- make install
7.安装l7-protocol
它用于定义iptables可以识别哪些应用程序的特征 H/cTJ9zz jMpa?Jp�1
- tar xvf l7-protocols.tar.gz
- cd l7-protocols
- make install
- #解压并安装
/etc/l7-protocols/protocols定义了所有能够限制的应用程序
8.将备份的服务控制脚本复制回去 T |"`8mG 3o8\/-*<
- cp /root/iptables /etc/init.d/
- vim /etc/init.d/iptables
- :%s@/sbin/$IPTABLES@/usr/sbin/$IPTABLES@g
- #全局正则表达式查找替换将原路径换成新路径
9.复制iptables的配置文件
- cp /root/iptables-config /etc/sysconfig/
重启服务
- service iptables restart
添加控制
- iptables -A FORWARD -s 192.168.10.0/24 -m layerl7 --l7proto qq -j REJECT
- #禁止内网用户使用qq通信
- iptables -A FORWARD -s 192.168.10.0/24 -m layerl7 --l7proto edonkey -j REJECT
- #禁止内网用户使用电驴
- iptables -A FORWARD -s 192.168.10.0/24 -m layerl7 --l7proto bittorrent -j REJECT
- #禁止内网用户使用bt
- iptables -A FORWARD -s 192.168.10.0/24 -m layerl7 --l7proto xunlei -j REJECT
- #禁止内网用户使用迅雷
- iptables -A FORWARD -s 192.168.10.0/24 -m layerl7 --l7proto msnmessenger -j REJECT
- #禁止内网用户使用MSN
- iptables -A FORWARD -s 192.168.10.0/24 -m layerl7 --l7proto pplive -j REJECT
- #禁止内网用户使用pplive
保存iptables
- *TnzkNN_,
service iptables save
@ ^. *$E5
0 0
- 实例简释iptables + l7-filter配置及使用
- 实例简释iptables + l7-filter配置及使用
- Centos+iptables+l7-filter 封QQ MSN和P2P
- Centos+iptables+l7-filter 封QQ MSN和P2P
- Centos+iptables+l7-filter 封QQ MSN和P2P
- Centos+iptables+l7-filter 封QQ MSN和P2P
- 利用iptables+l7-filter+opendpi封QQ和迅雷
- iptables+l7-filter 封QQ MSN和P2P
- 利用iptables+l7-filter+opendpi封QQ和迅雷
- 利用iptables+l7-filter+opendpi封QQ和迅雷
- 利用iptables+l7-filter+opendpi封QQ和迅雷
- 利用iptables+l7-filter+opendpi封QQ和迅雷
- iptables+l7-filter 封QQ MSN和P2P
- L7-filter总结
- l7-filter安装
- 安装L7-filter Userspace
- L7-filter 安装
- L7-filter总结
- jQuery(2)选择器总结
- 每个程序员都应该具备的调试能力。
- HDU 1272 小希的迷宫
- git常用命令
- 1007. Maximum Subsequence Sum (25)
- 实例简释iptables + l7-filter配置及使用
- 理解JDK以及在ubuntu 16.04 上JDK安装
- Matlab编程与数据类型 -- 单元数组
- 继承与多态
- eclipse上运行hive查询
- 优化mysql
- 网络基础知识
- iptables的详细介绍及配置方法
- HashMap的工作原理