Skip to content
WONGCW 網誌
  • 首頁
  • 論壇
  • 微博
  • 壁紙下載
  • 免費圖床
  • 視頻下載
  • 聊天室
  • SEO工具
  • 支援中心
  • 表格製作
  • More
    • 在線名片
    • 網頁搜索
    • 天氣預報
    • 二維碼生成器
    • WordPress 插件及主題下載
  • Search Icon

WONGCW 網誌

記錄生活經驗與點滴

iptables 基础

iptables 基础

2018-09-20 Comments 0 Comment

iptables 基本命令

任务时间:5min ~ 10min

iptables 可以简单理解为 Linux 系统内核级防火墙 netfilter 的用户态客户端。

Linux 管理员通过调用 iptables 命令,配置 Linux 内核 netfilter 模块规则,对网络数据包的流动进行管理。

iptables 语法

我们来看看 iptables 命令的语法帮助信息,并将其保存到文本文件

想要通过步骤检查,可以在终端输入:

sudo iptables -h > ~/iptables_help

在新标签页打开帮助文本,以便后续切换标签进行查询

查看 iptables 表的规则

iptables 有[表 (tables)] 的概念,每张表又包含不同[链 (chains)],大部分情况下我们仅需要使用 filter 和 nat 两张表的链就可以完成功能。

使用以下命令可以查看 filter 表中的规则。

sudo iptables -L -n

参数解析 -L 列出规则, -n 不显示域名,命令默认显示的是 filter 表,可以通过 -t 参数来指定其他表

可以看到目前 filter 表中有 3 条链: INPUT, FORWARD, OUTPUT。 3 条链都没有任何规则存在,因此通过网卡的网络数据包不会受到任何影响。

iptables 包含 5 张表(tables):

  • raw 用于配置数据包,raw 中的数据包不会被系统跟踪。
  • filter 是用于存放所有与防火墙相关操作的默认表。
  • nat 用于网络地址转换(例如:端口转发)。
  • mangle 用于对特定数据包的修改。
  • security 用于强制访问控制网络规则。

链可以看作是一系列规则集合,默认的链被用于不同的场景,用户也可以创建自定义的链。例如:

  • filter 表的 INPUT 链用于进入网卡的数据包过滤
  • filter 表的 OUTPUT 链用于过滤网卡对外发送的数据包过滤 一条链中的规则从上自下顺序执行。

实验

请使用 iptables 命令查看 nat 表的规则,并输出到 /home/ubuntu/iptables_nat

sudo iptables -L -n -t nat > /home/ubuntu/iptables_nat

场景:禁止访问目的地址

任务时间:5min ~ 10min

添加一条规则到 Filter 表

在没有任何防火墙规则时,尝试 ping 百度的服务器,ping 是可以正常返回的。

ping -c 4 www.baidu.com
PING qcloud.com (119.29.47.192) 56(84) bytes of data.
64 bytes from 119.29.47.192: icmp_seq=1 ttl=58 time=3.11 ms
64 bytes from 119.29.47.192: icmp_seq=2 ttl=58 time=3.10 ms
64 bytes from 119.29.47.192: icmp_seq=3 ttl=58 time=3.17 ms

假设我们作为 Linux 管理员,不希望有人从本机 ping 百度的服务器,那么就可以用到如下的 iptables 命令:

sudo iptables -I OUTPUT -p icmp -d www.baidu.com -j DROP

参数解析 -I 添加规则到链的最前面, -p 匹配协议, -d 匹配目的地址, -j DROP 将匹配的数据包实施丢掉动作

重要:

因为在 iptables 一个链中的规则是从上到下依次执行的,因此一条规则在链中的位置十分重要。

例如一条拒绝全部连接的规则 -j REJECT 一定要放在链的最后,而允许通行的规则要放在这条规则之前。

否则所有网络数据包进入链后直接匹配到这条规则,将导致所有连接被拒绝。

现在我们可以用 sudo iptables -L -n 命令看到 filter 表的 OUTPUT 链中新增了两条记录,其中 destination 地址是 DNS 返回的百度服务器 IP 地址。

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
DROP       icmp --  0.0.0.0/0            220.181.112.244
DROP       icmp --  0.0.0.0/0            220.181.111.188

这时再 ping 百度服务器会发现无法 ping 通了,因为访问百度服务器 IP 地址的数据包已经被防火墙过滤丢掉了

ping -c 4 www.baidu.com
PING www.a.shifen.com (220.181.111.188) 56(84) bytes of data.
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted

实验:请添加一条防火墙规则禁止本机 ping 8.8.8.8

场景:导出、编辑、导入规则

任务时间:10min ~ 15min

在进行一系列复杂的防火墙配置时,大多数时候不建议直接调用 iptables 做规则修改。 因为任何一条错误的配置或者一个 typo (输入错误)都有可能导致严重的网络问题。

一个最佳实践是导出现有规则到文本文件,对该文本文件进行编辑,进行检查无误后再将其导入。

导出规则

