linux防火墙iptables

本文详细介绍了Linux防火墙iptables的基础知识,包括其作用、netfilter和iptables的关系、四表五链的概念及常用控制类型。此外,还讲解了iptables的配置方法,如添加、查看和修改规则,以及设置默认策略。最后,探讨了iptables规则匹配的各种方式,如通用匹配、隐含匹配和状态匹配,帮助读者深入理解iptables的使用。
摘要由CSDN通过智能技术生成

目录

一、防火墙iptables的概述

1、防火墙的作用

2、netfilter和iptables的关系

3、四表五链

4、常用的控制类型

二、配置基础iptables

1、配置格式

2、查看配置列表

3、添加规则

4、设置默认策略

三、规则匹配

1、通用匹配

2、隐含匹配

3、显示匹配

4、状态匹配


一、防火墙iptables的概述

1、防火墙的作用

netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。

2、netfilet和iptables的关系

这是第一个要说的地方,Iptables和netfilter的关系是一个很容易让人搞不清的问题。很多的知道iptables却不知道 netfilter。其实iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables。真正实现防火墙功能的是 netfilter,它是Linux内核中实现包过滤的内部结构。
 

3、四表五链

四表:

(1)raw表

确定是否对该数据包进行状态跟踪。包括两个规则链,OUTPUT,PREAUTING

(2)mangle表

修改数据包内容,用来做数据整形,给数据包设置标记。包含五个规则链,INPUT、OUTPUT、

FORWARD、PREROUTING 、POSTROUTING

(3)nat表

用来负责地址转换,用来修改数据包中的源、目标ip地址或端口。包含三个规则链,OUTPUT、

PREROUTING 、POSTROUTING

(4)filter表

负责过滤数据包,确认是否放行该数据包(过滤)包含三个规则链,INPUT、OUTPUT、FORWARD

五链:

(1)INPUT

处理入站数据包,匹配目标ip为主机的数据包

(2)OUTPUT

处理出站数据包,一般不在此链上做配置

(3)FORWARD

处理转发数据包,匹配流经本机的数据包

(4)PREROUTING

在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT,相当于把内网服务器的ip和端口映射到路由器的外网ip和端口上。

(5)POSTROUTING

   在进行路由路由选择后处理数据包,用来修改源地址,用来做SNAT,相当于内网通过路由器NAT转换功能来实现内网主机通过一个公网IP地址来上网。

4、常用的控制类型

(1)ACCEPT

允许数据包通过

(2)DROP

直接丢弃数据包,不会给出任何回应

(3)REJCET

拒绝数据包通过,会给数据发送端发送一个响应信息

(4)SNAT

修改数据包的源地址

(5)DNAT

修改数据包的目的地址

(6)MASQUERADE

伪装成非固定公网ip地址

(7)LOG

在/var/log/message文件中记录日志信息,然后将数据包传递给下一条规则,LOG只是一条辅助动作,并没有真正处理数据包。

二、配置基础iptables

1、配置格式

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

常用的管理选项

(1)-A

在指定链的末尾追加一条新的规则

(2)-I

在指定链的开头追加一条新的规则,未指定序号时默认第一条规则

(3)-R

修改、替换 指定链上的某一条规则,若为指定链名则清空表中的所有链

(4)-F

清空指定链的所有规则,若为指定链名则清空表中的所有链

(5)-L

列出指定链中的所有规则,若未指定链名则列出表中的所有链

(6)-n

使用数字形式显示出数字结果,如显示ip地址而不是主机名。

(7)-v

显示详细信息,包括每条规则的匹配包数量和匹配字节数

(8)-line--numbers

查看规则时,显示规则序号

2、查看配置列表

(1)安装软件包

[root@localhost ~]# yum -y install iptables iptables-services

(2) 查看配置列表

[root@localhost ~]# iptables -nL INPUT                #以数字形式显示INPUT链所有的规则条目(n 
                                                       和L的顺序不能倒)
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:53
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:67
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:67

(3)查看INPUT链所有的规则条目,并显示规则的序号

[root@localhost ~]# iptables -L INPUT --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
2    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
3    ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootps
4    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:bootps

3、添加规则

(1)在INPUT链的末尾追加tcp协议允许通过的规则 

[root@localhost ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT
[root@localhost ~]# iptables -L INPUT --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
2    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
3    ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootps
4    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:bootps
5    ACCEPT     tcp  --  anywhere             anywhere            

(2) 在INPUT链中的第三条插入icmp禁ping


[root@localhost ~]# iptables -t filter -L INPUT --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
2    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
3    REJECT     icmp --  anywhere             anywhere             reject-with icmp-port-unreachable
4    ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootps
5    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:bootps
6    ACCEPT     tcp  --  anywhere             anywhere            

 

4、设置默认策略

设置格式

iptables  [-t 表名]   -P 链名  控制类型

为FORWARD链设置默认规则为不允许通过

[root@localhost ~]# iptables -t filter -P FORWARD DROP    

(2) 清空规则

清空INPUT的所有规则

[root@localhost ~]# iptables -t filter -F INPUT 
[root@localhost ~]# iptables -t filter -L INPUT --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         

 删除INPUT里的第一条规则

(1)先在INPUT第一条那创建一条规则

[root@localhost ~]# iptables -t filter -A INPUT -p icmp -j ACCEPT

 (2)通过-D命令删除第一条规则

[root@localhost ~]# iptables -t filter -D INPUT 1

(3)以数字的形式打开指定链名查看删除情况

[root@localhost ~]# iptables -t filter -L INPUT --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination   

三、规则匹配

1、通用匹配

  1. 协议匹配: -p协议名 .

  2. 地址匹配: -s源地址、-d目的地址 可以是IP、网段、域名、空(任何地址)

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

       (1)拒绝指定地址禁ping

[root@localhost ~]# iptables -t filter  -s 192.168.222.100 -A INPUT -p icmp -j REJECT

2、隐含匹配

要求以特定的协议匹配作为前提,包括端口、TCP标记、ICMP类 型等条件。 端口匹配: --sport 源端口、–dport 目的端口,可以是个别端口、端口范围

允许tcp目标端口20、21通过

[root@localhost ~]# iptables -t filter -A INPUT -p tcp --dport 20:21 -j ACCEPT

3、显示匹配

要求以“-m 扩展模块” 的形式明确指出类型包括多端口、MAC地址、IP范围、数据包状态等条件
多端口匹配:-m multiport --sports 源端口列表
-m multiport --dports 目的端口列表
IP范围匹配:-m iprange --src-range IP范围
MAC地址匹配:-m mac --mac-source MAC地址
状态匹配:-m state --state 连接状态
(1)在INPUT链中追加一条规则:目的端口列表中tcp25,80,110端口允许通过

[root@localhost ~]# iptables -t filter -A INPUT -p tcp -m multiport --dports 25,80,100 -j ACCEPT

4、状态匹配

状态匹配:-m state --state 连接状态常见的连接状态:
NEw :与任何连接无关的,还没开始连接
ESTABLISHED :响应请求或者已建立连接的,连接态
RELATED:与已有连接有相关性的(如FTP主被动模式的数据连接),衍生态,一般与ESTABLISHED配合使用INVALID :不能被识别属于哪个连接或没有任何状态
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值