Linux必學的60個命令(5)-網路安全

newdayhope發表於2006-04-28
作者:曹元其 發文時間:2004.12.03
雖然Linux和Windows NT/2000系統一樣是一個多使用者的系統,但是它們之間有不少重要
的差別。對於很多習慣了Windows系統的管理員來講,如何保證Linux作業系統安全、可靠將
會面臨許多新的挑戰。本文將重點介紹Linux系統安全的命令。

passwd

1.作用
passwd命令原來修改賬戶的登陸密碼,使用許可權是所有使用者。

2.格式
passwd [選項] 賬戶名稱

3.主要引數
-l:鎖定已經命名的賬戶名稱,只有具備超級使用者許可權的使用者方可使用。
-u:解開賬戶鎖定狀態,只有具備超級使用者許可權的使用者方可使用。
-x, --maximum=DAYS:最大密碼使用時間(天),只有具備超級使用者許可權的使用者方可
使用。
-n, --minimum=DAYS:最小密碼使用時間(天),只有具備超級使用者許可權的使用者方可
使用。
-d:刪除使用者的密碼, 只有具備超級使用者許可權的使用者方可使用。
-S:檢查指定使用者的密碼認證種類, 只有具備超級使用者許可權的使用者方可使用。

4.應用例項

$ passwd
Changing password for user cao.
Changing password for cao
(current) UNIX password:
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.



從上面可以看到,使用passwd命令需要輸入舊的密碼,然後再輸入兩次新密碼。

su

1.作用
su的作用是變更為其它使用者的身份,超級使用者除外,需要鍵入該使用者的密碼。

2.格式
su [選項]... [-] [USER [ARG]...]

3.主要引數
-f , --fast:不必讀啟動檔案(如 csh.cshrc 等),僅用於csh或tcsh兩種Shell。
-l , --login:加了這個引數之後,就好像是重新登陸為該使用者一樣,大部分環境
變數(例如HOME、SHELL和USER等)都是以該使用者(USER)為主,並且工作目錄也會改變
。如果沒有指定USER,預設情況是root。
-m, -p ,--preserve-environment:執行su時不改變環境變數。
-c command:變更賬號為USER的使用者,並執行指令(command)後再變回原來使用者

USER:欲變更的使用者賬號,ARG傳入新的Shell引數。

4.應用例項
變更賬號為超級使用者,並在執行df命令後還原使用者。 su -c df root

umask

1.作用
umask設定使用者檔案和目錄的檔案建立預設遮蔽值,若將此命令放入profile檔案,就可
控制該使用者後續所建檔案的存取許可。它告訴系統在建立檔案時不給誰存取許可。使用許可權
是所有使用者。

2.格式
umask [-p] [-S] [mode]

3.引數
-S:確定當前的umask設定。
-p:修改umask 設定。
[mode]:修改數值。

4.說明
傳統Unix的umask值是022,這樣就可以防止同屬於該組的其它使用者及別的組的使用者修
改該使用者的檔案。既然每個使用者都擁有並屬於一個自己的私有組,那麼這種“組保護模式”
就不在需要了。嚴密的許可權設定構成了Linux安全的基礎,在許可權上犯錯誤是致命的。需要
注意的是,umask命令用來設定程式所建立的檔案的讀寫許可權,最保險的值是0077,即關閉
建立檔案的程式以外的所有程式的讀寫許可權,表示為-rw-------。在~/.bash_profile中,
加上一行命令umask 0077可以保證每次啟動Shell後, 程式的umask許可權都可以被正確設定。

5.應用例項

umask -S
u=rwx,g=rx,o=rx
umask -p 177
umask -S
u=rw,g=,o=



上述5行命令,首先顯示當前狀態,然後把umask值改為177,結果只有檔案所有者具有
讀寫檔案的許可權,其它使用者不能訪問該檔案。這顯然是一種非常安全的設定。

chgrp

