主頁 >  其他 > 熱門技術中的應用-云計算中的網路3-云中網路安全

熱門技術中的應用-云計算中的網路3-云中網路安全

2020-10-30 23:50:22 其他

在今天的內容開始之前,我先賣個關子,文章結尾,我會放一個超級彩蛋,所以,今天的內容你一定要看到最后哦!

上一節我們看到,做一個小區物業維護一個大家共享的環境,還是挺不容易的,如果都是自覺遵守規則的住戶那還好,如果遇上不自覺的住戶就會很麻煩,

就像公有云的環境,其實沒有你想的那么純凈,各懷鬼胎的黑客到處都是,掃描你的埠呀,探測一下你啟動的什么應用啊,看一看是否有各種漏洞啊,這就像小偷潛入小區后,這兒看看,那兒瞧瞧,窗戶有沒有關嚴了啊,窗簾有沒有拉上啊,主人睡了沒,是不是時機潛入室內啊,等等,

假如你創建了一臺虛擬機,里面明明跑了一個電商應用,這是你非常重要的一個應用,你會把它進行安全加固,這臺虛擬機的作業系統里,不小心安裝了另外一個后臺應用,監聽著一個埠,而你的警覺性沒有這么高,

虛擬機的這個埠是對著公網開放的,碰巧這個后臺應用本身是有漏洞的,黑客就可以掃描到這個埠,然后通過這個后臺應用的埠侵入你的機器,將你加固好的電商網站黑掉,這就像你買了一個五星級的防盜門,卡車都撞不開,但是廁所窗戶的門把手是壞的,小偷從廁所里面就進來了,

所以對于公有云上的虛擬機,我的建議是僅僅開放需要的埠,而將其他的埠一概關閉,這個時候,你只要通過安全措施守護好這個唯一的入口就可以了,采用的方式常常是用 ACL(Access Control List,訪問控制串列)來控制 IP 和埠,

設定好了這些規則,只有指定的 IP 段能夠訪問指定的開放介面,就算有個有漏洞的后臺行程在那里,也會被屏蔽,黑客進不來,在云平臺上,這些規則的集合常稱為安全組,那安全組怎么實作呢?

我們來復習一下,當一個網路包進入一臺機器的時候,都會做什么事情,

首先拿下 MAC 頭看看,是不是我的,如果是,則拿下 IP 頭來,得到目標 IP 之后呢,就開始進行路由判斷,在路由判斷之前,這個節點我們稱為 PREROUTING,如果發現 IP 是我的,包就應該是我的,就發給上面的傳輸層,這個節點叫作 INPUT,如果發現 IP 不是我的,就需要轉發出去,這個節點稱為 FORWARD,如果是我的,上層處理完畢后,一般會回傳一個處理結果,這個處理結果會發出去,這個節點稱為 OUTPUT,無論是 FORWARD 還是 OUTPUT,都是路由判斷之后發生的,最后一個節點是 POSTROUTING

整個程序如圖所示,

 

 

整個包的處理程序還是原來的程序,只不過為什么要格外關注這五個節點呢?

 是因為在 Linux 內核中,有一個框架叫 Netfilter,它可以在這些節點插入 hook 函式,這些函式可以截獲資料包,對資料包進行干預,例如做一定的修改,然后決策是否接著交給 TCP/IP 協議堆疊處理;或者可以交回給協議堆疊,那就是 ACCEPT;或者過濾掉,不再傳輸,就是 DROP;還有就是 QUEUE,發送給某個用戶態行程處理,

這個比較難理解,經常用在內部負載均衡,就是過來的資料一會兒傳給目標地址 1,一會兒傳給目標地址 2,而且目標地址的個數和權重都可能變,協議堆疊往往處理不了這么復雜的邏輯,需要寫一個函式接管這個資料,實作自己的邏輯,

有了這個 Netfilter 框架就太好了,你可以在 IP 轉發的程序中,隨時干預這個程序,只要你能實作這些 hook 函式,

一個著名的實作,就是內核模塊 ip_tables,它在這五個節點上埋下函式,從而可以根據規則進行包的處理,按功能可分為四大類:連接跟蹤(conntrack)、資料包的過濾(filter)、網路地址轉換(nat)和資料包的修改(mangle),其中連接跟蹤是基礎功能,被其他功能所依賴,其他三個可以實作包的過濾、修改和網路地址轉換,

在用戶態,還有一個你肯定知道的客戶端程式 iptables,用命令列來干預內核的規則,內核的功能對應 iptables 的命令列來講,就是表和鏈的概念,

 

 

