iptables简介

iptables 是集成在 Linux 内核中的包过滤防火墙系统。
使用 iptables 可以添加、删除具体的过滤规则,
iptables 默认维护着 4 个表和 5 个链,
所有的防火墙策略规则都被分别写入这些表与链中。

4个表

“四表”是指 iptables 的功能,默认的 iptables规则表有 filter 表(过滤规则表)、nat 表(地址转换规则表)、mangle(修改数据标记位规则表)、raw(跟踪数据表规则表):
filter :控制数据包是否允许进出及转发,可以控制的链路有 INPUT、FORWARD 和 OUTPUT。
nat    :控制数据包中地址转换,可以控制的链路有 PREROUTING、INPUT、OUTPUT 和 POSTROUTING。
mangle :修改数据包中的原数据,可以控制的链路有 PREROUTING、INPUT、OUTPUT、FORWARD 和 POSTROUTING。
raw    :控制 nat 表中连接追踪机制的启用状况,可以控制的链路有 PREROUTING、OUTPUT。

5个链

“五链”是指内核中控制网络的 NetFilter 定义的 5 个规则链。
每个规则表中包含多个数据链:
INPUT(入站数据过滤)
OUTPUT(出站数据过滤)
FORWARD(转发数据过滤)
PREROUTING(路由前过滤)
POSTROUTING(路由后过滤)
防火墙规则需要写入到这些具体的数据链中。

iptables语法格式

iptables [-t table] COMMAND [chain] CRETIRIA -j ACTION
iptables [-t 表名] 命令选项 [链名] [条件匹配] -j 目标动作或跳转
-t      :指定需要维护的防火墙规则表 filter、nat、mangle或raw。在不使用 -t 时则默认使用 filter 表。
COMMAND :子命令,定义对规则的管理。
chain   :指明链表。
CRETIRIA:匹配参数。
ACTION  :触发动作。

COMMAND选项

-A   添加防火墙规则
-D  删除防火墙规则
-I  插入防火墙规则
-F  清空防火墙规则
-L  列出添加防火墙规则
-R  替换防火墙规则
-E  重命名用户定义的链,不改变链本身
-Z  清空防火墙数据表统计信息
-P  设置链默认规则
-N  新建(new-chain)一条用户自己定义的规则链
-X  删除指定表中用户自定义的规则链(delete-chain)
-n  使用数字形式(numeric)显示输出结果
-v  查看规则表详细信息(verbose)的信息

CHINA链选项

INPUT            入站数据过滤
OUTPUT          出站数据过滤
FORWARD         转发数据过滤
PREROUTING      路由前过滤
POSTROUTING     路由后过滤

CRETIRIA条件

-p           指定协议(TCP、UDP、ICMP、all)
-s          指定ip或网段(1.1.1.0/24)
-d          指定ip或网段
-i          指定网卡
-o          指定网卡
--sport     指定服务及端口
--dport     指定端口
-m state    表示数据包的连接状态 --state NEW
-m mac --mac-source 指定mac地址
-m multiport --dport 指定端口范围
-m iprange --src-range 指定ip范围

ACTION动作

ACCEPT       允许数据包通过
DROP        丢弃数据包
REJECT      拒绝数据包通过
LOG         将数据包信息记录 syslog 曰志
DNAT        目标地址转换
SNAT        源地址转换
MASQUERADE  地址欺骗
REDIRECT    重定向

查看规则

iptables -nvL
参数
-L 表示查看当前表的所有规则,默认查看的是 filter 表,如果要查看 nat 表,可以加上 -t nat 参数。
-n 表示不对 IP 地址进行反查,加上这个参数显示速度将会加快。
-v 表示输出详细信息,包含通过该规则的数据包数量、总字节数以及相应的网络接口。

添加规则

iptables -A INPUT -s 1.1.1.1 -j ACCEPT
参数
-A  添加到规则末尾
-l  可插入指定位置

修改规则

iptables -R INPUT 1 -s 1.1.1.1 -j DROP
# 将第1条规则修改为DROP

删除规则

