網(wǎng)絡(luò)安全攻防:Linux系統(tǒng)安全之系統(tǒng)概述
1. 歷史
Linux操作系統(tǒng)誕生于1991年,它是Unix的一種典型的克隆系統(tǒng)。它是一個(gè)基于POSIX和Unix的多用戶(hù)、多任務(wù)、支持多線程和多CPU的操作系統(tǒng),同時(shí),Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計(jì)思想,也是一個(gè)性能穩(wěn)定的多用戶(hù)網(wǎng)絡(luò)操作系統(tǒng)。
Linux 最早是由芬蘭人 Linus Torvalds 設(shè)計(jì)的。當(dāng)時(shí)由于 Unix 的商業(yè)化,Andrew Tannebaum教授開(kāi)發(fā)了Minix操作系統(tǒng),以便于不受AT&T許可協(xié)議的約束,為教學(xué)科研提供一個(gè)操作系統(tǒng)。當(dāng)時(shí)發(fā)布在 Internet 上,免費(fèi)給全世界的學(xué)生使用。Minix 具有較多 Unix的特點(diǎn),但與Unix不完全兼容。
1991年10月5日,Linus Torvalds為了給Minix用戶(hù)設(shè)計(jì)一個(gè)比較有效的Unix PC版本,自己寫(xiě)了一個(gè)“類(lèi)Minix”的操作系統(tǒng)。當(dāng)時(shí)最初的內(nèi)核版本是0.02。Linus將它發(fā)到了Minix新聞組,很快就得到了響應(yīng)。Linus 在這種簡(jiǎn)單的任務(wù)切換機(jī)制上進(jìn)行擴(kuò)展,并在很多熱心支持者的幫助下開(kāi)發(fā)和推出了Linux的第一個(gè)穩(wěn)定的工作版本。
1991年11月,Linux0.10版本推出,0.11版本隨后在1991年12月推出,當(dāng)時(shí)將它發(fā)布在Internet上,免費(fèi)供人們使用。當(dāng)Linux非常接近于一種可靠的、穩(wěn)定的系統(tǒng)時(shí),Linus決定將0.13版本稱(chēng)為0.95版本。1994年3月,正式的Linux 1.0出現(xiàn)了,這差不多是一種正式的獨(dú)立宣言。截至那時(shí)為止,它的用戶(hù)基數(shù)已經(jīng)發(fā)展得很大,而且Linux的核心開(kāi)發(fā)隊(duì)伍也建立起來(lái)了。
開(kāi)源、開(kāi)放、免費(fèi)是Linux的魅力所在。在Linux誕生之后,借助于Internet網(wǎng)絡(luò),在全世界計(jì)算機(jī)愛(ài)好者的共同努力下,成為目前世界上使用者最多的一種類(lèi)似Unix的操作系統(tǒng)。在Linux操作系統(tǒng)的誕生、成長(zhǎng)和發(fā)展過(guò)程中,在Unix操作系統(tǒng)、GNU計(jì)劃、POSIX標(biāo)準(zhǔn)、Internet網(wǎng)絡(luò)等方面起了重要作用。
Linux還具有良好的可移植性。Linux編譯后可在大量處理器和具有不同體系結(jié)構(gòu)約束和需求的平臺(tái)上運(yùn)行。經(jīng)過(guò)30年的發(fā)展,Linux操作系統(tǒng)成為在服務(wù)器、嵌入式系統(tǒng)和個(gè)人計(jì)算機(jī)等多個(gè)方面得到廣泛應(yīng)用的操作系統(tǒng)。
2. 內(nèi)核簡(jiǎn)介
Linux是一個(gè)一體化內(nèi)核(Monolithic Kernel)系統(tǒng)。
“內(nèi)核”指的是一個(gè)提供硬件抽象層、磁盤(pán)及文件系統(tǒng)控制、多任務(wù)等功能的系統(tǒng)軟件。一個(gè)內(nèi)核不是一套完整的操作系統(tǒng)。一套基于Linux內(nèi)核的完整操作系統(tǒng)叫作Linux操作系統(tǒng),或是 GNU/Linux。設(shè)備驅(qū)動(dòng)程序可以完全訪問(wèn)硬件。Linux 內(nèi)的設(shè)備驅(qū)動(dòng)程序可以方便地以模塊化的形式設(shè)置,并在系統(tǒng)運(yùn)行期間可直接裝載或卸載。
內(nèi)核是Linux操作系統(tǒng)的最重要的部分,從最初的0.95版本到目前的4.9.4版本,Linux內(nèi)核開(kāi)發(fā)經(jīng)過(guò)了30年的時(shí)間,其架構(gòu)已經(jīng)十分穩(wěn)定。Linux內(nèi)核的編號(hào)采用如下編號(hào)形式。
主版本號(hào).次版本號(hào).修訂版本號(hào)
不過(guò),在2.6.x 系列中,從2.6.8.1 內(nèi)核開(kāi)始,一直持續(xù)到2.6.11,較小的內(nèi)核隱患和安全補(bǔ)丁被賦予了次小數(shù)點(diǎn)版本號(hào),如2.6.11.1。
在Linux的Terminal下,查看本機(jī)內(nèi)核信息的命令如下。
- root@kali:~# uname-a
- Linux ZYB-KALI-VM 4.0.0-kali1-amd64 #1 SMP Debian 4.0.4-1+kali2(2015-06-03)x86_64 GNU/Linux
加載內(nèi)核模塊的命令為:
- insmod filename
刪除內(nèi)核模塊的命令為:
- rmmod filename
其中,filename為用戶(hù)準(zhǔn)備好的需要加入內(nèi)核的模塊文件,查看系統(tǒng)已經(jīng)加載的內(nèi)核模塊(部分)如下。
- root@kali:~# lsmod
- Module Size Used by
- cfg80211 454656 0
- binfmt_misc 20480 1
- nfnetlink_queue 24576 0
- nfnetlink_log 20480 0
- Bluetooth 425984 0
- nfnetlink 16384 2 nfnetlink_log,nfnetlink_queue
- Rfkill 20480 3 cfg80211,bluetooth
- vmw_vsock_vmci_transport 28672 2
- vsock 32768 3 vmw_vsock_vmci_transport
- snd_ens1371 24576 4
- snd_rawmidi 28672 1 snd_ens1371
- snd_seq_device 16384 1 snd_rawmidi
- snd_ac97_codec 118784 1 snd_ens1371
- snd_pcm 90112 2 snd_ac97_codec,snd_ens1371
- snd_timer 28672 1 snd_pcm
- snd 69632 14 snd_ac97_codec,snd_timer,snd_pcm,snd_rawmidi,snd_ens1371,snd_seq_device
- ppdev 20480 0
- soundcore 16384 1 snd
- ac97_bus 16384 1 snd_ac97_codec
3. 發(fā)行版本
Linux的發(fā)行版本眾多,曾有人收集過(guò)超過(guò)300種的發(fā)行版本,其中主要有3個(gè)著名發(fā)行版本Fedora、SUSE、Debian,如圖1所示。
圖1 Linux發(fā)行版本
Fedora是基于RHEL、CentOS、Scientific Linux和Oracle Linux的社區(qū)版本。Fedora比RHEL打包了更多的軟件包。CentOS用于活動(dòng)、演示和實(shí)驗(yàn),因?yàn)樗菍?duì)最終用戶(hù)免費(fèi)提供的,并具有比Fedora的一個(gè)更長(zhǎng)的發(fā)布周期(通常每隔半年左右發(fā)布一個(gè)新版本)。
SUSE、SUSE Linux Enterprise Server(SLES)和openSUSE之間的關(guān)系類(lèi)似于Fedora、Red Hat Enterprise Linux和CentOS的關(guān)系。
Debian是包括Ubuntu在內(nèi)許多發(fā)行版的上游,而Ubuntu又是Linux Mint及其他發(fā)行版的上游。Debian在服務(wù)器和桌面電腦領(lǐng)域都有著廣泛的應(yīng)用。它是一個(gè)純開(kāi)源計(jì)劃,并著重在一個(gè)關(guān)鍵點(diǎn)上——穩(wěn)定性。它也給用戶(hù)提供了最大的和完整的軟件倉(cāng)庫(kù)。Kali Linux 就是基于Debian發(fā)展而來(lái)的。
其他發(fā)行版本還有Magela、Manjaro、Arch、Elementary和Gentoo Linux等。
4. 文件系統(tǒng)
Linux與Windows下的文件組織結(jié)構(gòu)不同,Linux不使用磁盤(pán)分區(qū)符號(hào)來(lái)訪問(wèn)文件系統(tǒng),而是將整個(gè)文件系統(tǒng)表示成樹(shù)狀的結(jié)構(gòu),Linux 系統(tǒng)每增加一個(gè)文件系統(tǒng)都會(huì)將其加入到這個(gè)樹(shù)中。
操作系統(tǒng)文件結(jié)構(gòu)的開(kāi)始,只有一個(gè)單獨(dú)的頂級(jí)目錄結(jié)構(gòu),叫作根目錄。所有一切都從“根”開(kāi)始,用“/”代表,并且延伸到子目錄。
DOS/Windows下文件系統(tǒng)按照磁盤(pán)分區(qū)的概念分類(lèi),目錄都存于分區(qū)上。而Linux則通過(guò)“掛載”的方式把所有分區(qū)都放置在“根”下各個(gè)目錄里。Kali Linux系統(tǒng)的文件結(jié)構(gòu)如下。
- root@kali:/# ls-l
- total 96
- -rw-r--r--1 root root 0 Aug 11 2015 0
- drwxrwxr-x 2 root root 4096May 16 2016 bin
- drwxr-xr-x 3 root root 4096May 16 2016 boot
- drwxr-xr-x 18 root root 3200 Feb 26 18:35 dev
- drwxr-xr-x 182 root root 12288 Feb 26 18:40 etc
- drwxr-xr-x 2 root root 4096 Jul 23 2015 home
- lrwxrwxrwx 1 root root 34 Apr 28 2016 initrd.img->/boot/initrd.img-4.0.0-kali1-amd64
- drwxr-xr-x 20 root root 4096 Apr 28 2016 lib
- drwxr-xr-x 2 root root 4096May 16 2016 lib64
- drwxr-xr-x 2 root root 4096 Aug 11 2015 live-build
- drwx------2 root root 16384 Apr 28 2016 lost+found
- drwxr-xr-x 4 root root 4096May 18 2016 media
- drwxr-xr-x 3 root root 4096May 16 2016 mnt
- drwxr-xr-x 3 root root 4096 Aug 11 2015 opt
- dr-xr-xr-x 147 root root 0 Feb 26 18:34 proc
- drwxr-xr-x 16 root root 4096 Feb 26 18:38 root
- drwxr-xr-x 29 root root 880 Feb 26 18:40 run
- drwxr-xr-x 2 root root 12288May 16 2016 sbin
- drwxr-xr-x 3 root root 4096 Aug 11 2015 srv
- dr-xr-xr-x 13 root root 0 Feb 26 18:34 sys
- drwxrwxrwt 13 root root 4096 Feb 26 18:40 tmp
- drwxr-xr-x 14 root root 4096 Aug 11 2015 usr
- drwxr-xr-x 13 root root 4096 Apr 28 2016 var
還可以使用tree命令來(lái)直觀顯示文件目錄的樹(shù)狀結(jié)構(gòu)如下。
- root@ZYB-KALI-VM:~# tree
- ├── Desktop
- ├── Documents
- ├── Downloads
- ├── Music
- ├── Pictures
- ├── Public
- ├── Templates
- └── Videos
- 8 directories,0 files