生命不息
折腾不止

看了那么多iptables的教程,这篇教程还是比较全面易懂的

作为 linux 的防火墙, iptables 的应用非常广泛。。。玩 VPS 的人多少得懂点 iptables 的知识才能玩的转 linux 的服务器呢。

关于 iptables 的教程和文章也非常多。这篇是我看过的比较易懂,并且事例比较使用的文章。珍藏已久,今天分享给大家一起学习 ~~

  iptables 介绍


linux 的包过滤功能,即 linux 防火墙,它由 netfilter 和 iptables 两个组件组成。

netfilter 组件也称为内核空间,是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。

iptables 组件是一种工具,也称为用户空间,它使插入、修改和除去信息包过滤表中的规则变得容易。

2014041522224868618.png

0x01 iptables 的结构


iptables 的结构:

简单地讲, tables 由 chains 组成,而 chains 又由 rules 组成。 iptables 默认有四个表 Filter, NAT, Mangle, Raw ,其对于的链如下图。

enter image description here

0x02 iptables 工作流程


enter image description here

0x03 filter 表详解


1. 在 iptables 中, filter 表起过滤数据包的功能,它具有以下三种内建链:

2. 数据流向场景

访问本机:在 INPUT 链上做过滤

本机访问外部:在 OUTPUT 链上做过滤

通过本机访问其他主机 : 在 FORWARD 链上做过滤

3. Iptables 基本操作

启动 iptables : service iptables start

关闭 iptables : service iptables stop

重启 iptables : service iptables restart

查看 iptables 状态: service iptables status

保存 iptables 配置: service iptables save

Iptables 服务配置文件: /etc/sysconfig/iptables-config

Iptables 规则保存文件: /etc/sysconfig/iptables

打开 iptables 转发: echo "1"> /proc/sys/net/ipv4/ip_forward

0x04 iptables 命令参考


命令:

1. 表名

表名: Filter, NAT, Mangle, Raw

起包过滤功能的为表 Filter ,可以不填,不填默认为 Filter

2. 命令选项

选项名 功能及特点
-A 在指定链的末尾添加( –append )一条新的规则
-D 删除( –delete )指定链中的某一条规则,按规则序号或内容确定要删除的规则
-I 在指定链中插入( –insert )一条新的规则,默认在链的开头插入
-R 修改、替换( –replace )指定链中的一条规则,按规则序号或内容确定
-L 列出( –list )指定链中的所有的规则进行查看,默认列出表中所有链的内容
-F 清空( –flush )指定链中的所有规则,默认清空表中所有链的内容
-N 新建( –new-chain )一条用户自己定义的规则链
-X 删除指定表中用户自定义的规则链( –delete-chain )
-P 设置指定链的默认策略( –policy )
-n 用数字形式( –numeric )显示输出结果,若显示主机的 IP 地址而不是主机名
-P 设置指定链的默认策略( –policy )
-v 查看规则列表时显示详细( –verbose )的信息
-V 查看 iptables 命令工具的版本( –Version )信息
-h 查看命令帮助信息( –help )
–line-number 查看规则列表时,同时显示规则在链中的顺序号

3. 链名

可以根据数据流向来确定具体使用哪个链,在 Filter 中的使用情况如下:

4. 条件匹配

条件匹配分为基本匹配和扩展匹配,拓展匹配又分为隐式扩展和显示扩展。

a) 基本匹配包括:

匹配参数 说明
-p 指定规则协议,如 tcp, udp,icmp 等,可以使用 all 来指定所有协议
-s 指定数据包的源地址参数,可以使 IP 地址、网络地址、主机名
-d 指定目的地址
-i 输入接口
-o 输出接口

b) 隐式扩展包括:

enter image description here

c) 常用显式扩展

enter image description here

5. 目标值

数据包控制方式包括四种为:

0x05 Iptables 常见命令


a) 1. 删除 iptables 现有规则

b) 2. 查看 iptables 规则

c) 3. 增加一条规则到最后

d) 4. 添加一条规则到指定位置

e) 5.   删除一条规则

f) 6. 修改一条规则

g) 7. 设置默认策略

h) 8. 允许远程主机进行 SSH 连接

i) 9. 允许本地主机进行 SSH 连接

j) 10. 允许 HTTP 请求

k) 11. 限制 ping 192.168.146.3 主机的数据包数,平均 2/s 个,最多不能超过 3 个

l) 12. 限制 SSH 连接速率 ( 默认策略是 DROP)

0x06 如何正确配置 iptables


a) 1. 删除现有规则

iptables -F

b) 2.   配置默认链策略

c) 3. 允许远程主机进行 SSH 连接

d) 4. 允许本地主机进行 SSH 连接

e) 5. 允许 HTTP 请求

0x07 使用 iptables 抵抗常见攻击


1. 防止 syn 攻击

思路一:限制 syn 的请求速度(这个方式需要调节一个合理的速度值,不然会影响正常用户的请求)

思路二:限制单个 ip 的最大 syn 连接数

2. 防止 DOS 攻击

利用 recent 模块抵御 DOS 攻击

单个 IP 最多连接 3 个会话

只要是新的连接请求,就把它加入到 SSH 列表中

5 分钟内你的尝试次数达到 3 次,就拒绝提供 SSH 列表中的这个 IP 服务。被限制 5 分钟后即可恢复访问。

3. 防止单个 ip 访问量过大

4. 木马反弹

5. 防止 ping 攻击

个人见解,不足之处求指正。

赞(2)
未经允许不得转载:91云(91yun.co) » 看了那么多iptables的教程,这篇教程还是比较全面易懂的

留言 5

  • 昵称 (必填)
  • 邮箱 (必填)
  1. #2

    您用的是哪个主题?

    白菜3年前 (2016-05-11)回复
    • dux

      91yun3年前 (2016-05-11)回复
  2. #1

    您好,我VPS搭建了SSR和ss-bash。请问有什么命令可以让一个端口限制多少个设备登录?谢了

    学习3年前 (2016-05-11)回复
    • 目前我也只看到限制1个ip的设备数。针对端口的设备数我也不知道怎么弄。

      91yun3年前 (2016-05-11)回复
      • 求教 一个IP怎么限制一台设备

        洋葱3年前 (2016-05-12)回复