iptables -D INPUT 1 -s 1.1.1.1 -j DROP
# 将第一条规则删除
iptables -D INPUT 1
# 也可通过行号直接删除 可先使用--line-number查看行号确保操作失误
iptables -nvL --line-number

防火墙的备份与还原

默认的 iptables 防火墙规则会立刻生效,但如果不保存,当计算机重启后所有的规则都会丢失,
所以对防火墙规则进行及时保存的操作是非常必要的。
CentOS 7 系统中防火墙规则默认保存在 /etc/sysconfig/iptables 文件中,
使用 iptables-save 将规则保存至该文件中可以实现保存防火墙规则的作用,计算机重启后会自动加载该文件中的规则。
如果使用 iptables-save 将规则保存至其他位置,可以实现备份防火墙规则的作用。
当防火墙规则需要做还原操作时,可以使用 iptables-restore 将备份文件直接导入当前防火墙规则。

1、iptables-save

iptables-save > /etc/sysconfig/iptables
# 保存防火墙规则
iptables-save > /etc/sysconfig/iptables.bak
# 备份防火墙规则 保存到其他位置

2、iptables-restore

iptables-restore < iptables.bak
# 导入防火墙规则 注意需要是iptables-save导出的文件才可导入

常用iptables规则

1、拒绝所有icmp数据包进入

iptables -I INPUT -p icmp -j REJECT

2、允许转发除ICMP协议以外的所有数据包 使用’!'条件取反

iptables -A FORWARD -p ! icmp -j ACCEPT

3、拒绝转发来自192.168.1.1主机的数据,允许转发来自192.168.0.0/24网段的数据

# 注意拒绝规则放在前面 注意规则顺序
iptables -A FORWARD -s 192.168.1.1 -j REJECT
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT

4、丢弃从外网接口(eth1)进入防火墙本机的源地址为私网地址的数据包

iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP
iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

5、封堵网段(192.168.1.0/24),两小时后解封

iptables -I INPUT -s 10.20.30.0/24 -j DROP
iptables -I FORWARD -s 10.20.30.0/24 -j DROP
at now 2 hours at> iptables -D INPUT 1 at> iptables -D FORWARD 1

6、只允许管理员从192.168.0.0/24网段使用SSH远程登录防火墙主机

iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

7、允许本机开放从TCP端口20-1024提供的应用服务

iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20:1024 -j ACCEPT

8、允许转发来自192.168.0.0/24局域网段的DNS解析请求数据包。

iptables -A FORWARD -s 192.168.0.0/24 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -p udp --sport 53 -j ACCEPT

9、禁止其他主机ping防火墙主机,但是允许从防火墙上ping其他主机

iptables -I INPUT -p icmp --icmp-type Echo-Request -j DROP
iptables -I INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT
iptables -I INPUT -p icmp --icmp-type destination-Unreachable -j ACCEPT

10、禁止转发来自MAC地址为00:0C:29:27:55:3F的和主机的数据包

iptables -A FORWARD -m mac --mac-source 00:0c:29:27:55:3F -j DROP

11、允许防火墙本机对外开放TCP端口20、21、25、110以及被动模式FTP端口1250-1280

iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT

12、禁止转发源IP地址为192.168.1.20-192.168.1.99的TCP数据包

iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP

13、禁止转发与正常TCP连接无关的非–syn请求数据包

iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP

14、拒绝访问防火墙的新数据包,但允许响应连接或与已有连接相关的数据包

iptables -A INPUT -p tcp -m state --state NEW -j DROP
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

15、 只开放本机的web服务(80)、FTP(20、21、20450-20480)
放行外部主机发住服务器其它端口的应答数据包
将其他入站数据包均予以丢弃处理

iptables -I INPUT -p tcp -m multiport --dport 20,21,80 -j ACCEPT
iptables -I INPUT -p tcp --dport 20450:20480 -j ACCEPT
iptables -I INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
iptables -P INPUT DROP