通过如下命令导出所有规则到文本文件

sudo iptables-save > /home/ubuntu/iptables_rules

编辑规则

在新标签页打开 iptables_rules,在 filter 表的 :OUTPUT ACCEPT 链下面添加一条规则

-A OUTPUT -p icmp -d 114.114.114.114 -j DROP

按 Ctrl-S 保存该文件

导入规则

使用命令将编辑过的规则重新导入 iptables

sudo iptables-restore /home/ubuntu/iptables_rules

使用 sudo iptables -L -n 查看是否有禁止 ping 114.114.114.114 的新增规则

使用 sudo ping 114.114.114.114 查看新规则是否生效

清除全部规则

现在我们清除上一小节中增加的规则,还原到没有任何规则的初始状态。

Note:当你因为错误的配置 iptables 导致自己无法远程访问的时候,从 console 执行这条命令可以快速修复状态。

sudo iptables -F

查看 iptables 规则,发现前面定义的规则已经被清除。

尝试 ping 百度服务器和 114.114.114.114,都恢复到可以 ping 的状态。

iptables 还提供 -X 参数清除[自定义链], -Z 参数重置计数器

除默认链之外由用户自建的链

iptables进阶场景:黑/白名单

任务时间:10min ~ 15min

某公司禁止特定的 PC 设备访问和工作无关的网站,而其他设备则不受限制。

分析:

1.首先明确是对外访问限制,所以应该编辑 iptables OUTPUT 链进行限制

2.其次,由于目的地址可能是数百个网站,针对每一台PC配置数百条规则是不可接受的,因此我们选择使用自建一条链来实现。

3.公司只限制部分 PC 访问,因此对 PC 的匹配最好使用 IP 地址匹配,不匹配的设备则不受限制。

Note: 对于进入 INPUT 链的入站规则还可以采用 mac 匹配。

实验:

假设本机作为一台网关使用,被限制的目标网站有 114.114.114.114 和 220.181.111.188,被限制访问的 PC 就是本机。

查看本机 IP 地址。

sudo ip a show eth0

在 inet 之后的就是本机网口的 IP 地址,例如 10.135.166.86

编辑 iptables 规则:

//清除已有规则

sudo iptables -F

//清除自建链

sudo iptables -X

//新建一个叫做 BLACKLIST 的链

sudo iptables -N BLACKLIST

//当访问的源 IP 地址是本机的时候进入 BLACKLIST 链

sudo iptables -A OUTPUT -s 10.135.166.86 -j BLACKLIST

//向 BLACKLIST 链添加 2 条规则

sudo iptables -A BLACKLIST -d 114.114.114.114 -j DROP
sudo iptables -A BLACKLIST -d 220.181.111.188 -j DROP

如上配置后,会发现本机已经无法 ping BLACKLIST 中的目的地址了。

  • 如果后续要增加新的禁止访问的目的地址,则只需向 BLACKLIST 链添加新规则。
  • 如果需要限制另一台 PC 通过本网关转发访问外网,则只需添加一条 OUTPUT 链的源 IP 匹配规则并指向 -j BLACKLIST。

实验:

请添加一条规则,限制源 IP 为 123.123.123.123 的 PC 访问 BLACKLIST 中的所有目的地址。

进阶场景:端口映射

任务时间:10min ~ 15min

分析: 通常来讲应该首先考虑程序本身能否配置监听多个端口,或者使用负载均衡器作为代理程序。 但在本次实验中我们将使用 iptables 监听 8080 端口并将网络数据包转发给本地80端口

实验:

首先测试 telnet 0 80 和 telnet 0 8080 可以看到 80 和 8080 端口都是不通的。

接下来我们用 netcat 监听 80 端口:

sudo nc -k -l 80 &

这时候 telnet 0 80 发现 80 端口可以工作了。

退出telnet需要按 Ctrl + ] (右方括号) ,再按 q 回车。

下面我们用 iptables 做一个端口映射

sudo iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 8080 -j DNAT --to 127.0.0.1:80

这里我们用到了 -t nat 参数,表示我们使用了 netfilter 的 nat 表。在 nat 表的 OUTPUT 链上做了一个 -j DNAT 转发,将访问内网 8080 端口的数据包转向了 80 端口。

这时候 telnet 0 8080 发现 8080 端口也可以工作了。

如果是监听外网的 8080 端口转发到 80 端口,则需要执行以下命令:

sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-ports 80

通过使用 PREROUTING 链直接将访问 8080 端口的数据包转发到 80 端口

恭喜你完成了 iptables 基础教程

任务时间:时间未知

更多 iptables 高级功能

由于条件所限,iptables nat 和路由转发能完成的更多高级功能没有覆盖到。 敬请期待后续高级课程。

