九色91_成人精品一区二区三区中文字幕_国产精品久久久久一区二区三区_欧美精品久久_国产精品99久久久久久久vr_www.国产视频

Hello! 歡迎來(lái)到小浪云!


使用Linux容器迅速搭建滲透測(cè)試環(huán)境(下篇)


在本文的上篇中,我們?yōu)樽x者介紹了如何配制宿主機(jī)和網(wǎng)絡(luò),在本文篇中,我們將為讀者介紹容器的創(chuàng)建和啟動(dòng)等內(nèi)容。

創(chuàng)建我們的第一個(gè)容器

lxc發(fā)行版附帶了許多工具來(lái)幫助用戶創(chuàng)建和管理容器。第一個(gè)是lxc-create,該工具可以通過(guò)模板為各種Linux平臺(tái)創(chuàng)建最小化的安裝。您可以通過(guò)查看/usr/share/lxc/templates目錄來(lái)查看當(dāng)前可用的模板。在我的Slackware 14.2宿主機(jī)上,我的模板目錄如下所示。

使用Linux容器迅速搭建滲透測(cè)試環(huán)境(下篇)
我可以選擇部署其中的任何一種平臺(tái)。關(guān)于如何在Linux上創(chuàng)建一個(gè)帶有iptables的家庭路由器,網(wǎng)上可用的教程數(shù)不勝數(shù),所以這里就不贅述了,同時(shí),我覺(jué)得很多讀者可能早就有這方面的經(jīng)驗(yàn)了。讀者可以在計(jì)算機(jī)上部署dhcpd和bind或dnsmasq,同時(shí)為測(cè)試環(huán)境部署DNS和DHCP。接下來(lái)要介紹的是如何設(shè)置容器——我會(huì)繼續(xù)使用Slackware,但是,讀者可以使用自己喜好的系統(tǒng)。
lxc-create -n router -t slackware -B Btrfs
運(yùn)行上述命令,并稍等片刻以便從Web上獲取所需文件,最終會(huì)得到一個(gè)新的容器,名為“router”。就像網(wǎng)絡(luò)名稱一樣,我總是喜歡保持簡(jiǎn)潔明了,所以這里也是利用角色為其命名。
當(dāng)lxc-create生成目錄后,將得到/var/lib/lxc/router,其中存放與新容器關(guān)聯(lián)的所有文件。值得注意的是,它將包含兩部分內(nèi)容:定義容器的配置文件,以及保存容器文件系統(tǒng)的rootfs控制器(實(shí)際上是Btrfs子卷,稍后將詳細(xì)介紹)。
配置的具體內(nèi)容如下所示。其中用紅色標(biāo)識(shí)的內(nèi)容,是我修改過(guò)的;對(duì)于這些內(nèi)容,將在后面分別加以介紹。

# Template used to create this container: /usr/share/lxc/templates/lxc-slackware # Parameters passed to the template: # Template script checksum (SHA-1): 1d5a84ae1fd3725be88e7d347128402c61000d19 # For additional config options, please look at lxc.container.conf(5) # Uncomment the following line to support nesting containers: #lxc.include = /usr/share/lxc/config/nesting.conf # (Be aware this has security implications) lxc.start.auto = 1 #Probably change network.0 to dhcp inside the container at some point lxc.network.0.type = phys lxc.network.0.link = eth1 lxc.network.0.name = wan lxc.network.0.flags = up lxc.network.0.ipv4 = 192.168.1.20/24 lxc.network.0.ipv4.gateway = 192.168.1.1 lxc.network.0.hwaddr=DE:AD:BE:EF:FF:FF lxc.network.1.type = veth lxc.network.1.link = lab lxc.network.1.name = lab0 lxc.network.1.flags = up lxc.network.1.ipv4 = 192.168.16.254/24 lxc.network.1.hwaddr=DE:AD:BE:EF:00:FF lxc.rootfs = /var/lib/lxc/router/rootfs lxc.rootfs.backend = Btrfs lxc.utsname = router lxc.mount = /var/lib/lxc/router/fstab #lxc.console = none lxc.tty = 4 lxc.pts = 1024 lxc.rootfs = /var/lib/lxc/router/rootfs lxc.cgroup.devices.deny = a # /dev/null and zero lxc.cgroup.devices.allow = c 1:3 rwm lxc.cgroup.devices.allow = c 1:5 rwm # consoles lxc.cgroup.devices.allow = c 5:1 rwm lxc.cgroup.devices.allow = c 5:0 rwm lxc.cgroup.devices.allow = c 4:0 rwm lxc.cgroup.devices.allow = c 4:1 rwm # /dev/{,u}random lxc.cgroup.devices.allow = c 1:9 rwm lxc.cgroup.devices.allow = c 1:8 rwm lxc.cgroup.devices.allow = c 136:* rwm lxc.cgroup.devices.allow = c 5:2 rwm # rtc lxc.cgroup.devices.allow = c 254:0 rwm # we don’t trust even the root user in the container, better safe than sorry. # comment out only if you know what you’re doing. lxc.cap.drop = sys_module mknod mac_override mac_admin sys_time setfcap setpcap # you can try also this alternative to the line above, whatever suits you better. # lxc.cap.drop=sys_admin

