linux 防火墙管理-iptables

Linux 防火墙IPTables的 表、链、规则基础

iptables 包含多个表,表包含多个链(链可以是内置的或用户定义的),一种链又可以存放在不同的表中,链中可能包含多个规则(规则是为数据包定义的),四表五链。所以,iptables有这几个概念 , Tables、Chains、Rules。

IPTABLES 表概念

IPTables 有以下 4 个内置表。
filter表:负责过滤数据包。
nat表:用于网络地址转换。
mangle表:修改数据包中的内容,例如服务类型、TTL、QOS等等。
raw表:决定数据包是否被状态跟踪机制处理。

Iptables五种链的概念

Iptables有五种不同的链,分别是INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING。

INPUT:从外界进入防火墙的数据包会应用此规则链中的策略。
OUTPUT:当前服务器从防火墙外出的数据表会应用此规则链中的策略。
FORWARD:转发数据包时会应用此规则链中的策略。
PREROUTING:主机外的报文要进入防火墙,所有的数据包进来的时候都会由PREROUTING链进行处理。
POSTROUTING:主机内的报文要从防火墙出去,需要经过POSTROUTING链进行处理。

Iptables中表和链的关系

rawmanglenatfilter
INPUT+++
OUTPUT++++
FORWARD++
PREROUTING+++
POSTROUTING++

IPTABLES 规则

以下是 iptables 规则要记住的要点。

  • 规则包含一个标准和一个目标。
  • 如果条件匹配,则转到目标中指定的规则(或)执行目标中提到的特殊值。
  • 如果条件不匹配,则继续执行下一条规则。

对Iptables防火墙的一些简单操作

systemctl list-unit-files |grep iptables  #查看是否安装了iptables防火墙
systemctl status iptables #查看防火墙状态

启动iptables服务

systemctl start iptables

重启iptables服务

systemctl restart iptables
service iptables restart  

关闭iptables防火墙

service iptables stop
systemctl stop iptables

开机启动防火墙

chkconfig iptables on #开机启动iptables

开机不启动防火墙

chkconfig iptables off #永久关闭iptables

查看或清除规则

iptables -F #清除现有规则
​iptables -t 表名 -F 链名 #清空规则F

对Iptables防火墙规则的查看方法

如果您执行 iptables --list (或) iptables -L,您将看到系统上所有可用的防火墙规则。如果防火墙没有开启,显示默认输入表,带有默认输入链、前向链和输出链。

[root@MiWiFi-R4AC-srv ~]# iptables -t filter --list #执行该操作以查看filter表
[root@MiWiFi-R4AC-srv ~]# iptables -t mangle --list #执行该操作以查看mangle表
[root@MiWiFi-R4AC-srv ~]# iptables -t nat --list #执行该操作以查看nat表
[root@MiWiFi-R4AC-srv ~]# iptables -t raw --list #执行该操作以查看raw表

注意:如果不指定 -t 选项,它将显示默认过滤器表。因此,以下两个命令是相同的

 iptables -t filter --list
(or)
iptables --list

下面的 iptable 示例显示了在过滤表的输入、转发和输出链中定义了一些规则。

iptables --list
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination
1    RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 255
3    ACCEPT     esp  --  0.0.0.0/0            0.0.0.0/0
4    ACCEPT     ah   --  0.0.0.0/0            0.0.0.0/0
5    ACCEPT     udp  --  0.0.0.0/0            224.0.0.251         udp dpt:5353
6    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:631
7    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:631
8    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
9    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
10   REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

iptables --list 命令输出中的规则包含以下字段:

  • num - 特定链中的规则编号
  • target – 我们上面讨论的特殊目标变量
  • prot - 协议。tcp、udp、icmp等,
  • opt –该特定规则的特殊选项
  • source – 数据包的源 IP 地址
  • destination-目的地 - 数据包的目的地 IP 地址

修改iptables规则的方法

iptables操作的一些参数

选项用法
-A在指定链路末尾追加一条规则,如:iptables-A INPUT(操作)
-I(大写)在指定链中的头部加入一条规则,如:iptables -I INPUT (操作)
-P(大写)指定默认规则,如:iptables -P OUTPUT ACCEPT(操作)
-D删除指定规则 iptables -t nat -D INPUT (操作)
-R修改、替换一条规则 iptables -t nat -R INPUT()操作)
-L查看 iptables-tnat-L(查看)
-n有字段以数字形式显示,如: iptables -L -n,iptables -nL,iptables -vnL (查看)
-v查看时显示更详细信息
–line-number规则带编号,如: iptables -t nat -L -n --line-number /iptables -t nat -L–line-number
-F清除链中所有规则 iptables -F
-X清空自定义链的规则,不影响其它链 iptables -X
-Z清空链的计数器(匹配到的数据包的大小和总和) iptables -Z
-S看链的所有规则或者某个链的规则/某个具体规则后面跟编号 iptables -t nat -S,iptables -t nat -S POSTROUTING 1
-jACCEPT/DROP/REJECT
-m iprange --src-rangeIP范围匹配: -m iprange --src-range IP范围
-m mac --mac-sourceMAC地址匹配: -m mac --mac-source MAC地址
-I num在规则链的头部加入新规则
-D num删除某一条规则
-s匹配来源地址IP/MASK,加叹号“!”表示除这个IP外
-d匹配目标地址
-i网卡名称匹配从这块网卡流入的数据
-o网卡名称匹配从这块网卡流出的数据
-p匹配协议,如TCP、UDP、ICMP
–dport num匹配目标端口号
–sport num匹配来源端口号

目标值列表

控制类型作用
ACCEPT允许数据包通过accret
DROP直接丢弃数据包,不给出任何回应消息dorp
REJECT拒绝数据包通过,会给数据发送端一个响应信息reject
SNAT源地址转换,根据指定条件修改数据包的源IP地址,通常被叫做源映射。
DNAT修改数据包的目的地址
MASQUERADE伪装成一个非固定公网IP地址masquerand
LOG在/var/log/messages中记录日志信息,然后将数据包传递给下一条规则log

添加iptables则的步骤如下

命令行操作:
(1)使用命令"iptables-L"查看现有的链;
(2)使用命令"iptables-A [chain_name]-p [protocol] --dport[destination_port]-j ACCEPT"添加新规则;
例如:iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
(3)使用命令"iptables-L"确认添加的规则生效;
(4)使用命令"iptables-S"保存规则;
(5)重启iptables务,使添加的规则永久有效

修改配置文件操作:
/etc/sysconfig/iptables

实例:修改3080端口tcp协议转发的命令

echo "1" > /proc/sys/net/ipv4/ip_forward    #启用IPV4转发
iptables -F -t filter   #清空filter表,以防止本来有规则影响后面的操作
iptables -F -t nat   #清空nat表,以防止本来有规则影响后面的操作
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 3080 -j DNAT --to-destination IP1:3080 #修改nat表的PREROUTING连3080端口的目的地址为IP1:3080
iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 3080 -j SNAT --to-source IP2 #修改nat表POSTROUTING连3080端口原地址为IP2
service iptables save  #保存修改
service iptables restart #重启服务使之生效

实例:设置固定网段的可以访问22端口

[root@linux ~]# iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j  ACCEPT #将INPUT规则链设置为只允许指定网段的主机访问本机的22端口
 [root@linux ~]# iptables -A INPUT -p tcp --dport 22 -j REJECT 将INPUT规则链设置为只允许指定网段的主机访问本机的22端口

实例:向INPUT规则链中添加拒绝192.168.10.5主机访问本机80端口(Web服务)的策略规则:

[root@linux ~] # iptables -I INPUT -p tcp -s 192.168.10.5 --dport 80 -j REJECT

学习中参考诸多文档,不一一列举,感谢:
https://blog.csdn.net/weixin_43554927/article/details/125809342
https://blog.csdn.net/weixin_44953658/article/details/125671469
https://jiangxl.blog.csdn.net/article/details/125671469
https://bbs.huaweicloud.com/blogs/300668?utm_source=juejin&utm_medium=bbs-ex&utm_campaign=other&utm_content=content
https://blog.csdn.net/qq_16116881/article/details/125514524

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值