当前位置:   article > 正文

08-linux网络管理-iptables基础(四表五链、禁止ping、防火墙规则添加/删除、自建链使用、SNAT\DNAT模式、FTP服务器防火墙规则、防火墙规则备份)_iptables删除dnat

iptables删除dnat

1. 概述

1.1 四表

应用顺序:由上至下

  • raw:对连接做追踪
  • mangle:对数据包做修改,如给数据包打标记
  • nat :修改数据包地址
  • filter:对数据包过滤

1.2 五链

  • INPUT:针对目标地址
  • OUTPUT:针对源地址
  • FORWARD:穿过防火墙
  • PREROUTING:路由前过滤
  • POSTROUTING:路由后过滤

1.3 四表五链的关系

支持的链
rawPREROUTING、OUTPUT
manglePREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
natPREROUTING、POSTROUTING、OUTPUT
fIlterINPUT、OUTPUT、FORWARD

1.4 使用流程

2. 语法和操作

1.1 语法

iptables [-t 要操作的表]  <操作命令>  [要操作的链] [规则号码] [匹配条件] [-j 匹配后的动作]
#             小写          大写          大写          		  小写            大写
  • 1
  • 2

1.2 常用操作命令

  • -L:查看,v详细,n不反解
  • -A:追加,放置最后一条
  • -I :插入,默认插入成第一条(第一条生效后不会考虑后边规则
  • -D:删除
  • -F:清空flush
  • -X:删除空的自定义链
  • -P:设置默认策略
  • -Z :计数器归零
  • -N:建立自定义链

1.3 基本匹配条件

  • -s 192.168.2.0/24:源地址
  • -d 192.168.2.1:目标地址
  • -p tcp|upd|icmp:协议
  • -i eth0:input 从eth0接口进入的数据包
  • -o eth0:output 从eth0出去的数据包
  • -p tcp --sport 80:源端口是80的数据包
  • -p tcp --dport 80:目标端口是80

1.4 基本动作

  • filter表
    • -j ACCEPT:接受
    • -j REJECT:拒绝
    • -j DROP:丢弃
    • -j LOG :记录日志

DROP和REJECT的区别:

  • REJECT :直接拒绝链接,和客户端断开。更适合可控网络。
  • DROP:丢弃——意味着不予回复,客户端只能等超时。更适合服务器安全和面对攻击。
  • nat表
    • -j SNAT:源地址转换
    • -j DNAT:目标地址转换
    • -j MASQUERADE:伪装
    • -j REDIRECT:端口转换
  • mangle表
    • -j MARK:标记

1.5 常用命令示例

- 设置默认值

设置默认值,禁止所有穿过防火墙

iptables -P FORWARD DROP
  • 1

- 禁止80端口访问

iptables -I INPUT -p tcp --dport 80 -j DROP
  • 1

- 查看防火墙规则

  • 默认查看nat表
iptables -nvL
  • 1
  • 查看fileter表
iptables -t filter -nvL
  • 1
  • 查看防火墙规则编号
iptables -nL --line-number
  • 1

- 保存规则

  • 命令
service iptables save
  • 1
  • 规则保存位置

该命令会把防火墙规则保存在/etc/sysconfig/iptables文件中

[root@liubei-02 ~]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.21 on Tue Jan 10 16:06:09 2023
*mangle
:PREROUTING ACCEPT [31154:2463094]
:INPUT ACCEPT [10892:1355724]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [15203:10068473]
:POSTROUTING ACCEPT [15203:10068473]
COMMIT
# Completed on Tue Jan 10 16:06:09 2023
# Generated by iptables-save v1.4.21 on Tue Jan 10 16:06:09 2023
*raw
:PREROUTING ACCEPT [31154:2463094]
:OUTPUT ACCEPT [15203:10068473]
COMMIT
# Completed on Tue Jan 10 16:06:09 2023
# Generated by iptables-save v1.4.21 on Tue Jan 10 16:06:09 2023
*filter
:INPUT ACCEPT [5015:664817]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [7751:5368662]
-A INPUT -p tcp -m tcp --sport 80 -j DROP
COMMIT
# Completed on Tue Jan 10 16:06:09 2023
# Generated by iptables-save v1.4.21 on Tue Jan 10 16:06:09 2023
*nat
:PREROUTING ACCEPT [20546:1128148]
:INPUT ACCEPT [235:18006]
:OUTPUT ACCEPT [1055:72144]
:POSTROUTING ACCEPT [1055:72144]
COMMIT
# Completed on Tue Jan 10 16:06:09 2023
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

如上可见:

  • *mangle:表明
  • :INPUT ACCEPT [5015:664817] :这种是默认规则
  • -A INPUT -p tcp -m tcp --sport 80 -j DROP:这种是我们在每个表下加的规则

- 允许ssh

iptables -I INPUT -p tcp --dport 22 -j ACCEPT
  • 1

- 禁止ping

  • 禁止ping其他服务器
iptables -t filter -I INPUT -p icmp -m icmp --icmp-type echo-reply -j REJECT
  • 1

iptables -t filter -I INPUT -p icmp -m icmp --icmp-type 0 -j REJECT
  • 1
  • 禁止其他服务器ping本机
iptables -t filter -I INPUT -p icmp -m icmp --icmp-type echo-request -j REJECT
  • 1

iptables -t filter -I INPUT -p icmp -m icmp --icmp-type 8 -j REJECT
  • 1

- 删除规则

iptables -D CHAIN_NAME N
  • 1

N为规则编号。

- 清除规则(不包括默认规则)

iptables -F
  • 1

- 新建自定义链

iptables -N MYCHAIN
  • 1

- 删除空的自定义链

iptables -X MYCHAIN
  • 1

- 端口转发

访问本机100端口转发至本机80端口

iptables -t nat -I PREROUTEING -p tcp --dport 100 -j REDIRECT --to-port 80
  • 1

3. 完整示例

3.1 创建和删除规则

  • 查看规则
[root@liubei-02 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

如上可见,当初没有任何规则。

  • 添加一条规则
iptables -I INPUT -p tcp --dport 80 -j DROP
  • 1
  • 查看添加结果
[root@liubei-02 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       tcp  --  anywhere             anywhere             tcp dpt:http

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

如上可见,nat表中多了一条记录

  • 保存iptables规则
[root@liubei-02 ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  确定  ]
  • 1
  • 2

如上可见,规则保存在/etc/sysconfig/iptables

  • 查看保存文件
# Generated by iptables-save v1.4.21 on Tue Jan 10 17:22:38 2023
*mangle
:PREROUTING ACCEPT [1960:156458]
:INPUT ACCEPT [675:88821]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [961:649865]
:POSTROUTING ACCEPT [961:649865]
COMMIT
# Completed on Tue Jan 10 17:22:38 2023
# Generated by iptables-save v1.4.21 on Tue Jan 10 17:22:38 2023
*raw
:PREROUTING ACCEPT [1960:156458]
:OUTPUT ACCEPT [961:649865]
COMMIT
# Completed on Tue Jan 10 17:22:38 2023
# Generated by iptables-save v1.4.21 on Tue Jan 10 17:22:38 2023
*filter
:INPUT ACCEPT [312:38483]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [457:343983]
-A INPUT -p tcp -m tcp --dport 80 -j DROP
COMMIT
# Completed on Tue Jan 10 17:22:38 2023
# Generated by iptables-save v1.4.21 on Tue Jan 10 17:22:38 2023
*nat
:PREROUTING ACCEPT [1300:68667]
:INPUT ACCEPT [15:1030]
:OUTPUT ACCEPT [77:5220]
:POSTROUTING ACCEPT [77:5220]
COMMIT
# Completed on Tue Jan 10 17:22:38 2023

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

如上可见,我们创建的规则被保存在文件中。

  • 删除一条规则

先查看规则的编号

[root@liubei-02 ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80

Chain FORWARD (policy DROP)
num  target     prot opt source               destination

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

如上可见,我们刚才创建的规则是natINPUT链中编号为1的规则

删除规则

[root@liubei-02 ~]# iptables -D INPUT 1
  • 1

默认是nat表,因此我们不用写 -t nat

  • 查看删除结果
[root@liubei-02 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

如上可见,之前创建的规则被删除了。

3.2 创建新链并应用

要求:使用新建的MYCHAIN创建允许80端口访问的规则

  • 为了演示效果,INPUT链拒绝一切请求
[root@liubei-02 ~]# iptables -I INPUT -p tcp --dport 80 -j DROP
  • 1
  • 创建MYCHAIN链
[root@liubei-02 ~]# iptables -N MYCHAIN
  • 1
  • 目标地址是本机地址且目标端口是80端口的请求全部交给MYCHAIN链处理
[root@liubei-02 ~]# iptables -I INPUT  -p tcp --dport 80 -d 10.10.239.32 -j MYCHAIN
  • 1
  • 设置MYCHAIN链的端口允许通过。
[root@liubei-02 ~]# iptables -I MYCHAIN -p tcp --dport 80 -j ACCEPT
  • 1

测试一下,此时80端口可以访问了。

  • 查看规则
[root@liubei-02 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
MYCHAIN    tcp  --  anywhere             liubei-02            tcp dpt:http
DROP       tcp  --  anywhere             anywhere             tcp dpt:http

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain MYCHAIN (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

如上可见

  • INPUT链中添加了一个拒绝规则,添加了一条规则转发的规则
  • 多了一个MYCHAIN链,下边有一条允许80端口通过规则。

3.3 SNAT模式

作用:内网客户端访问公网

  • 环境
内网路由公网
clientLAN:192.168.1.1--------WAN:10.10.239.32web:10.252.96249
iptables -t nat -I  POSTROUTING -s 10.252.96.0/24  -p tcp -j SNAT --to 10.10.239.32
  • 1

理解路由后过滤,在请求出路由的时候把请求的源地址改成路由本机,使得web可以返回给路由。

3.3 DNAT模式

作用:公网访问内网

  • 环境:
内网路由公网
web:192.168.1.110LAN:192.168.1.1,WAN 10.10.239.3client
  • 添加规则:
iptables -t nat -I PREROUTING -d 10.10.239.32 -p tcp --dport 80  -j DNAT --to 192.168.1.110
  • 1

理解路由前过滤:请求目标是路由地址,在进入路由前被修改,否则将直接被路由本机接收。

如果转发端口不同

路由8080端口转发至内网web服务器8080端口

iptables -t nat -I PREROUTING -d 10.10.239.32 -p tcp --dport 8080  -j DNAT --to 192.168.1.110:80
  • 1

3.4 FTP服务器防火墙规则

iptables -A INPUT -p tcp --dport 20 -j ACCEPT      	 # 开放FTP主动数据端口			       
iptables -A INPUT -p tcp --dport 21 -j ACCEPT		 # 对外开放FTP控制端口
iptables -A INPUT -p tcp --dport 50000:60000 -j ACCEPT	   # 对外开放FTP数据端口
iptables -A INPUT -j REJECT
  • 1
  • 2
  • 3
  • 4

3.5 规则备份与恢复

  • 备份:
iptables-save > /etc/iptables-script
  • 1
  • 恢复
iptables-restore < /etc/iptables-script
  • 1
  • 开机执行
    将恢复命令写入/etc/rc.local
    注意:/etc/rc.local需要执行权限。

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号