首先,我將lxc.start.auto改為值1。大多數(shù)安裝了LXC的系統(tǒng)都提供了啟動(dòng)腳本,該腳本會(huì)尋找將該值等于1的容器,并在系統(tǒng)引導(dǎo)時(shí)自動(dòng)啟動(dòng)它們。請(qǐng)記住,要使其正常工作,需要預(yù)先提供所需的網(wǎng)橋和文件系統(tǒng)。
下一個(gè)修改之處是lxc.network.0.type的值——我已將其設(shè)置為“phys”,它代表物理適配器。lxc.network.0.link的值為eth1——這是我想要傳遞給容器的宿主機(jī)的第二個(gè)NIC。請(qǐng)注意,它將從正在運(yùn)行容器的宿主機(jī)的ifconfig輸出中消失。如果我們使用上行鏈路橋接器,那么類型將是“veth”,鏈路將是“uplnk”,以將其連接到宿主機(jī)上的橋接器上。最后,該接口在容器內(nèi)部的名稱為“wan”。此外,我還添加了網(wǎng)關(guān)和hwaddr條目,這些無(wú)需多言。就我而言,這個(gè)容器上行連接到我的家用路由器。當(dāng)容器啟動(dòng)時(shí),內(nèi)核將這些值作為最初值分配給接口。根據(jù)安裝的操作系統(tǒng)的不同,其啟動(dòng)腳本之后可能會(huì)重新配置該接口,也可能不會(huì)這樣做。
為了向容器添加更多接口,只需復(fù)制lxc.network.[N]節(jié),并根據(jù)需要增加索引[N]的值即可。但是,只能包含一個(gè)gateway語(yǔ)句。該路由器將提供兩個(gè)適配器。在我的實(shí)際實(shí)驗(yàn)室中,路由器有10個(gè)接口。為此,只需在主機(jī)上創(chuàng)建網(wǎng)橋,并為每個(gè)網(wǎng)橋添加相應(yīng)的lxc.network節(jié)就行了。
另外需要注意的是,hwaddr語(yǔ)句是可選的,但是,沒(méi)有為其賦值的話,那么容器啟動(dòng)時(shí)將選擇一個(gè)隨機(jī)值。雖然這確實(shí)有助于防止MAC地址沖突,但我在測(cè)試過(guò)程中發(fā)現(xiàn),這會(huì)導(dǎo)致容器頻繁的重啟。因?yàn)樗鼈冊(cè)诿看螁?dòng)時(shí)都會(huì)創(chuàng)建一個(gè)唯一的MAC,所以,很快就耗盡了DHCP地址池。所以,現(xiàn)在為會(huì)為容器指定MAC。但是,當(dāng)IP地址總是在變化時(shí),還是會(huì)令人非常抓狂。
最后需要注意的是:網(wǎng)絡(luò)的lxc.network.[N].name必須與鏈接名稱(網(wǎng)橋)不同,但可以跨容器進(jìn)行復(fù)制。例如,您可以創(chuàng)建一個(gè)名為lan的網(wǎng)橋和一個(gè)容器,并且它的網(wǎng)絡(luò)也名為lan,如果在多個(gè)容器中的話,這時(shí)可以將其命名為lan0。
最后一個(gè)修改之處是lxc.mount語(yǔ)句,它指向容器目錄中名為fstab的文件。LXC能夠理解普通的/etc/fstab格式的文件。所有路徑都應(yīng)該是相對(duì)于宿主機(jī)的相對(duì)路徑。容器啟動(dòng)時(shí),它將掛載其中規(guī)定的所有文件系統(tǒng)。搞定路由器容器后,我將在/var/lib/lxc/router/fstab創(chuàng)建fstab文件。

