ipfw  ipfwadmin

ipchains ipchains

netfilter  iptables

firewall

防火墙的工作原理:防火墙工作在网络的边缘位置

netfilter/iptables

一、防火墙结构

1、防火墙的规则表

raw:跟踪

mangle:标记

nat:转换

filter:过滤

2、防火墙的规则链

INPUT:入站

OUTPUT:出站

FORWARD:转发

PREROUTING:路由前

POSTROUTING:路由后

3、表和链的对应关系

raw: PREROUTING OUTPUT

mangle: all

nat: PREROUTING OUTPUT POSTROUTING

filter: INPUT OUTPUT FORWARD

4、规则表的应用顺序

raw - mangle - nat - filter

5、规则链的应用顺序

入站数据流:

PREROUTING - INPUT

出站数据流:

OUTPUT - POSTROUTING

转发数据流:

PREROUTING - FORWARD - POSTROUTING

6、规则的应用顺序

a、从上到下依次匹配,匹配即停止(LOG除外)

b、没有匹配项时,采用默认规则(policy规则,只有ACCEPT和DROP)

 

二、防火墙规则

1、语法:

iptables -t 表名 选项 链名 条件匹配 -j 控制类型

 

注意:

不指定表名时,默认是filter表

不指定链名时,默认是所有链

除非设置默认规则,否则必须指定条件

选项、链名、控制类型必须是大写

2、选项:

-A 链尾添加

-I 链首添加

-L 查看

-n 数字形式显示地址信息

-v 显示规则详细信息

--line-number 显示规则序号

-D 删除指定规则

-F 清空所有规则

-P 设置默认规则

-X 清空自定义的链

3、控制类型

ACCEPT 接受

DROP 丢弃

REJECT 拒绝

LOG  日志

REDIRECT 重定向

4、条件匹配

-p 协议类型

-s 源地址 

-d 目标地址

-i 入站网卡

-o 出站网卡

--sport 源端口

--dport 目标端口

--icmp-type 指定icmp协议类型

 

一.SNAT

实现局域网主机共享单个公网IP地址接入Internet


 

前提条件:局域网各主机正确配置IP地址/子网掩码

    局域网各主机正确设置默认网关地址

    linux网关支持IP路由地址转发

    网关添加俩块网卡,eth0:内网网卡 eth1:外网网卡

编写SNAT转换规则 source  [sɔːs] 来源地址

#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 218.29.30.31

 

二.MASQUERADE —— 地址伪装

适用于外网IP地址非固定的情况

对于ADSL拨号连接,接口通常为 ppp0、ppp1

将SNAT规则改为MASQUERADE即可

 

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

 

三.DNAT策略的典型应用环境

在Internet中发布位于企业局域网内的服务器

 

DNAT策略的原理

目标地址转换,Destination Network Address Translation

修改数据包的目标地址


前提条件

局域网的Web服务器能够访问Internet

网关的外网IP地址有正确的DNS解析记录

Linux网关支持IP路由转发

 

实现方法

编写DNAT转换规则

 

# iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.6

 

发布时修改目标端口

在DNAT规则中以“IP:Port”的形式指定目标地址

 

# iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport  2346 -j DNAT --to-destination 192.168.1.6:22

 

保存和恢复 iptables 规则

防火墙规则只在计算机处于开启状态时才有效。如果系统被重新引导,这些规则就会自动被清除并重设。要保存规则以便今后载入,请使用以下命令:

sbin/service iptables save

保存在 /etc/sysconfig/iptables 文件中的规则会在服务启动或重新启动时(包括机器被重新引导时)被应用。

导出(备份)规则 iptables-save 工具

iptables-save > 1.ip

导入(还原)规则 iptables-restore 工具

iptables-restore < 1.ip

 


 

例子

常见的通用匹配条件

协议匹配:-p 协议名

地址匹配:-s 源地址、-d 目的地址

接口匹配:-i 入站网卡、-o 出站网卡

 

# iptables -A FORWARD -s 192.168.1.11 -j REJECT

# iptables -I INPUT -s 10.20.30.0/24 -j DROP

# iptables -I INPUT -p icmp -j DROP

# iptables -A FORWARD -p ! icmp -j ACCEPT

# iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP

# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

# iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP

 

常用的隐含匹配条件

端口匹配:--sport 源端口、--dport 目的端口

ICMP类型匹配:--icmp-type ICMP类型

 

# iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCEPT

# iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT

# iptables -A INPUT -p icmp --icmp-type 8 -j DROP

# iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT

# iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT

# iptables -A INPUT -p icmp -j DROP

 

常用的显式匹配条件

多端口匹配:-m multiport  --sport 源端口列表

                        -m multiport  --dport 目的端口列表

IP范围匹配:-m iprange --src-range IP范围

MAC地址匹配:-m mac –mac1-source MAC地址

状态匹配:-m state --state 连接状态

 

# iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT

# iptables -A FORWARD -p tcp -m iprange --src-range 192.168.4.21-192.168.4.28 -j ACCEPT

# iptables -A INPUT -m mac --mac-source 00:0c:29:c0:55:3f -j DROP

# iptables -P INPUT DROP

# iptables -I INPUT -p tcp -m multiport --dport 80 -j  ACCEPT

# iptables -I INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT