Linux学习笔记:iptables命令管理

1、iptables简介

其实iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables。真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构。

语法格式:iptables [-t table] COMMAND [chain] CRETIRIA -j ACTION

  • -t:指定需要维护的防火墙规则表 filter、nat、mangle或raw。在不使用 -t 时则默认使用 filter 表。
  • COMMAND:子命令,定义对规则的管理。
  • chain:指明链表。
  • CRETIRIA:匹配参数。
  • ACTION:触发动作。

“四表五链”:

1. filter表——三个链:INPUT、FORWARD、OUTPUT

作用:过滤数据包 内核模块:iptables_filter

2. nat表——四个链:PREROUTING、POSTROUTING、OUTPUT、INPUT

作用:用于网络地址转换(IP、端口) 内核模块:iptable_nat

3. mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD

作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS内核模块:iptable_mangle

4. raw表——两个链:OUTPUT、PREROUTING

作用:决定数据包是否被状态跟踪机制处理 内核模块:iptable_raw

5. security表——三个链:INPUT、FORWARD、OUTPUT

作用:强制访问控制(MAC)网络规则

各种报文的流向:

1、流入本机:PREROUTING-->INPUT-->用户空间进程

2、流出本机:用户空间进程-->OUTPUT-->POSTROUTING

3、转发:PREROUTING-->FORWARD-->POSTROUTING

规则表之间的优先顺序:raw > mangle > nat > filter

参考来自:Linux iptables命令详解-CSDN博客

iptables全面详解(图文并茂含命令指南)_iptables命令详解-CSDN博客


2、NAT表

IPtables中可以灵活的做各种网络地址转换(NAT),网络地址转换主要有两种:SNAT和DNAT。

在路由模式下,包从路由器的lan侧出去的时候,会经过nat表的POSTROUTING链,去做SNAT,然后才能发送至外网。MASQUERADE的作用是,从服务器的网卡上,自动获取当前ip地址来做NAT。

参考来自:Linux防火墙配置工具iptables中MASQUERADE的含义_iptables masquerade-CSDN博客(总结版)

iptable端口重定向 MASQUERADE[通俗易懂]-腾讯云开发者社区-腾讯云 (tencent.com)(详细版)

使用iptables进行反向代理(将80端口重定向到8080端口):
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080


3、Filter表

动作区别:iptables drop与reject 的区别-CSDN博客,里面还提及了用tcpdump抓包、time nmap查看端口耗时。

nc可以监听端口,还可以像telnet一样查看某IP的端口是否可用。

iptables 之 REJECT 与 DROP 对比_iptables drop reject-CSDN博客


4、具体操作

首先安装:yum install iptables-services

注意:iptables-services 和 iptables 是不一样的,iptables 一般自带会有,但是安装了 services 才有/etc/sysconfig/iptables。

1、查看所有规则

 以排序方式列出,可以看见行号

[root@centos7 ~]# iptables -L --line-number

cat  /etc/sysconfig/iptables-config

iptables --list

iptables -nvL或iptables -L 

2、替换某条规则,需要用到这个行号

3、删除规则,需要用到这个行号

[root@centos7 ~]# iptables -D INPUT 1 -s 10.7.0.0/16 -p icmp -j REJECT

[root@centos7 ~]# iptables -D INPUT 1

有时需要删除的规则较长,删除时需要写一大串的代码,这样比较容易写错,这时可以先使用 -line-number 找出该条规则的行号,再通过行号删除规则。

这里尝试了一下好像-s是删不掉的,还是直接使用行号删除吧。

4、添加规则

使用 -A 选项添加防火墙规则会将该规则追加到整个链的最后,而使用 -I 选项添加的防火墙规则则会默认插入到链中作为第一条规则。

允许源IP地址为192.168.0.0/24网段的包流进(这里没有加-p,就包括了所有的协议。这里也可以指定单个IP)

[root@centos7 ~]# iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
5、调整规则顺序

可以在添加规则时,指定新增规则的编号,这样我们就能在任意位置插入规则了,只需要把刚才的命令稍作修改即可,这里举例子示范了一下:

仍然使用-I选项进行插入规则操作,-I INPUT 2表示在INPUT链中新增规则,新增的规则的编号为2。

6、列出XX表的规则内容

iptables-save -t nat

iptables-save -t filter

iptables -t nat --list

7、清空规则

清空所有的规则:iptables -F

清空所有自定义的规则链:iptables -X

清空指定链 INPUT 上面的所有规则:iptables -F INPUT

清除iptables nat表规则:iptables -F -t nat

详细版参考:linux之iptables基础_iptables代理-CSDN博客


5、使规则永久生效

当你删除、添加规则后,这些更改并不能永久生效,这些规则很有可能在系统重启后恢复原样。为了让配置永久生效,根据平台的不同,具体操作也不同。下面进行简单介绍:

1、保存现有的规则

保存在默认文件夹中(保存防火墙规则):# iptables-save > /etc/sysconfig/iptables

【CentOS 7 系统中防火墙规则默认保存在 /etc/sysconfig/iptables 文件中】

保存在其他位置(备份防火墙规则):# iptables-save > 文件名称

2、保存iptables规则

iptables-save 

service iptables save

注意:可以修改/etc/sysconfig/iptables-config 将里面的IPTABLES_SAVE_ON_STOP=”no”, 这一句的”no”改为”yes”这样每次服务在停止之前会自动将现有的规则保存在 /etc/sysconfig/iptables 这个文件中去。】

3、重启iptables服务

systemctl restart iptables

  • 23
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值