1.作用
chgrp表示修改一個或多個檔案或目錄所屬的組。使用許可權是超級使用者。

2.格式
chgrp [選項]... 組 檔案...

chgrp [選項]... --reference=參考檔案 檔案...

將每個的所屬組設定為。

3.引數
-c, --changes :像 --verbose,但只在有更改時才顯示結果。
--dereference:會影響符號連結所指示的物件,而非符號連結本身。
-h, --no-dereference:會影響符號連結本身,而非符號連結所指示的目的地(當系統
支援更改符號連結的所有者,此選項才有效)。
-f, --silent, --quiet:去除大部分的錯誤資訊。
--reference=參考檔案:使用的所屬組,而非指定的。
-R, --recursive:遞迴處理所有的檔案及子目錄。
-v, --verbose:處理任何檔案都會顯示資訊。

4.應用說明
該命令改變指定指定檔案所屬的使用者組。其中group可以是使用者組ID,也可以是
/etc/group檔案中使用者組的組名。檔名是以空格分開的要改變屬組的檔案列表,支援通配
符。如果使用者不是該檔案的屬主或超級使用者,則不能改變該檔案的組。

5.應用例項
改變/opt/local /book/及其子目錄下的所有檔案的屬組為book,命令如下:
$ chgrp - R book /opt/local /book

chmod

1.作用
chmod命令是非常重要的,用於改變檔案或目錄的訪問許可權,使用者可以用它控制檔案或
目錄的訪問許可權,使用許可權是超級使用者。

2.格式
chmod命令有兩種用法。一種是包含字母和運算子表示式的字元設定法(相對許可權設定
);另一種是包含數字的數字設定法(絕對許可權設定)。

(1)字元設定法
chmod [who] [+ | - | =] [mode] 檔名

◆操作物件who可以是下述字母中的任一個或它們的組合
u:表示使用者,即檔案或目錄的所有者。
g:表示同組使用者,即與檔案屬主有相同組ID的所有使用者。
o:表示其它使用者。
a:表示所有使用者,它是系統預設值。

◆運算子號
+:新增某個許可權。
-:取消某個許可權。
=:賦予給定許可權,並取消其它所有許可權(如果有的話)。

◆設定mode的許可權可用下述字母的任意組合
r:可讀。
w:可寫。
x:可執行。
X:只有目標檔案對某些使用者是可執行的或該目標檔案是目錄時才追加x屬性。
s:檔案執行時把程式的屬主或組ID置為該檔案的檔案屬主。方式“u+s”設定檔案的
使用者ID位,“g+s”設定組ID位。
t:儲存程式的文字到交換裝置上。
u:與檔案屬主擁有一樣的許可權。
g:與和檔案屬主同組的使用者擁有一樣的許可權。
o:與其它使用者擁有一樣的許可權。
檔名:以空格分開的要改變許可權的檔案列表,支援萬用字元。
一個命令列中可以給出多個許可權方式,其間用逗號隔開。

(2) 數字設定法
數字設定法的一般形式為: chmod [mode] 檔名

數字屬性的格式應為3個0到7的八進位制數,其順序是(u)(g)(o)檔名,以空格分開的要
改變許可權的檔案列表,支援萬用字元。

數字表示的許可權的含義如下:0001為所有者的執行許可權;0002為所有者的寫許可權;
0004為所有者的讀許可權;0010為組的執行許可權;0020為組的寫許可權;0040為組的讀許可權;
0100為其他人的執行許可權;0200為其他人的寫許可權;0400為其他人的讀許可權;1000為貼上位
置位;2000表示假如這個檔案是可執行檔案,則為組ID為位置位,否則其中檔案鎖定位置位
;4000表示假如這個檔案是可執行檔案,則為使用者ID為位置位。

3.例項
如果一個系統管理員寫了一個表格(tem)讓所有使用者填寫,那麼必須授權使用者對這個文
件有讀寫許可權,可以使用命令:#chmod 666 tem