分享此文:

  • 分享到 Twitter(在新視窗中開啟)
  • 按一下以分享至 Facebook(在新視窗中開啟)
  • 分享到 WhatsApp(在新視窗中開啟)
  • 按一下以分享到 Telegram(在新視窗中開啟)
  • 分享到 Pinterest(在新視窗中開啟)
  • 分享到 Reddit(在新視窗中開啟)
  • 按一下即可分享至 Skype(在新視窗中開啟)
  • 按一下即可以電子郵件傳送連結給朋友(在新視窗中開啟)
  • 點這裡列印(在新視窗中開啟)

相關


Linux資訊, 教學資源

Post navigation

PREVIOUS
基于 CentOS 7 搭建 GitLab
NEXT
搭建微信 AI 机器人

發表迴響 取消回覆

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料。

More results...

Generic filters
Exact matches only
Search in title
Search in content
Search in excerpt
Filter by 分類
網站公告
Featured
限時免費
ESET NOD32
WINDOWS 10 &11 INSIDER PREVIEW
Windows 軟件下載
系統軟件
辦公軟件
圖像處理
影音媒體
網絡軟件
應用軟件
Mac 軟件下載
安卓軟件下載
網絡資訊
Mac資訊
Linux資訊
VPS資訊
NASA資訊
金融資訊
WhatsApp Stickers教學
WordPress資訊
WeChat資訊
PHP資訊
Plesk資訊
TensorFlow
教學資源
開源程序
網頁工具
SEO工具
醫療健康
旅遊及消閒
其他資訊
Content from
Content to
2018 年 9 月
一 二 三 四 五 六 日
 12
3456789
10111213141516
17181920212223
24252627282930
« 8 月   10 月 »

分類

  • 網站公告
  • 限時免費
  • ESET NOD32
  • WINDOWS 10 &11 INSIDER PREVIEW
  • Windows 軟件下載
  • 系統軟件
  • 辦公軟件
  • 圖像處理
  • 影音媒體
  • 網絡軟件
  • 應用軟件
  • Mac 軟件下載
  • 安卓軟件下載
  • 網絡資訊
  • Mac資訊
  • Linux資訊
  • VPS資訊
  • NASA資訊
  • WhatsApp Stickers教學
  • WordPress資訊
  • WeChat資訊
  • PHP資訊
  • Plesk資訊
  • TensorFlow
  • 教學資源
  • 開源程序
  • 網頁工具
  • SEO工具
  • 醫療健康
  • 旅遊及消閒
  • 其他資訊

彙整

近期文章

  • Windows 11 22H2更新為所有PC帶來全屏小工具 2023-01-29
  • 網絡神經科學理論- 實現智力的最佳預測 2023-01-29
  • 水族館鯊魚在有雄性在場的情況下出現”孤雌生殖”的奇特案例 2023-01-29
  • 《滿江紅》連發數條微博回應爭議:莫須有欲加之罪何患無辭 2023-01-29
  • 麻省理工學院開發出超低噪音無人機螺旋槳 2023-01-29
  • NASA為深空任務提供的革命性的推進設計 2023-01-29
  • 天文學家可能已經發現星系如何改變它們的形狀 2023-01-29
  • 健康的植物性飲食可以降低男性患結腸癌的風險 2023-01-29
  • 斯坦福大學推出DetectGPT 幫助教育工作者反擊ChatGPT生成的論文 2023-01-29
  • 小行星採礦在未來可能成為一件非常現實的事情 2023-01-29

熱門文章與頁面︰

  • DP vs HDMI 誰才是遊戲玩家最佳選擇?
  • ESET NOD32 LICENSE KEY (UPDATED 2023-01-17)
  • Autodesk AutoCAD 2021 正式版註冊版-簡體/繁體中文/英文版
  • Explorer Patcher:讓Windows 11恢復Windows 10的行為特徵
  • 打車叫到特斯拉不會開門很尷尬?官方介紹開關門方法
  • ESET NOD32 LICENSE KEY (UPDATED 2022-01-01)
  • 微軟強化Game Bar:可顯示Xbox手柄剩餘電量
  • 配備F1發動機:梅賽德斯-AMG One量產車終於要來了
  • CCleaner全家桶激活密鑰
  • 自來水、白開水、純淨水?有些水絕不能用到加濕器

投遞稿件

歡迎各界人士投遞稿件到admin@wongcw.com

請提供以下資料:

1.你的名字

2.你的電郵

3.分類目錄

4.文章標題

5.文章摘要

6.文章內容

7.文章來源

 

聯繫我們

查詢,投稿,商務合作:
​admin@wongcw.com
​技術支援:
​support@wongcw.com
​客户服務:
​cs@wongcw.com

QQ群:833641851

快帆

MALUS

極度掃描

DMCA.com Protection Status

WONGCW 網誌

  • 免責聲明
  • 捐助我們
  • ThemeNcode PDF Viewer
  • ThemeNcode PDF Viewer SC
  • Events

服務器提供

本站使用之服務器由ikoula提供。

聯繫我們

查詢,投稿,商務合作:
​admin@wongcw.com
​技術支援:
​support@wongcw.com
​客户服務:
​cs@wongcw.com

QQ群:833641851

© 2023   All Rights Reserved.
X