iptables 即 Linux防火墙 的简单介绍及使用

iptables生效位置如下图:

  其中, 网络防火墙也可以使用一台启用了iptables的Linux主机代替; 路由器或集线器等设施在拓扑中省略了;

那么上图显示出了iptables在哪里, 下面说一下iptables的工作原理:

我们知道Linux中所有的数据包接收和发送都是在 内核 中完成的, 但是iptables并不是工作在内核中的, 那如何实现防火墙的功能?

iptables工作在用户空间, 并向工作在内核中的netfilter定义规则, 由netfilter来完成过滤数据包的功能; netfilter是内核提供的框架;

那么iptables是怎么指挥的呢? (iptables规则定义, 四表五链)

五链包括: INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING, 位置请参照上图, 如有不对请指正;

四表包括: filter  <-- nat <-- mangle <-- raw (有优先级顺序)

链表的功能实现:

filter: 过滤: INPUT, FORWARD, OUTPUT
nat: PREROUTING (DNAT做目标地址转换), OUTPUT, POSTROUTING(SNAT, 目标地址转换) 
mangle: 拆解报文, 全部位置
raw: 连接追踪, PREROUTING, OUTPUT

  注意: 连接追踪是一件比较耗资源的事情, 一般情况下不要使用;

小结: iptables用四表五链来设定过滤报文的规则, 而netfilter则根据大哥设定的规则办事;

那么我们下面就简单描述一下iptables的命令应用:

iptables命令使用:

  iptables   [-t table]           SUBCOMMAND   CHAIN    CRETERIA     -j TARGET

             作用于哪个表              子命令              链         匹配标准          处理动作

  -t table 省略时, 默认作用于filter

具体使用说明请查看 链接, 详细易懂

iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

我们列几个常用的:

  查看: iptables -L -n

  清空: iptables -F

  删除空的自定义链: iptables -X

  设定指定链的默认策略: iptables -P {INPUT | OUTPUT | ... } {DROP | ACCEPT | REJECT ... }

我们假设你已经看过了上面的链接, 并了解了 -s -d -p -i -o 这些选项的含义, 那么下面就举几个简单实例:

首先, 我们打开一台CentOS 7 的虚拟机, 使用 iptables -L -n 查看当前规则设定:

  注意: 如果发现规则比较多, 可以先禁用Firewalld, 并使用 iptables -F && iptables -X 清理, 然后再显示;

    备注: 禁用 firewalld 方法: systemctl disable firewalld

这时, 我们是通过 ssh 远程登陆到 Linux的, 那么我们首先要确保 ssh 登陆的 通过性, 换句话说, 就是, 开放 22 端口的INPUT和OUTPUT

# iptables -I INPUT -d 你的Linux的IP地址 -p tcp -dport 22 -j ACCEPT

# iptables -I OUTPUT -s 你的Linux的IP地址 -p tcp -sport 22 -j ACCEPT

接下来, 我们将 INPUT 和 OUTPUT 的默认策略改为 DROP

# iptables -P INPUT DROP

# iptables -P OUTPUT DROP

不出意外的话, 如果你的主机上有80端口提供web服务, 那么现在已经无法访问了; 为什么呢?

因为我们 DROP 掉了所有的包, 除了访问22端口的, 和从22端口响应出去的;

为什么我要先说明 开放22端口 呢? 因为我第一次设置的时候, 先改了INPUT的默认策略为DROP, 然后我就被自己锁在门外面了......

那么, 现在我需要让web服务能够访问:

# iptables -I INPUT -d 你的Linux的IP地址 -p tcp -dport 80 -j ACCEPT

# iptables -I OUTPUT -s 你的Linux的IP地址 -p tcp -sport 80 -j ACCEPT

那这样一来, 岂不是跟上面开放22端口一模一样, 只是换了个端口? 对, 就是换了个端口...

有没有办法能够一次搞定呢? 有:

