目录

1 实验环境

2 iptables常用用法

2.1 查看iptables链

2.2 规则追加

2.3 规则删除

2.4 规则全删除

2.5 自定义链(chain)

2.6 删除自定义链

2.7 插入规则

2.8 修改规则

2.9 其它

2.9.1 清除计数

2.9.2 打印规则

3 总结


1 实验环境

192.168.0.0/24
访问用机器(Centos) --------------------- iptables设定机器(Ubuntu)192.168.0.211                            192.168.0.203

2 iptables常用用法

2.1 查看iptables链

语法:iptables -t [table] -nvL

[table] :raw ,mangle,filter,nat,security

-n:让IP地址和端口号都表示成数字

-v:显示最详细的内容

-L:打印链的所有规则

使用例

# 显示nat表的所有链的规则
root@node2:~# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 39 packets, 45144 bytes)pkts bytes target     prot opt in     out     source               destination         Chain INPUT (policy ACCEPT 39 packets, 45144 bytes)pkts bytes target     prot opt in     out     source               destination         Chain OUTPUT (policy ACCEPT 4 packets, 279 bytes)pkts bytes target     prot opt in     out     source               destination         Chain POSTROUTING (policy ACCEPT 4 packets, 279 bytes)pkts bytes target     prot opt in     out     source               destination # 显示nat表的INPUT链的规则
root@node2:~# iptables -t nat -nvL INPUT
Chain INPUT (policy ACCEPT 39 packets, 45144 bytes)pkts bytes target     prot opt in     out     source               destination       

2.2 规则追加

iptables -t [table] -A [chain]  [match] [target]

[]里的参数的设定方式可以参照上一篇文章

使用例

# 在filter表的INPUT链追加规则,icmp的时候,拒绝并告知送信方
root@node2:~# iptables -t filter -A INPUT -p icmp -j REJECT # 可以看到规则添加成功
root@node2:~# iptables -nvL INPUT
Chain INPUT (policy ACCEPT 142 packets, 58712 bytes)pkts bytes target     prot opt in     out     source               destination         4   336 REJECT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable# 在Centos上ping Ubuntu发现被拒绝
[root@centos ~]# ping 192.168.0.203 -c 4
PING 192.168.0.203 (192.168.0.203) 56(84) bytes of data.
From 192.168.0.203 icmp_seq=1 Destination Port Unreachable
From 192.168.0.203 icmp_seq=2 Destination Port Unreachable
From 192.168.0.203 icmp_seq=3 Destination Port Unreachable
From 192.168.0.203 icmp_seq=4 Destination Port Unreachable--- 192.168.0.203 ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3023ms

2.3 规则删除

iptables -t [table] -D [chain] [linenumber]

使用例