【 Iptables 】相关推荐

  1. 【iptables】编写iptables防火墙规则-1

    来自书籍:防线-企业Linux安全运维理念和实战 Iptables一般规则如下: Iptables [-t table] command [match] target 一般,一条iptables规则包 ...

  2. 【iptables】bluetooth自组网

    一.整体解决的思路 本人使用的是bluez5.5,并成功在俩个虚拟机间成功跑了起来. 具体的原理暂不详细介绍,蓝牙的解决方案硬件上通常分为串口或是USB. 1.串口: tty驱动<->tt ...

  3. 火墙(二)【iptables】

    1.iptables的基础概念 规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为"如果数据包头符合这样的条件,就这样处理这个数据包".规则存储在内核空间的信息包过 ...

  4. 【Linux】一步一步学Linux——iptables命令(186)

    00. 目录 文章目录 00. 目录 01. 命令概述 02. 命令格式 03. 常用选项 04. 参考示例 05. 附录 01. 命令概述 iptables命令是Linux上常用的防火墙软件,是ne ...

  5. 12张图带你轻松了解 calico 6种场景下宿主机和pod互访的iptables规则链流转情况【下】

    文章目录 场景五:同节点上,不同容器之间的访问 request reply 场景六:跨节点,容器间互相访问 master request node request node reply master ...

  6. 【Note2】route,iptables,macvlan,sol

    文章目录 1.linux的route指令:route add 1.1 案例:从ubuntu机器ping 199.199.199.199,配置路由使能通 2.防火墙iptables:(ip+tables ...

  7. 【CentOS】利用Kubeadm部署Kubernetes (K8s)

    [CentOS]利用Kubeadm部署Kubernetes (K8s)[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体实验流程 1 系统准 ...

  8. 非常好!!!Linux源代码阅读——环境准备【转】

    Linux源代码阅读--环境准备 转自:http://home.ustc.edu.cn/~boj/courses/linux_kernel/0_prepare.html 目录 Linux 系统环境准备 ...

  9. 【转】svn的安装及与redmine的整合

    一.svn的安装与使用 1. 安装svn #yum -y install subversion #svn --version  //若输出为svn的版本信息,证明svn已经安装成功 2. 建立 SVN ...

最新文章

  1. html超链接button
  2. HTTP和RPC的优缺点
  3. 在本地机房享受专属公共云服务,详解阿里云本地化部署服务云盒
  4. 【含义解析】%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %m%n
  5. sci的figure怎么做_如何制作科技论文中的Figure
  6. Ubuntu Hudson 安装配置
  7. Linux脚本学习随记
  8. Ubuntu14.04编译Opencv3.1错误:下载ippicv,解决方案
  9. Git-第四篇廖雪峰Git教程学习笔记(3)远程仓库,克隆远端库
  10. AWS SageMaker 基于Random Cut Forest 的异常值检测 随机森林
  11. 真人qq秀代码_波士顿动力Spot买家秀
  12. STM32 CAN编程详解
  13. Spark学习笔记:Spark Streaming与Spark SQL协同工作
  14. 一款免费在线文字识别(OCR)工具
  15. 0926 - 微商的动力
  16. python第五次作业——潘芊睿
  17. Effective C++读书笔记 摘自 pandawuwyj的专栏
  18. java FFMPEG调取usb摄像头,截取视频,添加文字和时间水印
  19. LinuxC TCP实现简易聊天室
  20. 我的第一篇博文——简单的C/S模型

热门文章

  1. nginx 解决504超时问题
  2. (Note)七彩虹30系列显卡——《一键超频》按键
  3. 解决IE不能上网,火狐能上网 谷歌和IE浏览器都上不了网只能火狐上怎么办?
  4. 电口模块和光模块有什么区别?
  5. 2017年12月全球数据库排名:SQL Server 跌势明显,刚获阿里投资的MariaDB表现良好
  6. 转载 美国SAP高手跳槽记-转自George
  7. 现代数据环境下,如何做数据集成?这11个靠谱实践收藏了
  8. Vue - 适配iPhoneX微信浏览器
  9. Prim算法最小生成树Java超详解
  10. vs 2022连接MySQL数据库