# iptables -I INPUT -d 你的Linux的IP地址 -p tcp -m multiport --dports 22,80 -j ACCEPT

# iptables -I OUTPUT -s 你的Linux的IP地址 -p tcp -m multiport --sports 22,80 -j ACCEPT

-m 是什么呢?

显式扩展: 必须显式指明使用的扩展模块; 查看当前主机支持的扩展模块方法: rpm -ql iptables | grep "\.so"

有关显式扩展的文章

如何保存及重载规则:

保存规则至指定文件:
iptables-save > /root/iptables.1 存储当前防火墙规则

从指定文件重载规则:
iptables-restore < /root/iptables.1 读取并启用以保存的防火墙规则

上文提到过使用Linux做为网络防火墙来使用, 下面简单介绍下:

  • 准备: Linux主机四台, 一台做网络防火墙,配置两个网卡; 一台做外网主机; 两台做内网主机;
  • 网络防火墙主机: 一个网卡对内, 设置ip地址为 192.168.50.1/24; 一个网卡对外
  • 需要打开Linux的地址转发功能:
    • sysctl -w net.ipv4.ip_forward=1
    • cat /proc/sys/net/ipv4/ip_forward 为1
  • 内网主机: 添加 192.168.50.0/24 的任意一个地址
  • 外网主机: 添加路由规则 route add -net 192.168.50.0/24 gw 10.0.0.5 --> 注意此处用的是外网主机同一网段IP地址
  • 测试ping
  • 网络防火墙主机设置 iptables 的 FORWARD 链
    # iptables -P FORWARD DROP
    # iptables -I FORWARD -d 192.168.50.2 -p tcp --dport -j ACCEPT --> 放行进来的
    # iptables -I FORWARD -s 192.168.50.2 -p tcp --sport -j ACCEPT --> 放行出去的
  • 同时放行httpd和ssh服务

    # iptables -I FORWARD -m state --state ESTABLISHED -j ACCEPT
    # iptables -A FORWARD -d 192.168.50.2 -p tcp -m multiport --dports , -m state --state NEW -j ACCEPT
  • 外网主机需要访问内网ftp服务器怎么办?
    • 网络防火墙 完成上面的三步走

      # modprobe nf-conntrack_ftp --> 加载模块
      # iptables -R FORWARD -m state --state RELATED,ESTABLISHED --> 添加RELATED规则
      # iptables -R FORWARD -d 192.168.50.2 -p tcp -m multiport --dports ,, -m state --state NEW -j ACCEPT

总结: iptables的使用灵活多变, 稍显复杂, 但只要弄懂了原理, 再复杂的规则也经不起慢慢推敲;

iptables 简单介绍及应用 Linux防火墙的更多相关文章

  1. linux防火墙iptables简单介绍

    --append  -A chain        Append to chain  --delete  -D chain        Delete matching rule from chain ...

  2. linux防火墙(一)—— iptables架构介绍

    一.防火墙的分类 一般宏观来说,防火墙分为主机型防火墙,例如我们为了防止个人电脑被攻击,而开启的防火墙,还分为网关型防火墙,一般部署在企业的网关,用于过滤和转发,保证整个企业的网络环境安全性. 按照物 ...

  3. iptables简单配置

    iptables简单配置 分类: Linux 安全2010-10-20 16:56 4241人阅读 评论(0) 收藏 举报 input防火墙tcpfilterubuntuservice # iptab ...

  4. Linux防火墙详解

    1.Linux防火墙基础 作为隔离内外网.过滤非法数据的有力屏障,防火墙通常按实现环境的不同分为硬件防火墙和软件防火墙.硬件防火墙是功能专一的硬件设备,具有比较全面的功能,其工作效率较高,但是加个昂贵 ...

  5. Linux防火墙iptables介绍

    介绍网络防火墙是通过一个或多个允许或拒绝的规则来过滤网络流量的网络设备或软件.网络防火墙还可以执行更复杂的任务,例如网络地址转换,带宽调整,提供加密隧道以及更多与网络流量相关的任务.而我们的任务就是需 ...

  6. Linux防火墙简介 – iptables配置策略

    Linux防火墙简介 – iptables配置策略 Netfilter/iptables简介 要想真正掌握Linux防火墙体系,首先要搞清楚Netfilter和iptables的关系,Netfilte ...

  7. Linux防火墙iptables学习

    http://blog.chinaunix.net/uid-9950859-id-98277.html 要在网上传输的数据会被分成许多小的数据包,我们一旦接通了网络,会有很多数据包进入,离开,或者经过 ...

  8. iptables实用知识 ,一文学会配置linux防火墙

    目录 1.防火墙的概念 2. linux防火墙 3.linux数据包处理流程 3.1 linux 防火墙将以上流程,固定区分为5个流程节点 3.2 数据流程 4 linux防火墙的实现机制 4.1 i ...

  9. 【Redhat系列linux防火墙工具】firewalld与iptables防火墙工具的激烈碰撞

    前言 iptables与firewalld防火墙管理工具在linux发行版Redhat7系列使用较为广泛. UFW则是在linux发行版Ubuntu下进行管理防火墙的一款管理工具. 在选用防火墙工具的 ...

