当前位置: 当前位置:首页 >域名 >iptables防火墙简介及安装与使用! 正文

iptables防火墙简介及安装与使用!

2025-11-04 07:39:43 来源:多维IT资讯作者:IT科技 点击:207次

  iptables是防火Linux 防火墙工作在用户空间的管理工具,是墙简 netfilter/iptablesIP 信息包过滤系统是一部分,用来设置、介及维护和检查 Linux 内核的安装 IP 数据包过滤规则

  | iptables特点

  iptables 是基于内核的防火墙,功能非常强大

  iptables 内置了filter,使用nat和mangle三张表

  所有规则配置后,防火立即生效,墙简不需要重启服务

  iptables 组成

  iptables的介及结构是由表(tables)组成,而tables是安装由链组成,链又是使用由具体的规则组成

  因此我们在编写iptables规则时,要先指定表,防火再指定链

  tables的墙简作用是区分不同功能的规则,并且存储这些规则

  注意:raw表:用于处理异常,介及包括的安装规则链有:prerouting,output;一般使用不到

  总体说来,使用iptables是由“三表五链”组成

  | 三张表介绍

  filter:负责过滤数据包,包括的WordPress模板规则链有:input,output和forward   nat:用于网络地址转换(IP、端口),包括的规则链有:prerouting,postrouting 和 output   mangle:主要应用在修改数据包、流量整形、给数据包打标识,默认的规则链有:INPUT,OUTPUT

  | 五条链介绍

  input:匹配目标IP是本机的数据包   output:出口数据包 , 一般不在此链上做配置   forward:匹配流经本机的数据包   prerouting:修改目的地址,用来做 DNAT 。如:把内网中的 80 端口映射到互联网端口   postrouting:修改源地址,用来做 SNAT。如:局域网共享一个公网IP接入Internet

  iptables 处理数据包流程

  当一个数据包进入网卡时,它首先进入PREROUTING 链,内核根据数据包目的 IP 判断是否需要转送出去;   如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链;   数据包到了INPUT链后,任何进程都会收到它;   本机上运行的程序可以发送数据包,这些数据包会经过 OUTPUT链,然后到达POSTROUTING链输出;   如果数据包是云服务器提供商要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出;

  总结:整体数据包分两类:

  发给防火墙本身的数据包   需要经过防火墙的数据包

  iptables 安装

  | 关闭 firewall 防火墙

# 关闭firewalld服务 systemctl stop firewalld # 禁止firewalld开机自启动 systemctl disable firewalld

  | 安装 iptables

yum -y install iptables-services

  | 启动服务

# 启动iptables systemctl start iptables # 设置iptables开机自启动 systemctl start iptables

  | 配置文件

# rpm -ql iptables-services /etc/sysconfig/iptables # iptables的配置文件

  iptables 常用命令选项

  | 关闭 firewall 防火墙

  iptables 命令基本语法

iptables [-t table] command [链名] [条件匹配] [-j 目标动作]

  | -t table

  用来指明使用的表,有三种选项: filter,nat,mangle。若未指定,则默认使用filter表

  | command参数

  指定iptables 对我们提交的规则要做什么样的操作,以下是command常用参数:

  -A:Append,追加一条规则(放到所有规则的最后)

# 举例:拒绝所有人访问服务器(作为最后一条规则) # 若未 -t 指定表,默认使用filter表 iptables -A INPUT -j DROP

  -I:Insert,在指定的位置插入规则

# 举例:允许10.0.0.10主机访问本机 # 在 filter 表的 INPUT 链插入成第2条规则 iptables -I INPUT 2 -s 10.0.0.10 -j ACCEPT

  -L:List,查看规则列表

  具体参数:

# 举例: iptables -nxvL --line-number

  -D:Delete,从规则列表中删除规则

# 举例:删除 filter 表 INPUT 链中的第 2 条规则 iptables -D INPUT 2

  -P:Policy,设置某个链的默认规则

  当数据包没有被任何规则匹配时,则按默认规则处理

# 举例:设置 filter 表 INPUT 链的默认规则是 DROP iptables -P INPUT DROP

  -F:Flush,云南idc服务商清空规则

  注意:-F 是清空链中规则,但并不影响 -P 设置的默认规则

  因此在生产环境中,若指定默认规则为DROP,一旦执行iptables -F,很容易导致自己也无法连接服务器

  (-F 会把配置的明细ACCEPT规则删除,只留下默认规则拒接所有)

iptables -F INPUT # 清空filter 表中INPUT链上的规则 iptables -F # 清空filter 表中所有链上的规则 iptables -t nat -F PREROUTING # 清空NAT表中PREROUTING链上的规则 iptables -t nat -F # 清空NAT表中所有链上的规则

  -Z:zero,将指定链的所有计数器归零。(如未指定,则认为是所有链)