lxcpts /var/lib/lxc/router/rootfs/dev/pts devpts defaults,newinstance 0 0 none /var/lib/lxc/router/rootfs/proc proc defaults 0 0 none /var/lib/lxc/router/rootfs/sys sysfs defaults 0 0 none /dev/shm tmpfs defaults 0 0 none /run tmpfs defaults,mode=0755 0 0 /home /var/lib/lxc/router/home none bind,ro 0 0 /etc/hosts /var/lib/lxc/router/rootfs/etc/hosts none bind,ro 0 0 /etc/networks /var/lib/lxc/router/rootfs/etc/networks none bind,ro 0 0 /etc/passwd /var/lib/lxc/router/rootfs/etc/passwd none bind,ro 0 0 /etc/group /var/lib/lxc/router/rootfs/etc/group none bind,ro 0 0 /etc/shadow /var/lib/lxc/router/rootfs/etc/shadow none bind,ro 0 0 /etc/passwd /var/lib/lxc/router/rootfs/etc/passwd none bind,ro 0 0 /etc/shadow- /var/lib/lxc/router/rootfs/etc/shadow- none bind,ro 0 0 /etc/sudoers /var/lib/lxc/router/rootfs/etc/sudoers none bind,ro 0 0 /etc/sudoers.d /var/lib/lxc/router/rootfs/etc/sudoers.d none bind,ro 0 0 /etc/profile /var/lib/lxc/router/rootfs/etc/profile none bind,ro 0 0 /etc/profile.d /var/lib/lxc/router/rootfs/etc/profile.d none bind,ro 0 0 /etc/slackpkg/mirrors /var/lib/lxc/router/rootfs/etc/slackpkg/mirrors none bind,ro 0 0 /etc/resolv.conf /var/lib/lxc/router/rootfs/etc/resolv.conf none bind,ro 0 0

當(dāng)然,我們也可以將普通的塊設(shè)備安裝到容器中,盡管這里并沒(méi)有這么做。我已經(jīng)使用其特殊名稱掛載了proc和sysfs文件,以防容器中的啟動(dòng)腳本沒(méi)有照顧到它們。它們將收到一個(gè)容器名稱空間范圍內(nèi)的特殊視圖。
在這里,我想為大家介紹一下綁定裝載。利用它,我們可以將宿主機(jī)的文件系統(tǒng)掛載到容器名稱空間內(nèi)的某個(gè)位置。這意味著,可以在宿主機(jī)和任意數(shù)量的容器間共享/home,而無(wú)需設(shè)置NFS服務(wù)器,只需將相同的文件夾綁定到多個(gè)容器即可。當(dāng)然,這必須作為容器啟動(dòng)的一部分來(lái)進(jìn)行,但是如果在容器運(yùn)行后這樣做,外部文件系統(tǒng)在容器的名稱空間中不可見(jiàn)。對(duì)于目錄的綁定,想必大家已經(jīng)都很熟悉了,實(shí)際上,我們也可以對(duì)單個(gè)文件執(zhí)行該操作。如果缺少任何掛載點(diǎn),容器將無(wú)法啟動(dòng),這個(gè)問(wèn)題將在后文加以介紹。
我認(rèn)為路由器是可信基礎(chǔ)架構(gòu)的一部分,因此,我選擇與宿主機(jī)共享許多關(guān)鍵的身份驗(yàn)證文件,盡管是以只讀方式。通過(guò)綁定passwd、group、shadow和其他文件,我可以使用普通的用戶名和密碼進(jìn)行登錄。為方便起見(jiàn),我還可以共享一些配置文件。顯然,您可能不想在測(cè)試環(huán)境中對(duì)不受信任的系統(tǒng)執(zhí)行這些操作,或者您可能需要指定自己的共享的文件。

啟動(dòng)容器

現(xiàn)在我們的路由器已配置完畢,下面開(kāi)始啟動(dòng)它。從命令行中以手動(dòng)方式啟動(dòng)容器并不難,具體命令如下所示。

lxc-start -n router:

好吧,但是它能正常工作嗎?命令lxc-info -n router會(huì)告訴我們答案。如果容器正在運(yùn)行,會(huì)得到這樣的結(jié)果
使用Linux容器迅速搭建滲透測(cè)試環(huán)境(下篇)
lxc-info命令的運(yùn)行結(jié)果
如果啟動(dòng)失敗,可以嘗試使用以下命令重新啟動(dòng):

lxc-start -n router -F