上面程式碼中,這個666數字是如何計算出來的呢?0002為所有者的寫許可權,0004為所有
者的讀許可權,0020為組的寫許可權,0040為組的讀許可權, 0200為其他人的寫許可權,0400為其
他人的讀許可權,這6個數字相加就是666(注以上數字都是八進位制數),結果見圖1所示。


圖1 用chmod數字方法設定檔案許可權


從圖1可以看出,tem檔案的許可權是-rw-rw-rw-,即使用者對這個檔案有讀寫許可權。

如果用字元許可權設定使用下面命令:
#chmod a =wx tem
chown

1.作用
更改一個或多個檔案或目錄的屬主和屬組。使用許可權是超級使用者。

2.格式
chown [選項] 使用者或組 檔案

3.主要引數
--dereference:受影響的是符號連結所指示的物件,而非符號連結本身。
-h, --no-dereference:會影響符號連結本身,而非符號連結所指示的目的地(當系統
支援更改符號連結的所有者,此選項才有效)。
--from=目前所有者:目前組只當每個檔案的所有者和組符合選項所指定的,才會更改所
有者和組。其中一個可以省略,這已省略的屬性就不需要符合原有的屬性。
-f, --silent, --quiet:去除大部分的錯誤資訊。
-R, --recursive:遞迴處理所有的檔案及子目錄。
-v, --verbose:處理任何檔案都會顯示資訊。

4.說明
chown 將指定檔案的擁有者改為指定的使用者或組,使用者可以是使用者名稱或使用者ID;組可以
是組名或組ID;檔案是以空格分開的要改變許可權的檔案列表,支援萬用字元。系統管理員經常
使用chown命令,在將檔案複製到另一個使用者的目錄下以後,讓使用者擁有使用該檔案的許可權


5.應用例項
1.把檔案shiyan.c的所有者改為wan
$ chown wan shiyan.c

2.把目錄/hi及其下的所有檔案和子目錄的屬主改成wan,屬組改成users。
$ chown - R wan.users /hi

chattr

1.作用
修改ext2和ext3檔案系統屬性(attribute),使用許可權超級使用者。

2.格式
chattr [-RV] [-+=AacDdijsSu] [-v version] 檔案或目錄

3.主要引數
-R:遞迴處理所有的檔案及子目錄。
-V:詳細顯示修改內容,並列印輸出。
-:失效屬性。
+:啟用屬性。
= :指定屬性。
A:Atime,告訴系統不要修改對這個檔案的最後訪問時間。
S:Sync,一旦應用程式對這個檔案執行了寫操作,使系統立刻把修改的結果寫到磁碟

a:Append Only,系統只允許在這個檔案之後追加資料,不允許任何程式覆蓋或截斷這
個檔案。如果目錄具有這個屬性,系統將只允許在這個目錄下建立和修改檔案,而不允許刪
除任何檔案。
i:Immutable,系統不允許對這個檔案進行任何的修改。如果目錄具有這個屬性,那麼
任何的程式只能修改目錄之下的檔案,不允許建立和刪除檔案。
D:檢查壓縮檔案中的錯誤。
d:No dump,在進行檔案系統備份時,dump程式將忽略這個檔案。
C:Compress,系統以透明的方式壓縮這個檔案。從這個檔案讀取時,返回的是解壓之
後的資料;而向這個檔案中寫入資料時,資料首先被壓縮之後才寫入磁碟。
s:Secure Delete,讓系統在刪除這個檔案時,使用0填充檔案所在的區域。
u:Undelete,當一個應用程式請求刪除這個檔案,系統會保留其資料塊以便以後能夠
恢復刪除這個檔案。

4.說明
chattr 命令的作用很大,其中一些功能是由Linux核心版本來支援的,如果Linux核心
版本低於2.2,那麼許多功能不能實現。同樣-D檢查壓縮檔案中的錯誤的功能,需要
2.5.19以上核心才能支援。另外,透過chattr命令修改屬效能夠提高系統的安全性,但是它
並不適合所有的目錄。chattr命令不能保護/、/dev、/tmp、/var目錄。

