iptables详解以及企业常用案例

    iptables采用netfilter网络架构实现包过滤防火墙,可以实现硬件防火墙的常用功能,亦可以在应用方案中作为硬件防火墙的替代品.在本文档里我们将详细介绍iptables的功能,以及剖析企业常用案例

一、iptables的工作原理

1iptables3个表

    iptables共三个表,分别是filter,nat,mangle。我们通过编辑这三个表可以实现不同的功能。其中fileter主要是为了控制外部PC对本服务器的访问,比如在服务器上作了web服务,想只允许某网段才能访问就是利用了fileter进行访问控制。Nat表主要用在网关服务器上,可以实现nat,路由等功能。Mangle不常用,此教程不做介绍。

2、每个表的规则链

iptables默认的表:

filter(包含INPUTFORWARDOUTPUT

Nat(包含PREROUTINGPOSTROUTINGOUTPUT

Mangle (包含INPUTFORWARDOUTPUTPREROUTING POSTROUTING

其中更详细如下图所示:

    注:filterOUTPUT规则链和natOUTPUT没有联系,即不同表的规则链即使名字相同也毫无关系。

我们通过添加删除修改规则来改变规则链,具体如何修改我们将在下文进行详细介绍。

二、iptables配置

1iptables的常用命令

安装服务所需要的rpmiptables-*-i386.rpm

安装服务rpm –ivh iptables*

启动iptables服务service iptables start

关闭iptables服务service iptables stop

查看iptables服务状态service iptables status

或者通过脚本来进行启动|关闭|查看:/etc/init.d/iptables {start|stop|status}

保存当前设置到/etc/sysconfig/iptablesservice iptables save

查看当前表中规则iptables [-t 表名]–L      //如果不指定表名将以filter查看,下同

清空表中规则iptables [-t 表名] –F

删除自定义规则链iptables [-t 表名] –X

计数器归零iptables –Z

2iptables默认规则链的默认设置

iptables [-t 表名] –P 规则链 处理方式           

(注:处理方式常用有3种,丢弃,拒绝,接受允许,分别是DROP,REJECT,ACCEPT)

例:我们需要将filterINPUT规则链的默认设置为丢弃,则

iptables –t filter –P INPUT DROP

3、添加iptables规则

iptables [-t 表名] –A 规则链 –s 源地址 –d 目的地址 –dport 目的端口 –j 处理方式

例:我们接受外界PING

iptables –t filter –A INPUT –p icmp –j ACCEPT

附:iptables添加规则时所涉及的命令选项以及处理方式

添加规则的命令选项;-i  指定入口网卡,-o  指定输出网卡,-p  指定数据包协议,如TCPUDP,-s  指定源地址,-sport  指定源端口,-d  指定目的地址,-dport  指定目的端口,-j  处理方式

其中处理方式有一下几种,ACCEPT  接受数据包,DROP  丢弃数据包,REJECT  拒绝,SNAT源地址转换,DNAT  目的地址转换,MASQUERADE  IP伪装,LOG  日志功能。

三、企业常用案例

    前言:企业上一般使用脚本来配置iptables,这样方便以后修改。

1、  一台web服务器对外提供httphtp服务,禁止外来的其他访问。

脚本如下

#!/bin/bash

iptables –F

iptables –X

iptables –Z

iptables –t nat –F

iptables –t nat –X

iptables –t nat –Z

iptables –P INPUT DROP

iptables –P OUTPUT ACCEPT

iptables –P FORWARD ACCEPT

iptables –t nat –P PREROUTING ACCEPT

iptables –t nat –P POSTROUTING ACCEPT
iptables
–t nat –P OUTPUT ACCEPT

iptables –A INPUT –p tcp –-dport 80 –j ACCEPT

iptables –A INPUT –p tcp –-dport 21 –j ACCEPT

service iptables save

执行脚本,完成

2、  企业有一台linux网管,需要做NAT服务,将192.168.1.0网段的IP修改成网卡ech0IP

脚本如下

#!/bin/bash

echo "1" > /proc/sys/net/ipv4/ip_forward

modprobe ip_tables

modprobe ip_nat_ftp

modprobe ip_nat_irc

modprobe ip_conntrack

modprobe ip_conntrack_ftp

modprobe ip_conntrack_irc

iptables -F

iptables -X

iptables -Z

iptables -F -t nat

iptables -X -t nat

iptables -Z -t nat

iptables -P INPUT DROP

iptables -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -t nat -P PREROUTING ACCEPT

iptables -t nat -P POSTROUTING ACCEPT

iptables -t nat -P OUTPUT ACCEPT

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

service iptables save

执行脚本,完成