iptables 的表分為四種:raw–>mangle–>nat–>filter,這四個優先級依次降低,raw 不常用,所以主要功能都在其他三種表里實作,每個表可以設定多個鏈,

filter 表處理過濾功能,主要包含三個鏈:

  • INPUT 鏈:過濾所有目標地址是本機的資料包;
  • FORWARD 鏈:過濾所有路過本機的資料包;
  • OUTPUT 鏈:過濾所有由本機產生的資料包,

nat 表主要是處理網路地址轉換,可以進行 Snat(改變資料包的源地址)、Dnat(改變資料包的目標地址),包含三個鏈:

  • PREROUTING 鏈:可以在資料包到達防火墻時改變目標地址;
  • OUTPUT 鏈:可以改變本地產生的資料包的目標地址;
  • POSTROUTING 鏈:在資料包離開防火墻時改變資料包的源地址,

mangle 表主要是修改資料包,包含:

  • PREROUTING 鏈;
  • INPUT 鏈;
  • FORWARD 鏈;
  • OUTPUT 鏈;
  • POSTROUTING 鏈,

將 iptables 的表和鏈加入到上面的程序圖中,就形成了下面的圖和程序,

 

 

  1.  資料包進入的時候,先進 mangle 表的 PREROUTING 鏈,在這里可以根據需要,改變資料包頭內容之后,進入 nat 表的 PREROUTING 鏈,在這里可以根據需要做 Dnat,也就是目標地址轉換,
  2. 進入路由判斷,要判斷是進入本地的還是轉發的
  3. 如果是進入本地的,就進入 INPUT 鏈,之后按條件過濾限制進入,
  4. 之后進入本機,再進入 OUTPUT 鏈,按條件過濾限制出去,離開本地,
  5. 如果是轉發就進入 FORWARD 鏈,根據條件過濾限制轉發
  6. 之后進入 POSTROUTING 鏈,這里可以做 Snat,離開網路介面,
iptables -t filter -A INPUT -s 0.0.0.0/0.0.0.0 -d X.X.X.X -j DROP

-s 表示源 IP 地址段,-d 表示目標地址段,DROP 表示丟棄,也即無論從哪里來的,要想訪問我這臺機器,全部拒絕,誰也黑不進來,

但是你發現壞了,ssh 也進不來了,都不能遠程運維了,可以打開一下,

iptables -I INPUT -s 0.0.0.0/0.0.0.0 -d X.X.X.X -p tcp --dport 22 -j ACCEPT

如果這臺機器是提供的是 web 服務,80 埠也應該打開,當然一旦打開,這個 80 埠就需要很好的防護,但是從規則角度還是要打開,

iptables -A INPUT -s 0.0.0.0/0.0.0.0 -d X.X.X.X -p tcp --dport 80 -j ACCEPT

這樣就搞定了,其他的賬戶都封死,就一個防盜門可以進出,只要防盜門是五星級的,就比較安全了,

這些規則都可以在虛擬機里,自己安裝 iptables 自己配置,但是如果虛擬機數目非常多,都要配置,對于用戶來講就太麻煩了,能不能讓云平臺把這部分作業做掉呢?

當然可以了,在云平臺上,一般允許一個或者多個虛擬機屬于某個安全組,而屬于不同安全組的虛擬機之間的訪問以及外網訪問虛擬機,都需要通過安全組進行過濾,

 

 例如圖中,我們會創建一系列的網站,都是前端在 Tomcat 里面,對外開放 8080 埠,資料庫使用 MySQL,開放 3306 埠,

為了方便運維,我們創建兩個安全組,將 Tomcat 所在的虛擬機放在安全組 A 里面,在安全組 A 里面,允許任意 IP 地址 0.0.0.0/0 訪問 8080 埠,但是對于 ssh 的 22 埠,僅僅允許管理員網段 203.0.113.0/24 訪問,

我們將 MySQL 所在的虛擬機放在安全組 B 里面,在安全組 B 里面,僅僅允許來自安全組 A 的機器訪問 3306 埠,但是對于 ssh 的 22 埠,同樣允許管理員網段 203.0.113.0/24 訪問,

這些安全組規則都可以自動下發到每個在安全組里面的虛擬機上,從而控制一大批虛擬機的安全策略,這種批量下發是怎么做到的呢?你還記得這幅圖嗎?

 

 

兩個 VM 都通過 tap 網卡連接到一個網橋上,但是網橋是二層的,兩個 VM 之間是可以隨意互通的,因而需要有一個地方統一配置這些 iptables 規則,

可以多加一個網橋,在這個網橋上配置 iptables 規則,將在用戶在界面上配置的規則,放到這個網橋上,然后在每臺機器上跑一個 Agent,將用戶配置的安全組變成 iptables 規則,配置在這個網橋上,

