網(wǎng)絡(luò)安全攻防:Linux系統(tǒng)安全之系統(tǒng)概述
1. 歷史
Linux操作系統(tǒng)誕生于1991年,它是Unix的一種典型的克隆系統(tǒng)。它是一個基于POSIX和Unix的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng),同時,Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計思想,也是一個性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。
Linux 最早是由芬蘭人 Linus Torvalds 設(shè)計的。當時由于 Unix 的商業(yè)化,Andrew Tannebaum教授開發(fā)了Minix操作系統(tǒng),以便于不受AT&T許可協(xié)議的約束,為教學科研提供一個操作系統(tǒng)。當時發(fā)布在 Internet 上,免費給全世界的學生使用。Minix 具有較多 Unix的特點,但與Unix不完全兼容。
1991年10月5日,Linus Torvalds為了給Minix用戶設(shè)計一個比較有效的Unix PC版本,自己寫了一個“類Minix”的操作系統(tǒng)。當時最初的內(nèi)核版本是0.02。Linus將它發(fā)到了Minix新聞組,很快就得到了響應(yīng)。Linus 在這種簡單的任務(wù)切換機制上進行擴展,并在很多熱心支持者的幫助下開發(fā)和推出了Linux的第一個穩(wěn)定的工作版本。
1991年11月,Linux0.10版本推出,0.11版本隨后在1991年12月推出,當時將它發(fā)布在Internet上,免費供人們使用。當Linux非常接近于一種可靠的、穩(wěn)定的系統(tǒng)時,Linus決定將0.13版本稱為0.95版本。1994年3月,正式的Linux 1.0出現(xiàn)了,這差不多是一種正式的獨立宣言。截至那時為止,它的用戶基數(shù)已經(jīng)發(fā)展得很大,而且Linux的核心開發(fā)隊伍也建立起來了。
開源、開放、免費是Linux的魅力所在。在Linux誕生之后,借助于Internet網(wǎng)絡(luò),在全世界計算機愛好者的共同努力下,成為目前世界上使用者最多的一種類似Unix的操作系統(tǒng)。在Linux操作系統(tǒng)的誕生、成長和發(fā)展過程中,在Unix操作系統(tǒng)、GNU計劃、POSIX標準、Internet網(wǎng)絡(luò)等方面起了重要作用。
Linux還具有良好的可移植性。Linux編譯后可在大量處理器和具有不同體系結(jié)構(gòu)約束和需求的平臺上運行。經(jīng)過30年的發(fā)展,Linux操作系統(tǒng)成為在服務(wù)器、嵌入式系統(tǒng)和個人計算機等多個方面得到廣泛應(yīng)用的操作系統(tǒng)。
2. 內(nèi)核簡介
Linux是一個一體化內(nèi)核(Monolithic Kernel)系統(tǒng)。
“內(nèi)核”指的是一個提供硬件抽象層、磁盤及文件系統(tǒng)控制、多任務(wù)等功能的系統(tǒng)軟件。一個內(nèi)核不是一套完整的操作系統(tǒng)。一套基于Linux內(nèi)核的完整操作系統(tǒng)叫作Linux操作系統(tǒng),或是 GNU/Linux。設(shè)備驅(qū)動程序可以完全訪問硬件。Linux 內(nèi)的設(shè)備驅(qū)動程序可以方便地以模塊化的形式設(shè)置,并在系統(tǒng)運行期間可直接裝載或卸載。
內(nèi)核是Linux操作系統(tǒng)的最重要的部分,從最初的0.95版本到目前的4.9.4版本,Linux內(nèi)核開發(fā)經(jīng)過了30年的時間,其架構(gòu)已經(jīng)十分穩(wěn)定。Linux內(nèi)核的編號采用如下編號形式。
主版本號.次版本號.修訂版本號
不過,在2.6.x 系列中,從2.6.8.1 內(nèi)核開始,一直持續(xù)到2.6.11,較小的內(nèi)核隱患和安全補丁被賦予了次小數(shù)點版本號,如2.6.11.1。
在Linux的Terminal下,查看本機內(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為用戶準備好的需要加入內(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ā)行版本眾多,曾有人收集過超過300種的發(fā)行版本,其中主要有3個著名發(fā)行版本Fedora、SUSE、Debian,如圖1所示。
圖1 Linux發(fā)行版本
Fedora是基于RHEL、CentOS、Scientific Linux和Oracle Linux的社區(qū)版本。Fedora比RHEL打包了更多的軟件包。CentOS用于活動、演示和實驗,因為它是對最終用戶免費提供的,并具有比Fedora的一個更長的發(fā)布周期(通常每隔半年左右發(fā)布一個新版本)。
SUSE、SUSE Linux Enterprise Server(SLES)和openSUSE之間的關(guān)系類似于Fedora、Red Hat Enterprise Linux和CentOS的關(guān)系。
Debian是包括Ubuntu在內(nèi)許多發(fā)行版的上游,而Ubuntu又是Linux Mint及其他發(fā)行版的上游。Debian在服務(wù)器和桌面電腦領(lǐng)域都有著廣泛的應(yīng)用。它是一個純開源計劃,并著重在一個關(guān)鍵點上——穩(wěn)定性。它也給用戶提供了最大的和完整的軟件倉庫。Kali Linux 就是基于Debian發(fā)展而來的。
其他發(fā)行版本還有Magela、Manjaro、Arch、Elementary和Gentoo Linux等。
4. 文件系統(tǒng)
Linux與Windows下的文件組織結(jié)構(gòu)不同,Linux不使用磁盤分區(qū)符號來訪問文件系統(tǒng),而是將整個文件系統(tǒng)表示成樹狀的結(jié)構(gòu),Linux 系統(tǒng)每增加一個文件系統(tǒng)都會將其加入到這個樹中。
操作系統(tǒng)文件結(jié)構(gòu)的開始,只有一個單獨的頂級目錄結(jié)構(gòu),叫作根目錄。所有一切都從“根”開始,用“/”代表,并且延伸到子目錄。
DOS/Windows下文件系統(tǒng)按照磁盤分區(qū)的概念分類,目錄都存于分區(qū)上。而Linux則通過“掛載”的方式把所有分區(qū)都放置在“根”下各個目錄里。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命令來直觀顯示文件目錄的樹狀結(jié)構(gòu)如下。
- root@ZYB-KALI-VM:~# tree
- ├── Desktop
- ├── Documents
- ├── Downloads
- ├── Music
- ├── Pictures
- ├── Public
- ├── Templates
- └── Videos
- 8 directories,0 files