執(zhí)行該命令后,容器將在前臺(tái)啟動(dòng),這樣就可以看到所有錯(cuò)誤信息了。此外,您還可以使用命令lxc-top查看正在運(yùn)行的容器的相關(guān)信息和統(tǒng)計(jì)數(shù)據(jù)。
接下來(lái)的步驟,是配置路由器,讓它完成路由和防火墻等任務(wù)。為了訪問(wèn)它,可以使用lxc-console -n router連接到虛擬控制臺(tái)。退出時(shí),可以使用。進(jìn)入控制臺(tái)后,可以使用installpkg、apt、yum等添加所需的軟件包。然后,就可以使用ssh或xnest來(lái)管理它了。

為什么要使用Btrfs?

現(xiàn)在,是Btrfs的表演時(shí)間。假設(shè)需要將10個(gè)Ubuntu工作站加入我的測(cè)試域,為此,我將部署一個(gè)Ubuntu容器作為模板。

lxc-create -t ubuntu -n TubuntuWS -B Btrfs

然后,還需要進(jìn)行進(jìn)行配置,就像前面的路由器配置一樣。接下來(lái),用單個(gè)veth接口設(shè)為lxc.network.0,并將lab設(shè)為鏈接。在這種情況下,就用不著使用特殊fstab了。同時(shí),也不用設(shè)置lxc.start.auto。然后,通過(guò)lxc-start -n TubuntuWS命令啟動(dòng)容器,并利用lxc-console進(jìn)行連接,這樣就可以構(gòu)建機(jī)器了。
如果一切都符合要求,就可以將其關(guān)閉了。為此,可以從宿主機(jī)的容器內(nèi)部執(zhí)行l(wèi)xc-stop -n TubuntuWS命令。
現(xiàn)在,我可以使用BTRFS輕松創(chuàng)建大量的低開(kāi)銷的副本。首先,在/var/lib/lxc/下為其他容器創(chuàng)建目錄。
然后,克隆模板容器,即TubuntuWS。

cat /var/lib/lxc/TubuntuWS/config | sed ‘s/TubuntuWS/ubuntuWS01/g’ > /var/lib/lxc/ubuntuWS01/config Btrfs subvolume snapshot /var/lib/lxc/TubuntuWS/rootfs /var/lib/lxc/ubuntuWS01/rootfs

好了,一個(gè)克隆完成了!當(dāng)然,我們可能需要更改一些網(wǎng)絡(luò)設(shè)置。之后,可以使用lxc-create啟動(dòng)它。由于Btrfs已經(jīng)創(chuàng)建了模板rootfs的寫時(shí)復(fù)制快照,所以至少在進(jìn)行大量更新之前,幾乎不會(huì)占用任何磁盤空間。
Btrfs也可以完成其他有用的事情。比如,可以根據(jù)需要制作任意數(shù)量的卷,創(chuàng)建快照的快照,也可以刪除原始源卷。
還記得路由器嗎?它所有的配置都是按照這里來(lái)的,所以請(qǐng)將其rootfs的快照創(chuàng)建為rootfs.bak。您甚至可以使用它來(lái)完成卷的增量式流備份。

相關(guān)閱讀

主站蜘蛛池模板: 久久久久国产精品午夜一区 | 国产精品亚洲视频 | 国产日韩一区二区三免费高清 | 伊人伊人 | 国产一级成人 | 午夜影院 | 99视频在线看 | 国产精品极品美女在线观看免费 | 99热视 | 亚洲国产成人精品女人久久久 | 成人在线免费看 | 国产一区二区精品自拍 | 三级视频在线观看 | 国产精品夜色一区二区三区 | 成人在线中文字幕 | 国产精品一区二区在线免费观看 | 久久国内精品 | 久久中文字幕一区 | 亚洲第一av | 在线亚洲一区 | 一区二区三区视频在线免费观看 | 成人国产精品久久久 | 涩涩鲁亚洲精品一区二区 | 国产激情一区二区三区 | 免费久久久久久 | 在线播放中文字幕 | 国产欧美视频一区二区三区 | 久久久久久免费免费 | 青青草精品视频 | 1级毛片| av黄色在线| 成年免费大片黄在线观看岛国 | 日本淫视频 | 91视视频在线观看入口直接观看 | 黄色片在线免费看 | 久久久国产一区二区三区 | 国产高清免费 | 一区二区三区福利视频 | 狠狠色综合久久婷婷 | 日韩一区二区av | 97超碰免费|