5.應用例項
1.恢復/root目錄,即子目錄的所有檔案
# chattr -R +u/root

2.用chattr命令防止系統中某個關鍵檔案被修改
在Linux下,有些配置檔案(passwd ,fatab)是不允許任何人修改的,為了防止被誤刪除
或修改,可以設定該檔案的“不可修改位(immutable)”,命令如下:
# chattr +i /etc/fstab

sudo

1.作用
sudo是一種以限制配置檔案中的命令為基礎,在有限時間內給使用者使用,並且記錄到日
志中的命令,許可權是所有使用者。

2.格式

sudo [-bhHpV] [-s ] [-u ] [指令]
sudo [-klv]



3.主要引數

-b:在後臺執行命令。
-h:顯示幫助。
-H:將HOME環境變數設為新身份的HOME環境變數。
-k:結束密碼的有效期,即下次將需要輸入密碼。
-l:列出當前使用者可以使用的命令。
-p:改變詢問密碼的提示符號。
-s :執行指定的Shell。
-u :以指定的使用者為新身份,不使用時預設為root。
-v:延長密碼有效期5分鐘。



4.說明
sudo 命令的配置在/etc/sudoers檔案中。當使用者使用sudo時,需要輸入口令以驗證使
用者身份。隨後的一段時間內可以使用定義好的命令,當使用配置檔案中沒有的命令時,將
會有報警的記錄。sudo是系統管理員用來允許某些使用者以root身份執行部分/全部系統命令
的程式。一個明顯的用途是增強了站點的安全性,如果需要每天以超級使用者的身份做一些日
常工作,經常執行一些固定的幾個只有超級使用者身份才能執行的命令,那麼用sudo是非常適
合的。

ps

1.作用
ps顯示瞬間程式 (process) 的動態,使用許可權是所有使用者。

2.格式
ps [options] [--help]

3.主要引數
ps的引數非常多, 此出僅列出幾個常用的引數。

-A:列出所有的程式。
-l:顯示長列表。
-m:顯示記憶體資訊。
-w:顯示加寬可以顯示較多的資訊。
-e:顯示所有程式。
a:顯示終端上的所有程式,包括其它使用者的程式。
-au:顯示較詳細的資訊。
-aux:顯示所有包含其它使用者的程式。



4.說明
要對程式進行監測和控制,首先要了解當前程式的情況,也就是需要檢視當前程式。
ps命令就是最基本、也是非常強大的程式檢視命令。使用該命令可以確定有哪些程式正在運
行、執行的狀態、程式是否結束、程式有沒有殭屍、哪些程式佔用了過多的資源等。圖2給
出了ps-aux命令詳解。大部分資訊都可以透過執行該命令得到。最常用的三個引數是u、a、
x。下面就結合這三個引數詳細說明ps命令的作用:ps aux


圖2 ps-aux命令詳解


圖2第2行程式碼中,USER表示程式擁有者;PID表示程式標示符;%CPU表示佔用的CPU使用
率;%MEM佔用的實體記憶體使用率;VSZ表示佔用的虛擬記憶體大小;RSS為程式佔用的實體記憶體
值;TTY為終端的次要裝置號碼。

STAT 表示程式的狀態,其中D為不可中斷的靜止(I/O動作);R正在執行中;S靜止狀
態;T暫停執行;Z不存在,但暫時無法消除;W沒有足夠的記憶體分頁可分配;高優先序的進
程;N低優先序的程式;L有記憶體分頁分配並鎖在記憶體體內 (實時系統或 I/O)。START為程式
開始時間。TIME為執行的時間。COMMAND是所執行的指令。