安全問題解決了,iptables 真強大!別忙,iptables 除了 filter,還有 nat 呢,這個功能也非常重要,

前面的章節我們說過,在設計云平臺的時候,我們想讓虛擬機之間的網路和物理網路進行隔離,但是虛擬機畢竟還是要通過物理網和外界通信的,因而需要在出物理網的時候,做一次網路地址轉換,也即 nat,這個就可以用 iptables 來做,

我們學過,IP 頭里面包含源 IP 地址和目標 IP 地址,這兩種 IP 地址都可以轉換成其他地址,轉換源 IP 地址的,我們稱為 Snat;轉換目標 IP 地址的,我們稱為 Dnat,

你有沒有思考過這個問題,TCP 的訪問都是一去一回的,而你在你家里連接 WiFi 的 IP 地址是一個私網 IP,192.168.1.x,當你通過你們家的路由器訪問 163 網站之后,網站的回傳結果如何能夠到達你的筆記本電腦呢?肯定不能通過 192.168.1.x,這是個私網 IP,不具有公網上的定位能力,而且用這個網段的人很多,茫茫人海,怎么能夠找到你呢?

所以當你從你家里訪問 163 網站的時候,在你路由器的出口,會做 Snat 的,運營商的出口也可能做 Snat,將你的私網 IP 地址,最終轉換為公網 IP 地址,然后 163 網站就可以通過這個公網 IP 地址回傳結果,然后再 nat 回來,直到到達你的筆記本電腦,

云平臺里面的虛擬機也是這樣子的,它只有私網 IP 地址,到達外網網口要做一次 Snat,轉換成為機房網 IP,然后出資料中心的時候,再轉換為公網 IP,

 

這里有一個問題是,在外網網口上做 Snat 的時候,是全部轉換成一個機房網 IP 呢,還是每個虛擬機都對應一個機房網 IP,最終對應一個公網 IP 呢?前面也說過了,公網 IP 非常貴,虛擬機也很多,當然不能每個都有單獨的機房網和公網 IP 了,因此這種 Snat 是一種特殊的 Snat,MASQUERADE(地址偽裝),

這種方式下,所有的虛擬機共享一個機房網和公網的 IP 地址,所有從外網網口出去的,都轉換成為這個 IP 地址,那又一個問題來了,都變成一個公網 IP 了,當 163 網站回傳結果的時候,給誰呢,再 nat 成為哪個私網的 IP 呢?

這就是 Netfilter 的連接跟蹤(conntrack)功能了,對于 TCP 協議來講,肯定是上來先建立一個連接,可以用“源 / 目的 IP+ 源 / 目的埠”唯一標識一條連接,這個連接會放在 conntrack 表里面,當時是這臺機器去請求 163 網站的,雖然源地址已經 Snat 成公網 IP 地址了,但是 conntrack 表里面還是有這個連接的記錄的,當 163 網站回傳資料的時候,會找到記錄,從而找到正確的私網 IP 地址,

這是虛擬機做客戶端的情況,如果虛擬機做服務器呢?也就是說,如果虛擬機里面部署的就是 163 網站呢?

這個時候就需要給這個網站配置固定的物理網的 IP 地址和公網 IP 地址了,這時候就需要詳細配置 Snat 規則和 Dnat 規則了,

當外部訪問進來的時候,外網網口會通過 Dnat 規則將公網 IP 地址轉換為私網 IP 地址,到達虛擬機,虛擬機里面是 163 網站,回傳結果,外網網口會通過 Snat 規則,將私網 IP 地址轉換為那個分配給它的固定的公網 IP 地址,

類似的規則如下:

  • 源地址轉換 (Snat):iptables -t nat -A -s 私網 IP -j Snat --to-source 外網 IP
  • 目的地址轉換 (Dnat):iptables -t nat -A -PREROUTING -d 外網 IP -j Dnat --to-destination 私網 IP

到此為止 iptables 解決了非法偷窺隱私的問題,

 

小結

  • 云中的安全策略的常用方式是,使用 iptables 的規則,請記住它的五個階段,PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING,
  • iptables 分為四種表,raw、mangle、nat、filter,其中安全策略主要在 filter 表中實作,而虛擬網路和物理網路地址的轉換主要在 nat 表中實作,

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/195995.html

標籤:其他

上一篇:熱門技術中的應用-云計算中的網路2-軟體定義網路

下一篇:熱門技術中的應用-云計算中的網路4-云中網路QoS:鄰居瘋狂下電影,我該怎么辦?

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more