概述

iptables是一种运行在linux下的防火墙组件,下面的介绍可以快速的学习iptables的入门使用。

特点(重要)

  1. 它的工作逻辑分为 链、表、规则三层结构。
  2. 数据包通过的时候,在对应表中,规则从上向下匹配,匹配到即跳出,后续规则忽略。
  3. 常用于过滤数据包和转发数据包(代理服务器)。
  4. 工作方式基于IP 端口 和MAC

结构

链名 PREROUTING FORWARD POSTROUTING INPUT OUTPUT
含义

一般是指从外网发送到当前主机上

并且在路由规则处理之前

一般指从外网发送到当前主机上

路由规则处理的情况,这种情况

大概有两种可能性

  1. 本机处理外部来源的网络数据
  2. 转发外部来源的网络数据到其他地址

一般是指从外网发送到当前主机上

并且在路由规则处理之后,这种情

况出现的可能性也有两种

  1. 本机主动向外请求时产生
  2. 转发网络数据的时候产生
 发送给本机的数据  本机向外主动发送的数据
默认可用表
  1. mangel(特殊数据包标记 )
  2. NAT(地址转换)
  1. mangel(特殊数据包标记 )
  2. filter(过滤)
  1. mangel(特殊数据包标记 )
  2. NAT(地址转换)
  1. mangel(特殊数据包标记 )
  2. filter(过滤)
  1. mangel(特殊数据包标记 )
  2. filter(过滤)

iptables的工作流程大体上可以表达为三种

  1. 源地址发送数据--> {PREROUTING-->路由规则-->POSTROUTING} -->目的地址接收到数据
  2. 源地址发送数据--> {PREROUTING-->INPUT-->本机}
  3. {本机-->OUTPUT-->POSTROUTING} -->目的地址接收到数据

从上表当中我们可以看到,对于不考虑地址转发的情况下,例如一台独立的主机的网络管理,我们只需要配置INPUT和OUTPUT两条链即可完成对网络的管理,本次的重点也是这两条链接。

实例

1, 管理规则

iptables  [-t 表名]  [选项]   -n

选项:

  1. -L  查看

  2. -F  清除所有规则

  3. -X  清除自定义链

  4. -Z  清除所有链统计

-n的含义是用ip和端口的方式来显示规则

例:

查看filter表中的所有规则

iptables -t filter -L -n

清空filter表中的规则

iptables -t filter -F

2,定义表的默认规则

首先要牢记iptables是有链 有表的结构 , 那么定义每一条链上的每一条表的默认规则的格式为

iptables -t 表 -P 链  动作类型

-t 就不说了 -P 这里要大写  链的名称也是大小写敏感的注意不要写错  动作类型有ACCEPT允许通过 DROP丢弃 也就是禁止 还有一种动作是LOG作为日志记录,目前我还没有用过。

例:

设置INPUT链上filter表默认规则

iptables -t filter -P INPUT ACCEPT

这里要注意的是,默认允许了所有的链接都可以通过,到达服务器。这样的设置在正式生产服务器环境上是十分危险的,不建议这么设置,应当设置为DROP,但是默认允许所有的链接都禁止的后果就是把自己的远程操作也踢掉了,服务器在本地还无所谓,但是在远程这就麻烦了。于是要牢记,默认规则要在设置好自己访问的规则以后再设置,最好是在最后设置。

3,自定义规则

下面我们来真正设置某一条链上的某个表中一个基于IP和端口的规则,也是iptables最常见的用途

格式:

iptables  [-AI  链]  [-io  网卡]  [-p  协议]  [-s  源IP]  [-d  目标ip]  -j  动作

例:

禁止ip为192.168.1.110的计算机访问本机eth0网卡

分析:

  1. 禁止XXX访问本机 所以是INPUT链 增加规则使用-A
  2. 网卡是eth0因为是INPUT链 所以参数应该是 -i
  3. 源ip是 192.168.1.110
  4. 动作是  DROP

于是应该这样写

iptables -A INPUT -i eth0 -s 192.168.1.110 -j DROP

反过来,禁止本机访问192.168.1.110可以这么写