随机推荐

  1. Unity 动画系统(Mecanim) 术语及翻译 表格

    原文 翻译 Animation Clip 视频片段 Avatar 阿凡达 Retargeting 重定向 Rigging 绑定 skinning 蒙皮 Animator Component 动画组件 ...

  2. CDR X7 限时3折618年中大促,是时候出手了!

    力量与激情.胜利与喜悦,这些自带饱满情绪的词,即将“刷屏”这个夏天!32支球队,28个不眠夜,你将与谁度过? 一场视觉上的饕餮盛宴即将开始! 小编也是个疯狂足球迷,虽然中国队无缘今年的俄罗斯世界杯,但 ...

  3. ZBrush中如何使用套索工具绘制遮罩

    ZBrush®中创建遮罩的方法有很多,可以手动创建矩形遮罩.圆形遮罩和图案遮罩,然而这些遮罩都是固定的形状.使用Zbrush中的套索遮罩能够实现不规则的图形遮罩,游刃有余的发挥创作. 使用套索工具绘制 ...

  4. 新物理AI将可能成为量子计算革命的关键

    新物理AI将可能成为量子计算革命的关键 据外媒报道,量子计算无疑是现在最令人兴奋的技术之一,但它的量子物理基础却让它成为了一个令人讨厌的概念理解甚至很难再展开其他事情.然而,最近物理学研究的一项突破可 ...

  5. JDBC程序实例

    实例 ( Statement ): public class JDBC { public static void main(String[] args) throws Exception { Conn ...

  6. shell脚本杀死某个服务的进程

    摘抄如下: 新建sh结尾的文件内容如下: NAME=$1echo $NAMEID=`ps -ef | grep "$NAME" | grep -v "$0" | ...

  7. HDU 1558 Segment set( 判断线段相交 + 并查集 )

    链接:传送门 题意:输入一个数 n 代表有 n 组操作,P 是在平面内加入一条线段,Q x 是查询第 x 条线段所在相交集合的线段个数 例如:下图 5 与 1.2 相交,1 与 3 相交,2 与 4 ...

  8. 使用python备份指定目录并删除备份超过一定时长的文件

    #!/usr/bin/env python #-*- coding: utf-8 -*- """ @Project:Py @author: @Email: @Softwa ...

  9. MySQL 面试题(一)

    原文地址:http://www.2cto.com/database/201311/254385.html 作者:黄杉(红黑联盟) 公司招聘MySQL DBA面试心得 1    2年MySQL DBA经 ...

  10. 虚拟机安装mac

    没成功,把几篇不错的文章先记录下地址 http://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1437039 http://bbs.pcbeta. ...