# 先查看规则的编号(-t省略的时候默认是filter表)
root@node2:~# iptables -nvL INPUT --line-numbers
Chain INPUT (policy ACCEPT 70 packets, 15375 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable# 删除1号规则
root@node2:~# iptables -D INPUT 1# 查看规则发现被删除
root@node2:~# iptables -nvL INPUT --line-numbers
Chain INPUT (policy ACCEPT 8 packets, 1762 bytes)
num   pkts bytes target     prot opt in     out     source               destination 

2.4 规则全删除

iptables  -t [table] -F [chain]

想要清理规则的时候,如果一条一条删 太费劲了,用这个命令可以全部清除

# 规则太多(-t省略的时候默认是filter表)
root@node2:~# iptables -nvL INPUT --line-number
Chain INPUT (policy ACCEPT 5 packets, 160 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1       11   924 REJECT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
2      283  109K ufw-before-logging-input  all  --  *      *       0.0.0.0/0            0.0.0.0/0
3      283  109K ufw-before-input  all  --  *      *       0.0.0.0/0            0.0.0.0/0
4       78 96082 ufw-after-input  all  --  *      *       0.0.0.0/0            0.0.0.0/0
5        5   160 ufw-after-logging-input  all  --  *      *       0.0.0.0/0            0.0.0.0/0
6        5   160 ufw-reject-input  all  --  *      *       0.0.0.0/0            0.0.0.0/0
7        5   160 ufw-track-input  all  --  *      *       0.0.0.0/0            0.0.0.0/0   # filter的INPUT链的规则清除(如果-F后面的INPUT省略代表清除filter表的所有链的规则)
root@node2:~# iptables -F INPUT# filter的INPUT链的规则清除成功
root@node2:~# iptables -nvL INPUT --line-number
Chain INPUT (policy ACCEPT 10 packets, 1834 bytes)
num   pkts bytes target     prot opt in     out     source               destination    

2.5 自定义链(chain)

iptables -t [table] -N [chainname]

使用例

# 自定义链
root@node2:~# iptables -N mychain# 查看filter表的所有链,发现mychain链
root@node2:~# iptables -nvL
Chain INPUT (policy ACCEPT 24 packets, 3305 bytes)pkts bytes target     prot opt in     out     source               destination         Chain FORWARD (policy DROP 0 packets, 0 bytes)pkts bytes target     prot opt in     out     source               destination         Chain OUTPUT (policy ACCEPT 12 packets, 952 bytes)pkts bytes target     prot opt in     out     source               destination         Chain mychain (0 references)pkts bytes target     prot opt in     out     source               destination
root@node2:~#

2.6 删除自定义链

iptables -t [table] -X [chainname]

# 删除自定义链(mychain)
root@node2:~# iptables -X mychain# 查看,发现自定义链mychain被删除
root@node2:~# iptables -nvL
Chain INPUT (policy ACCEPT 6 packets, 364 bytes)pkts bytes target     prot opt in     out     source               destination         Chain FORWARD (policy DROP 0 packets, 0 bytes)pkts bytes target     prot opt in     out     source               destination         Chain OUTPUT (policy ACCEPT 3 packets, 300 bytes)pkts bytes target     prot opt in     out     source               destination
root@node2:~#

2.7 插入规则

因为链有调用顺序的说法,所以有时候不用-A 去添加规则,而是用-I去插入规则

iptables -t [table] -I [chain]  [no] [match] [target]

使用例

# 这种情况下是不能ping通这台机器的
root@node2:~# iptables -nvL INPUT --line-numbers
Chain INPUT (policy ACCEPT 78 packets, 12707 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        2   168 REJECT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable# 我在前面插入一条规则,只允许192.168.0.211的机器可以ping自己
root@node2:~# iptables -I INPUT 1 -p icmp -s 192.168.0.211 -j ACCEPT# 查看规则
root@node2:~# iptables -nvL INPUT --line-numbers
Chain INPUT (policy ACCEPT 76 packets, 8166 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 ACCEPT     icmp --  *      *       192.168.0.211        0.0.0.0/0
2        2   168 REJECT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable# 在Centos机器上ping Ubuntu发现可以ping通
[root@centos ~]# ping 192.168.0.203 -c 4
PING 192.168.0.203 (192.168.0.203) 56(84) bytes of data.
64 bytes from 192.168.0.203: icmp_seq=1 ttl=64 time=0.688 ms
64 bytes from 192.168.0.203: icmp_seq=2 ttl=64 time=1.32 ms
^C
--- 192.168.0.203 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, tim

这种情况下 你要是用-A去添加规则的话,因为拒绝的先被执行,就不能ping通。有兴趣的可以自己实验一下。

2.8 修改规则

有时候,可能需要的不是添加规则或者插入规则,而是需要修改当前的规则

iptables -t [table] -R [chain]  [no] [match] [target]

使用例

# 之前的INPUT链的规则
root@node2:~# iptables -nvL INPUT --line-numbers
Chain INPUT (policy ACCEPT 486 packets, 411K bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
2        0     0 ACCEPT     icmp --  *      *       192.168.0.211        0.0.0.0/0           # 把INPUT链的2号规则替换成不是来自192.168.0.211的icmp协议都拒绝
root@node2:~# iptables -R INPUT 2 -p icmp ! -s 192.168.0.211 -j REJECT# 查看规则,发现修改成功
root@node2:~# iptables -nvL INPUT --line-numbers
Chain INPUT (policy ACCEPT 10 packets, 3124 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
2        0     0 REJECT     icmp --  *      *      !192.168.0.211        0.0.0.0/0            reject-with icmp-port-unreachable
root@node2:~#

2.9 其它

2.9.1 清除计数

我们用 -v 查看链的规则的时候可以看到 两个列 pkts和bytes,这两个列是用来计数的。

iptables -t [table] -Z [chain]  [no]

就是 把 计数归0

使用例

# 最初的状态
root@node2:~# iptables -nvL INPUT --line-numbers
Chain INPUT (policy ACCEPT 121 packets, 119K bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
2        0     0 REJECT     icmp --  *      *      !192.168.0.211        0.0.0.0/0            reject-with icmp-port-unreachable# 从Centos ping Ubuntu 4次
[root@centos ~]# ping 192.168.0.203 -c 4
PING 192.168.0.203 (192.168.0.203) 56(84) bytes of data.
From 192.168.0.203 icmp_seq=1 Destination Port Unreachable
From 192.168.0.203 icmp_seq=2 Destination Port Unreachable
From 192.168.0.203 icmp_seq=3 Destination Port Unreachable
From 192.168.0.203 icmp_seq=4 Destination Port Unreachable--- 192.168.0.203 ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3060ms# 再次查看发现 pkts=4 , bytes=336
root@node2:~# iptables -nvL INPUT --line-numbers
Chain INPUT (policy ACCEPT 164 packets, 163K bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        4   336 REJECT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
2        0     0 REJECT     icmp --  *      *      !192.168.0.211        0.0.0.0/0            reject-with icmp-port-unreachable
# 执行清理1号规则的计数
root@node2:~# iptables -Z INPUT 1# 再次查看发现 pkts=0 , bytes=0
root@node2:~# iptables -nvL INPUT --line-numbers
Chain INPUT (policy ACCEPT 11 packets, 6934 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
2        0     0 REJECT     icmp --  *      *      !192.168.0.211        0.0.0.0/0            reject-with icmp-port-unreachable

2.9.2 打印规则

iptables -t [table] -S [chain]  [no]

# 可以看到一条默认规则 ,全部ACCEPT,这实际上就是INPUT的默认规则,下面的命令打印出来的policy
root@node2:~# iptables -vS INPUT
-P INPUT ACCEPT -c 107 36673
-A INPUT -p icmp -c 0 0 -j REJECT --reject-with icmp-port-unreachable
-A INPUT ! -s 192.168.0.211/32 -p icmp -c 0 0 -j REJECT --reject-with icmp-port-unreachableroot@node2:~# iptables -nL INPUT --line-numbers
Chain INPUT (policy ACCEPT) ← ★★★★★★★★注意
num  target     prot opt source               destination
1    REJECT     icmp --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
2    REJECT     icmp -- !192.168.0.211        0.0.0.0/0            reject-with icmp-port-unreachabl

3 总结

这篇主要是讲iptables的语法及用法,还有一些命令,例如

-C:检查match的

-E:给chain重命名

都是比较少用的,不详细说明了,用man iptables可以看到详细价绍。

下一篇做一下match和target的实验。

Linux学习整理-网络防火墙iptables-实践篇1相关推荐

  1. Linux学习整理-网络防火墙ufw

    Linux的防火墙的术语 先整理一下他们之间的关系 netfilter ​netfilter 项目是一个社区驱动的协作 FOSS 项目,为Linux 2.4.x 和更高版本的内核系列提供包过滤软件.n ...

  2. Linux学习整理-网络防火墙firewalld

    1 概念 1-1. firewall简介 firewalld是Linux系统的一款防火墙管理工具.通过充当netfilter的前端来提供防火墙功能,默认后端是iptables/ntftables.开发 ...

  3. Linux学习整理-网络命令集

    目录 前提 1. 机器IP地址查询 1.1 ifconfig 1.1.1 安装包 1.1.2 执行命令 1.1.3 拓展-ifconfig的其它用法 1.1.4 常用的属性说明 1.2 ip addr ...

  4. Linux完全清除防火墙策略,linux下的软件防火墙iptables——规则的查看与清除、定义默认策略,...

    linux下的软件防火墙iptables--规则的查看与清除.定义默认策略软件防火墙IPTABLES --规则在Linux下查看和清除,定义默认策略,防火墙意味着用户限制某些ip或用户对其主机的访问. ...

  5. linux服务器80端口是默认开放的么_「Linux」25节-防火墙iptables

    前言 Linux作为最热门的服务器操作系统,自然离不开网络请求.谈到Linux,只要听过Linux系统名字的同学估计都会说"安全性高",我们说的安全性也包括了网络安全. 在Linu ...

  6. Linux学习笔记--12(iptables与firewalld)

    防火墙管理 在公网与企业内网之间充当保护屏障的防火墙,虽然有软件或硬件之分,但主要功能都是依据策略对穿越防火墙自身的流量进行过滤. 防火墙策略可以基于流量的源目地址.端口号.协议.应用等信息来定制,然 ...

  7. Linux网络安全之网络防火墙NAT原理简析

    一.网络防火墙基本架构 二.NAT表(网络地址转换) 1.概念:将内网IP翻译成外网IP的技术,支持PREROUTING,INPUT,OUTPUT,POSTROUTING四个链. 2.NAT实现分为下 ...

  8. linux系统之网络防火墙(firewalld服务和iptables服务)

    一.对于防火墙的理解 防火墙,其实就是用于实现Linux下访问控制的功能的,它分为硬件的和软件的两种. 无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘. 而我们的任务就是需要去定义到底防火墙如 ...

  9. linux web服务器,防火墙iptables最简配置

    配置防火墙(服务器安全优化) 安全规划:开启 80  22 端口并 打开回路(回环地址 127.0.0.1) # iptables –P INPUT ACCEPT # iptables –P OUTP ...

最新文章

  1. 【OpenCV 】Sobel 导数/Laplace 算子/Canny 边缘检测
  2. python能做什么游戏好-Python有做大型游戏的潜力吗?
  3. UA MATH563 概率论的数学基础 中心极限定理8 弱大数定律 Bernstein多项式逼近
  4. 达梦数据库的基本使用
  5. win8 -telnet安装
  6. firebase使用_使用Firebase进行物联网原型设计:如何事半功倍
  7. ssl客户端与服务端通信的demo
  8. mySQL 开启事件存储过程
  9. Dell Dock 无法启动解决办法
  10. 数学之美系列 1.3w字精简版阅读笔记
  11. csm和uefi_UEFI和Legacy的区别是什么,请尽量从原理上说明?
  12. 第三篇 ME909s-821设备描述符分析
  13. yxr:Makefile 简单样本
  14. 这个人就是吴恩达(Andrew Ng),百度新任首席科学家
  15. 路由器DNS 劫持攻击情况
  16. 谈谈低延迟对音质的负面影响,顺便谈谈WASAPI
  17. 特别提醒:人脸识别时,一定要穿衣服,一不小心就中招了
  18. 诚邀参加“认知与路径:元宇宙科技传播”线上专题研讨会
  19. 必应词典NABC分析
  20. 事件委托是怎么回事?

热门文章

  1. html框架自动居中,html 宽度固定并布局居中模板框架
  2. html绘制直角坐标系,几何画板如何画直角坐标系并描点
  3. chrome 查看日志
  4. 重庆“易法院”上线 民众足不出户参与诉讼全过程
  5. 三菱M80操作介绍_CIMT2019 展品预览:三菱电机以“智能制造 价值创造”为主题参展...
  6. ELK高级搜索四之Mapping映射和分词器
  7. B站UP主发起停更潮
  8. 【Linux下的性能测试】(三) : nmon图形分析
  9. 关于Windows PE
  10. 无法连接虚拟设备 sata0:1,因为主机上没有相对应的设备——解决方案