# 举例:清除filter表INPUT链上的计数器 iptables -Z INPUT

  | 条件匹配参数

  按网络接口匹配

  -i:匹配数据进入的网络接口,此参数主要应用nat表,例如目标地址转换

  -o:匹配数据流出的网络接口

# 举例:-i eth0 匹配从网络接口eth0进来的数据包 # 禁止来自 10.0.0.101 的访问 iptables -I INPUT -p tcp -s 10.0.0.101 -i eth0 -j DROP # 举例:-o eth1 匹配从eth1流出的数据包 # 禁止访问 10.0.0.101 iptables -A OUTPUT -d 10.0.0.101 -o eth0 -j DROP

  按源及目的地址匹配

  -s:匹配源地址,可以是IP、网段、域名,也可空(代表任何地址)

  -d:匹配目标地址

# -s 参数举例:拒绝10.0.0.10主机访问本机 iptables -A INPUT -s 10.0.0.10 -j DROP # -d 参数举例:禁止本机访问 www.baidu.com iptables -A OUTPUT -d www.baidu.com -j DROP

  按协议类型匹配

  -p:匹配协议类型,可以是TCP、UDP、ICMP等

# 举例:禁止10.0.0.10主机ping通本机 iptables -A INPUT -s 10.0.0.10 -p icmp -j DROP

  按源及目的端口匹配

  --sport:匹配源端口;可以是单个端口,也可以是端口范围

  --dport:匹配目的端口

  注意:--sport 和 --dport 必须配合 -p 参数使用

# 举例:禁止外部数据访问80端口 iptables -A INPUT -p tcp --dport 80 -j DROP # 举例:禁止内部数据访问外部的22到25端口 iptables -A INPUT -p tcp --sport 22:25 -j DROP

  | 目的动作

  -j ACCEPT:允许数据包通过本链而不拦截它

# 举例:允许所有访问本机的数据包通过 iptables -A INPUT -j ACCEPT

  -j DROP:丢弃数据包;阻止数据包通过本链

# 举例:阻止来自10.0.0.10 的数据包通过本机 iptables -A FORWARD -s 10.0.0.10 -j DROP

  -j SNAT:源地址转换,支持转换为单IP,也支持转换到IP地址池

# 举例:将内网 172.16.1.0/24 转换为外网 10.0.0.7 地址;SNAT,用于访问互联网 iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to 10.0.0.7

  -j DNAT:目的地址转换,支持转换为单IP,也支持转换到IP地址池

# 举例:把从eth0口进来访问TCP/80端口的数据包目的地址改成10.0.0.101 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 10.0.0.101

  -j MASQUERADE:动态SNAT转换(适用于动态 IP 场景 )

# 举例:将源地址是 10.0.0.0/24 的数据包进行地址伪装,转换成 eth0 上的 IP 地址 iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE

  iptables 常用附加模块

  | 按包状态匹配 (state)

-m state --state 状态 # 举例:将目前已运行的服务端口全部放行 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

  | 按来源 MAC 匹配(mac)

-m mac --mac-source MAC # 举例:拒绝来自9F:FD:87:1F:4E:53 MAC 地址的数据包进入本机 iptables -A INPUT -m mac --mac-source 9F:FD:87:1F:4E:53 -j DROP

  | 按包速率匹配 (limit)

  limit 英语上看是限制的意思,但实际上只是按一定速率去匹配而已,50/s 表示 1 秒中转发 50 个数据包,要想限制的话后面要再跟一条DROP规则

-m limit --limit 匹配速率 # 举例: iptables -A FORWARD -d 192.168.1.1 -m limit --limit 50/s -j ACCEPT iptables -A FORWARD -d 192.168.1.1 -j DROP

  | 多端口匹配(multiport)

  注意:该参数必须与 -p 参数一起使用

  -m multiport <--sports|--dports|--ports> 端口 1[,端口 2,..,端口 n]

# 举例:允许访问本机TCP/22,53,80,443端口 iptables -A INPUT -p tcp -m multiport --dports 22,53,80,443 -j ACCEPT

  iptables 规则备份和恢复

  我们执行 iptables 命令时,规则只是保存在内存中,并没有保存到某一个文件中

  因此系统重启之后,之前设定的规则就没有了,所以规则设定完毕,检查无误后要及时保存规则,使用命令:

service iptables save

  会看到提示,防火墙规则保存在/etc/sysconfig/iptables 文件内,这个文件就是iptables的配置文件

  所以如果要备份防火墙规则,复制该配置文件即可,例如:

cp /etc/sysconfig/iptables /opt/myipt.rule

  如果需要恢复这些规则,使用以下命令:

  文件即可,例如:

iptables-restore < /opt/myipt.rule service iptables save
作者:人工智能
------分隔线----------------------------
头条新闻
图片新闻
新闻排行榜