【学员笔记】LINUX随堂笔记(六) – 作者:zltjwsys

文章来源:知了堂冯老师

v2-c4c958a3e1dfbc0814708d05a49ef731_hd (1).jpg

第7章 iptables防火墙

一. iptables防火墙

1.1 netfilter

位于Linux内核中的包过滤功能体系

称为Linux防火墙的“内核态”

1.2 iptables

位于/sbin/iptables,用来管理防火墙规则的工具

称为Linux防火墙的“用户态”

上述2种称呼都可以表示Linux防火墙

1.3 iptables的表、链结构

1.3.1规则链

规则的作用:对数据包进行过滤或处理

链的作用:容纳各种防火墙规则

链的分类依据:处理数据包的不同时机

1.3.2默认包括5种规则链

INPUT:处理入站数据包

OUTPUT:处理出站数据包

FORWARD:处理转发数据包

POSTROUTING链:在进行路由选择后处理数据包

PREROUTING链:在进行路由选择前处理数据包

1.3.3规则表

表的作用:容纳各种规则链

表的划分依据:防火墙规则的作用相似

1.3.4默认包括4个规则表

raw表:确定是否对该数据包进行状态跟踪

mangle表:为数据包设置标记

nat表:修改数据包中的源、目标IP地址或端口

filter表:确定是否放行该数据包(过滤)

1.4数据包过滤的匹配流程

规则表之间的顺序:rawàmangleànatàfilter

规则链之间的顺序

入站:PREROUTINGàINPUT

出站:OUTPUTàPOSTROUTING

转发:PREROUTINGàFORWARDàPOSTROUTING

1.5规则链内的匹配顺序

按顺序依次检查,匹配即停止(LOG策略例外)

若找不到相匹配的规则,则按该链的默认策略处理

二. iptables基本语法

2.1格式

iptables [-t 表名] 选项 链名 条件 -j 控制类型

//表filter的INPUT链的开头写入拒绝(必要时会给出提示)以icmp协议的数据

例: iptables -t filter -I INPUT -p icmp -j REJECT

注意:如-t 表名不写,则默认是filter表

不指定链名时,默认指表内的所有链

除非设置链的默认策略,否则必须指定匹配条件

选项、链名、控制类型使用大写字母,其余均为小写

2.2数据包的常见控制类型

ACCEPT:允许通过

DROP:直接丢弃,不给出任何回应

REJECT:拒绝通过,必要时会给出提示

LOG:记录日志信息,然后传给下一条规则继续匹配

三. iptables的管理:

3.1添加新的规则

-A:在链的末尾追加一条规则

-I:在链的开头(或指定序号)插入一条规则(大写的i)

//表filter的INPUT链的末尾写入允许以tcp协议的数据入站规则

例: iptables -t filter -A INPUT -p tcp -j ACCEPT

//表filter的INPUT链的开头写入允许以tcp协议的数据入站规则

iptables -t filter -I INPUT -p tcp -j ACCEPT

//表filter的INPUT链的第2行写入允许以tcp协议的数据入站规则

iptables -t filter -I INPUT 2 -p tcp -j ACCEPT

3.2查看规则列表

-L:列出所有的规则条目

-n:以数字形式显示地址、端口等信息

-v:以更详细的方式显示规则信息

–line-numbers:显示规则的序号

例: iptables -nL INPUT //-nL不可调转位置

3.3删除、清空规则

-D:删除链内指定序号(或内容)的一条规则

-F:清空所有的规则

例: iptables -D INPUT 3 //删除表filter中的链INPUT中的第3条规则

iptables -t nat -F //删除表nat中的所有链的所有规则

3.4设置默认策略

-P:为指定的链设置默认规则

注意:默认策略要么是ACCEPT、要么是DROP

//表filter的默认规则是转发的数据都丢弃

例: iptables -t filter -P FORWARD DROP

3.5规则的匹配条件

3.5.1通用匹配

可直接使用,不依赖于其他条件或扩展

包括网络协议、IP地址、网络接口等条件

3.5.2隐含匹配

要求以特定的协议匹配作为前提

包括端口、TCP标记、ICMP类型等条件

3.5.3显式匹配

要求以“-m 扩展模块”的形式明确指出类型

包括多端口、MAC地址、IP范围、数据包状态等条件

3.5.4常见的通用匹配条件

协议匹配:-p 协议名

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

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

//表filter的INPUT链的开头写入丢弃以icmp协议入站的数据的规则

例: iptables -I INPUT -p icmp -j DROP

//表filter的FORWARD链末尾写入允许除了icmp协议转发的数据的规则

iptables -A FORWARD -p !icmp -j ACCEPT