iptables -A OUTPUT -o eth0 -d 192.168.1.110 -j DROP

例:

允许本机访问本地回环网卡 localhost

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

现在我们可以添加一个针对固定IP的策略了,那么如何添加一个网段的策略的,例如禁止192.168.1.xxx 这个网段所有的IP访问本机,这里是要用下面的写法的

iptables -A INPUT -i eth0 -s 192.168.1.0/24 -j DROP

这里的192.168.0/24是代表网段,具体含义可以去了解 计算机网络原理,24其实指的是二进制的从左到右 有24个1 ,在IPV4的ip地址表示方法下 有32位,那么32-24=8 也就是十进制IP最后一段位置代表是0

于是我们可以 1 针对IP  2 针对IP段 设置策略

下面来添加对端口的策略,这个往往也是最细节最有用的内容

格式:

iptables  -A  链 -io 网卡 -p 协议  -s 源ip  --sport  源端口  -d  目标ip  --dport  目标端口  -j  动作

这里有几个点要注意

  1. 和IP一样 链的不同(可能是INPUT也可能是OUTPUT) 使用不同的-i或者-o
  2. -p是小写的。 代表协议,类型可以是tcp、udp、icmp或者all,特别是要注意的是我们平时使用的ping命令 其实是icmp协议,而这个协议比较特殊,不使用端口 所以在使用all的时候(包含icmp)同时设置端口可能会出错!
  3. INPUT要有源,OUTPUT要有目标,但是INPUT往往是限制目标端口,OUTPUT往往是限制源端口,注意逻辑不要乱。

例:

web服务器添加80服务

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

允许192.168.1.x网段访问mysql数据库

iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 3306 -j ACCEPT

最后说明一下,当有多条规则匹配一次访问的时候,以最前面的规则为准,当无法匹配到对应规则的时候,使用默认规则

在前面的例子中相信你已经发现了-A 往往是代表 ADD的意思,每次ADD都是增加规则到列表的最后,那么除了ADD 其实还有-I  INSERT插入规则

具体用法是将I替换成A 同时在链名后添加数字排序

-I 链名  1

1代表了第一位顺序 也就是最优先的匹配规则

例如

iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT

======================我是分割线====================

上面的介绍都是具体的规则配置,这些配置在防火墙重启的时候会丢失,那么如何管理防火墙服务是下面的内容

开机自启动

chkconfig iptables on

规则保存

service iptables save

上面的命令其实是把规则保存在/etc/sysconfig/iptables文件中,重启会自动读取

如果是业务相对固定的服务器这样做无所谓,但如果需要经常切换规则,那么讲规则都写在这一个文件中并不是十分容易管理

可以把规则写成单独的文件,在开机的时候自动载入(/etc/rc.local中添加),但是要注意权限设置(755),这样做的好处是便于管理,缺点是只有开机的时候有效

如果是重启防火墙服务,则无法载入对应规则。

总结:iptables看似复杂,实际上找好逻辑对应关系还是不难的关键是5条链的几个表要理解含义,这里只简单的介绍了本机和外界通信的基本管理。

附加 debain系统的保存防火墙规则 方法 https://www.vmvps.com/save-iptables-setting-under-debian-environment.html

1)保存iptables现有规则到/etc/iptables.up.rules

iptables-save > /etc/iptables.up.rules

2)建立系统启动加载文件/etc/network/if-pre-up.d/iptables

vi /etc/network/if-pre-up.d/iptables

输入以下内容

#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules

3)让文件具备执行权限

chmod +x /etc/network/if-pre-up.d/iptables

转载于:https://www.cnblogs.com/toumingbai/p/3890823.html