4.應用例項
在進行系統維護時,經常會出現記憶體使用量驚人,而又不知道是哪一個程式佔用了大量
程式的情況。除了可以使用top命令檢視記憶體使用情況之外,還可以使用下面的命令:
ps aux | sort +5n

who

1.作用
who顯示系統中有哪些使用者登陸系統,顯示的資料包含了使用者ID、使用的登陸終端、
上線時間、呆滯時間、CPU佔用,以及做了些什麼。 使用許可權為所有使用者。

2.格式
who - [husfV] [user]

3.主要引數

-h:不要顯示標題列。
-u:不要顯示使用者的動作/工作。
-s:使用簡短的格式來顯示。
-f:不要顯示使用者的上線位置。
-V:顯示程式版本。



4.說明
該命令主要用於檢視當前線上上的使用者情況。如果使用者想和其它使用者建立即時通訊,
比如使用talk命令,那麼首先要確定的就是該使用者確實線上上,不然 talk程式就無法建立起
來。又如,系統管理員希望監視每個登入的使用者此時此刻的所作所為,也要使用who命令。
who命令應用起來非常簡單,可以比較準確地掌握使用者的情況,所以使用非常廣泛。

動手練習

1.使用Linux命令檢測系統入侵者
安裝過Mandrake Linux和Red Hat Linux的使用者都會知道,Linux系統會內建三種不同
級別(標準、高、更高)的防火牆,當進行了Linux伺服器的安裝和一些基本的設定後,服
務器應該說是比較安全的,但是也會有駭客透過各種方法利用系統管理員的疏忽侵入系統。
如何快速查詢駭客非常重要。一般來說,可以使用命令查詢駭客是否入侵,見表 1。

表1 查詢駭客入侵現象的命令對應表


舉例說明,如果駭客嗅探網路,那麼它必須使網路卡介面處於混雜模式,使用下面命令進
行查詢:

#ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:00:E8:A0:25:86
inet addr:192.168.1.7 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING PROMISCUOUS MTU:1500 Metric:1
......



從這個命令的輸出中,可以看到上面講到的這些概念。第一行的00:00:E8:A0:25:86是
mac地址,第二行的192.168.1.7是IP地址,第四行講的是接收資料狀態,這時正在被駭客嗅
探。一般而言,網路卡有幾種接收資料幀的狀態,如Broadcast、Multicast、 Promiscuous等
。Broadcast是指接收所有型別為廣播報文的資料幀;Multicast是指接收特定的組播報文;
Promiscuous 則是通常說的混雜模式,是指對報文中的目的硬體地址不加任何檢查、全部接
收的工作模式。

2.限制su命令的濫用
我們知道,超級使用者在Linux中有最大的權利,幾乎所有駭客都想得到這個目標。
Linux可以增加對切換到超級使用者的限制。使用PAM (Pluggable Authentication Modules
)可以禁止除在wheel組以外的任何人su成root,修改/etc/pam.d/su檔案,除去遮蔽標識#
。使用 /usr/sbin/usermod G10 bjecadm將bjecadm這個賬號加入gid為10的組,就是wheel
組。命令如下:

/etc/pam.d/su # 使用密碼驗證#
auth sufficient /lib/security/pam_wheel.so debug
# 限制只有wheel組使用者才可以切換到root#
auth required /lib/security/pam_wheel.so use_uid
chmod -G10 bjecadm



另外,每當使用者試圖使用su命令進入系統使用者時,命令將在/usr/adm/sulog檔案中寫一
條資訊,若該檔案記錄了大量試圖用su進入root的無效操作資訊,則表明了可能有人企圖破譯
root口令。

Linux命令有著強大的功能。對於Linux系統管理員來說,往往只需要透過各種安全命令
技巧,組合構成安全防線。從電腦保安的角度看,世界上沒有絕對安全的計算機系統,
Linux系統也不例外。[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/181629/viewspace-831234/,如需轉載,請註明出處,否則將追究法律責任。

相關文章