//表filter的INPUT链末尾写入丢弃网卡eth1,网段1.0的入站数据规则

iptables -A INPUT -i eth1 -s 192.168.1.0/24 -j DROP

//意义同上

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

3.5.5常用的隐含匹配条件

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

TCP标记匹配:–tcp-flags 检查范围 被设置的标记

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

//链FORWARD末尾写入允许转发以udp协议,网段1.0,端口53的数据规则

例:iptables -A FORWARD -s 192.168.1.0/24 -p udp –dport 53 -j ACCEPT

//链INPUT末尾写入允许以协议tcp,端口20,21的入站数据规则

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

//链INPUT末尾写入丢弃以协议icmp,类型为8的入站数据规则,8请

求,0回显,3不可达

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

//链INPUT末尾写入丢弃以协议icmp,类型为0的入站数据规则

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

//链INPUT末尾写入丢弃以协议icmp,类型为3的入站数据规则

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

3.5.6常用的显式匹配条件

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

-m multiport –dports 目的端口列表

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

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

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

//链INPUT开头写入允许以tcp协议,多端口(此处只有一个)80的入站数据规则

例:iptables -I INPUT -p tcp -m multiport –dport 80 -j ACCEPT

//链INPUT开头写入允许以tcp协议,连接状态ESTABLISHED,RELATED的入站数据规则

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

//链INPUT末尾写入允许以tcp协议,多端口25,80,110,143的入站数据规则

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

//链RORWARD末尾写入默认允许以tcp协议,地址范围4.21-4.28的入站数据规则

iptables -A FORWARD -p tcp -m iprange –src-range 192.168.4.21-192.168.4.28

-j ACCEPT

//链INPUT末尾写入丢弃来自mack地址为00:0c:29:c0:55:3f的入站数据规则

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

四. SNAT策略

应用环境:局域网主机共享单个公网IP地址接入Internet

原理:源地址转换,修改数据包的源地址

4.1条件

局域网各主机正确设置IP地址/子网掩码

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

Linux网关支持IP路由转发

v2-e5eb2d4a4a215343760e8e5e4f997f80_hd.j

4.2写SNAT转换规则

//表nat的链POSTROUTING末尾写入以SNAT策略把源网段1.0的经出站

网卡eth1出去的地址转成目标地址2.39出去的规则(转换内网的地址)

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT –to-source 192.168.2.39

//192.168.1.0/24:内网网段

//eth1:外网接口的名称

//192.168.2.39:外网接口的IP地址

4.3验证SNAT结果

在局域网主机 192.168.1.40 中能够访问外网的Web服务器192.168.2.40

查看Web主机 192.168.1.40 的访问日志,记录的来访者应是网关主机的外网IP地址 192.168.2.39。也可用客户端ping服务端,看是否通

五. DNAT策略

应用环境:在Internet中发布位于企业局域网内的服务器

原理:目标地址转换,修改数据包的目标地址

5.1条件

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

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

Linux网关支持IP路由转发

v2-117ef95569f30fbd24ab00019b1cedeb_hd.j

5.2写DNAT转换规则

//表nat的链PREROUTING末尾写入以DNAT策略把以tcp协议,端口:80,目标地址2.39

经入站网卡eth0来的转成源地址1.40的规则(转换的外网Internet地址)

iptables -t nat -A PREROUTING -i eth0 -d 192.168.2.39 -p tcp –dport 80 -j DNAT

–to-destination 192.168.1.40

//192.168.2.39:外网接口的IP地址

//80:发布的服务端口

//192.168.1.46:Web:防火墙的内网IP地址

5.3验证DNAT结果

在外网客户机 192.168.2.40 中能够访问位于企业内网的Web服务,访问地址为

http://192.168.2.39

查看Web服务器 192.168.1.40 的访问日志,记录了外网客户机的IP地址192.168.2.40,

也可用外网客户机ping内网web服务机,看是否通

5.4发布时修改目标端口

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

//表nat的链PREROUTING末尾写入以DNAT策略把以tcp协议,端口:2346,目标地址2.39

经入站网卡eth0来的地址转成源地址1.40,端口:22的规则(端口也改变)

iptables -t nat -A PREROUTING -i eth1 -d 192.168.2.39 -p tcp –dport 2346 -j DNAT

–to-destination 192.168.1.46:22

//2346:访问的目标端口

//22:实际提供服务的端口

———————————————–end———————————————

大家还有什么想了解的都可以通过评论或者私信告诉小编哦~

v2-be7b3a919d240f369cef3d85db776fa7_hd.j

来源:freebuf.com 2019-11-19 14:09:35 by: zltjwsys

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论