快速入门linux系统的iptables防火墙 1 本机与外界的基本通信管理相关推荐

  1. Linux系统的iptables防火墙、SNAT、DNAT原理与设置规则

    Linux的iptables防火墙.SNAT.DNAT 一.iptables概述 1.netfilter/iptables关系 2.四表五链 四表 五链 规则表之间的优先顺序 规则链之间的匹配顺序 二 ...

  2. Linux系统下iptables(防火墙)的有关操作命令

    1.查看当前iptables(防火墙)规则 可使用"iptables –L –n"查看当前iptables规则 例如: 2.添加指定端口到防火墙中 iptables -I INPU ...

  3. Linux系统中的防火墙的实现:iptables/netfilter

    防火墙:包括软件防火墙(基于iptables/netfilter的包过滤防火墙)和硬件防火墙,在主机或网络边缘对经由防火墙的报文以一定条件进行检测过滤的一系列组件. Linux系统中的防火墙的实现: ...

  4. linux下防火墙脚本,Linux系统如何修改防火墙配置

    这篇文章主要介绍了Linux系统如何修改防火墙配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 改Linux系统防火墙配置需要修改 /etc/sy ...

  5. Linux系统如何关闭防火墙【linux系统防火墙】

    Linux系统如何关闭防火墙 linux系统防火墙的打开和关闭centos7和之前的版本的略有差别. 一.centos7之前的版本可以通过iptables相关命令实现防火墙的打开和关闭 1.首先可以在 ...

  6. linux中关于防火墙的命令,Linux系统中查看防火墙的命令详解

    Linux系统中如果要查看到防火墙的状态信息要怎么办呢?下面由学习啦小编为大家整理了Linux系统中查看防火墙的命令详解,希望对大家有帮助! Linux系统中查看防火墙的命令详解:一.service方 ...

  7. 如何快速查看Linux系统上的Shell类型

    要快速查看Linux系统上的Shell类型,可以参考本经验以下内容. 一.查看当前系统中所有可登录shell的类型 1 要查看当前系统中所有可登录shell的类型,在/etc/shells配置文件中记 ...

  8. Linux系统上的防火墙命令

    一.防火墙操作 在Linux系统上的防火墙是一种服务. 二.使用步骤 1.引入库 查看防火墙状态 systemctl status firewalld 或者 firewall-cmd --state ...

  9. 入门Linux系统编程--网络编程

    文章目录 一.网络编程 1.socket服务端代码实现(无连接客户端) 6.socket服务端代码实现(连接客户端) 7.socket客户端代码实现 8.实现双方聊天 9.多方消息收发 二.往期文章 ...

最新文章

  1. harmonyos上的程序用什么语言写,HarmonyOS应用开发 — HelloWorld应用开发E2E体验
  2. javafx之TableView的TaleCell
  3. 在Spring MVC Web应用程序中添加社交登录:集成测试
  4. C/C++ scanf 函数中%s 和%c 的简单差别
  5. 接口的特点 java 1614101071
  6. Apache Log4j2详解,【高级Java架构师系统学习
  7. 【Kafka】Kafka ArithmeticException: / by zer
  8. ios学习:Xcode工具
  9. maven的pom文件解析及配置
  10. 苹果CMSV10如何打包麻花影视APP教程
  11. IIS网站发布详细流程
  12. Android 仿火萤视频桌面 神奇的LiveWallPaper
  13. 智慧海洋task04 利用数据进行建模并调参
  14. 【jvm我能讲两小时056】说说Parallel old收集器的特点以及使用场景?
  15. DNF 单机游戏 手机游戏 网络游戏 推荐游戏 TXT 小说 外挂 辅助
  16. 【富文本】亿图思维导图MindMaster Pro限时赠送正版
  17. c语言飞机票实验报告格式,c语言航班信息查询系统实验报告
  18. 【笔记整理 - 计算机网络】
  19. Java 输出单双引号问题
  20. Android ANR问题总结

热门文章

  1. 一文看懂怎样用 Python 创建比特币交易
  2. snapd_snapd使管理Nextcloud变得轻而易举
  3. 模糊推理 控制 易于实现_代码“易于推理”是什么意思?
  4. pring Boot与MyBatista的集成
  5. JavaScript 定义类时如何将方法提取出来
  6. 自动化测试selenium+java学习笔记
  7. c语言考试经典编程题目及答案,经典练习C语言编程的题目及答案整理
  8. kerberos java实现,基于kerberos实现jaas登录
  9. java中如何应对读改写场景
  10. 利用windows 2003实现服务器群集的搭建与架设(一) NLB群集的创建与架设