在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Linux/ linux 系統(tǒng)日常管理
初步進入 linux 世界
Linux 系統(tǒng)的遠程登錄
配置 Tomcat
配置 samba 服務(wù)器
LNMP 環(huán)境搭建
配置 FTP 服務(wù)
linux 系統(tǒng)用戶以及用戶組管理
正則表達式
LAMP環(huán)境搭建
安裝 RPM 包或者安裝源碼包
NFS 服務(wù)配置
文檔的壓縮與打包
Linux 操作系統(tǒng)的安裝
配置 squid 服務(wù)
Linux 文件與目錄管理
Linux 磁盤管理
學(xué)會使用簡單的 MySQL 操作
關(guān)于 Linux 的歷史
學(xué)習 shell 腳本之前的基礎(chǔ)知識
圖形界面還是命令窗口
文本編輯工具 vim
shell 腳本
使用 Nagios 搭建監(jiān)控服務(wù)器
linux 系統(tǒng)日常管理

linux 系統(tǒng)日常管理

筆者在前面介紹的內(nèi)容都為linux系統(tǒng)基礎(chǔ)類的,如果你現(xiàn)在把前面的內(nèi)容全部很好的掌握了,那最好了。不過筆者要說的是,即使你完全掌握了,你現(xiàn)在還是不能作為一名合格的linux系統(tǒng)管理員的,畢竟系統(tǒng)管理員要會做的事情太多了。本章以及后面章節(jié)筆者會陸續(xù)教給你作為linux系統(tǒng)管理員所必備的知識只要你熟練掌握那絕對可以勝任一個最初級的管理員職位,不過只是初級的,因為你還需要在日常的管理工作中獲得成長。

監(jiān)控系統(tǒng)的狀態(tài)

1. w 查看當前系統(tǒng)的負載

http://wiki.jikexueyuan.com/project/linux/images/15_1.png.jpg" alt="15_1.png.jpg" />

相信所有的linux管理員最常用的命令就是這個’w’ 了,該命令顯示的信息還是蠻豐富的。第一行從左面開始顯示的信息依次為:時間,系統(tǒng)運行時間,登錄用戶數(shù),平均負載。第二行開始以及下面所有的行,告訴我們的信息是,當前登錄的都有哪些用戶,以及他們是從哪里登錄的等等。其實,在這些信息當中,筆者認為我們最應(yīng)該關(guān)注的應(yīng)該是第一行中的’load average:’后面的三個數(shù)值。

第一個數(shù)值表示1分鐘內(nèi)系統(tǒng)的平均負載值;第二個數(shù)值表示5分鐘內(nèi)系統(tǒng)的平均負載值;第三個數(shù)值表示15分鐘系統(tǒng)的平均負載值這個值的意義是,單位時間段內(nèi)CPU活動進程數(shù)當然這個值越大就說明你的服務(wù)器壓力越大。一般情況下這個值只要不超過你服務(wù)器的cpu數(shù)量就沒有關(guān)系,如果你的服務(wù)器cpu數(shù)量為8,那么這個值若小于8,就說明你的服務(wù)器沒有壓力,否則就要關(guān)注一下了。到這里你肯定會問,如何查看服務(wù)器有幾個cpu?

http://wiki.jikexueyuan.com/project/linux/images/15_7.png.jpg" alt="15_7.png.jpg" />

就是用這個命令了?!?proc/cpuinfo’這個文件記錄了cpu的詳細信息。目前市面上的服務(wù)器通常都是24cpu,在linux看來,它就是8cpu。查看這個文件時則會顯示8段類似的信息,而最后一段信息中processor : 后面跟的是’7’。所以查看當前系統(tǒng)有幾個cpu,你可以使用這個命令:’ grep -c 'processor' /proc/cpuinfo’ 。

http://wiki.jikexueyuan.com/project/linux/images/15_8.png.jpg" alt="15_8.png.jpg" />

2. vmstat 監(jiān)控系統(tǒng)的狀態(tài)

http://wiki.jikexueyuan.com/project/linux/images/15_9.png.jpg" alt="15_9.png.jpg" />

上面講的w查看的是系統(tǒng)整體上的負載,通過看那個數(shù)值可以知道當前系統(tǒng)有沒有壓力,但是具體是哪里(CPU, 內(nèi)存,磁盤等)有壓力就無法判斷了。通過vmstat就可以知道具體是哪里有壓力。vmstat命令打印的結(jié)果共分為6部分:procs, memory, swap, io, system, cpu.請重點關(guān)注一下紅色標出的項

1procs 顯示進程相關(guān)信息

r:表示運行和等待cpu時間片的進程數(shù),如果長期大于服務(wù)器cpu的個數(shù),則說明cpu不夠用了;

b:表示等待資源的進程數(shù),比如等待I/O, 內(nèi)存等,這列的值如果長時間大于1,則需要你關(guān)注一下了;

2memory 內(nèi)存相關(guān)信息

swpd :表示切換到交換分區(qū)中的內(nèi)存數(shù)量

free :當前空閑的內(nèi)存數(shù)量;

buff :緩沖大小,(即將寫入磁盤的);

cache :緩存大小,(從磁盤中讀取的);

3swap 內(nèi)存交換情況

si :由內(nèi)存進入交換區(qū)的數(shù)量;

so:由交換區(qū)進入內(nèi)存的數(shù)量;

4io 磁盤使用情況

bi :從塊設(shè)備讀取數(shù)據(jù)的量(讀磁盤);

bo從塊設(shè)備寫入數(shù)據(jù)的量(寫磁盤);

5system 顯示采集間隔內(nèi)發(fā)生的中斷次數(shù)

in :表示在某一時間間隔中觀測到的每秒設(shè)備中斷數(shù);

cs :表示每秒產(chǎn)生的上下文切換次數(shù);

6CPU 顯示cpu的使用狀態(tài)

us :顯示了用戶下所花費 cpu 時間的百分比;

sy :顯示系統(tǒng)花費cpu時間百分比;

id :表示cpu處于空閑狀態(tài)的時間百分比;

wa:表示I/O等待所占用cpu時間百分比;

st :表示被偷走的cpu所占百分比(一般都為0,不用關(guān)注);

以上所介紹的各個參數(shù)中,筆者經(jīng)常會關(guān)注r列,b列,和wa列,三列代表的含義在上邊說得已經(jīng)很清楚。IO部分的bi以及bo也是我要經(jīng)常參考的對象如果磁盤io壓力很大時,這兩列的數(shù)值會比較高。另外當si, so兩列的數(shù)值比較高,并且在不斷變化時,說明內(nèi)存不夠了,內(nèi)存中的數(shù)據(jù)頻繁交換到交換分區(qū)中,這往往對系統(tǒng)性能影響極大

http://wiki.jikexueyuan.com/project/linux/images/15_10.png.jpg" alt="15_10.png.jpg" />

筆者用vmstat時,經(jīng)常用這樣的形式,’vmstat 1 5’ 表示每隔1秒鐘打印一次系統(tǒng)狀態(tài),連續(xù)打印5當然你也可以 ‘vmstat 1 ‘ 表示每隔1秒鐘打印一次系統(tǒng)狀態(tài),一直打印,除非你按ctrl + c強制結(jié)束。

3. top 顯示進程所占系統(tǒng)資源

http://wiki.jikexueyuan.com/project/linux/images/15_11.png.jpg" alt="15_11.png.jpg" />

這個命令用于動態(tài)監(jiān)控進程所占系統(tǒng)資源,每隔3秒變一次。這個命令的特點是把占用系統(tǒng)資源(CPU,內(nèi)存,磁盤IO等)最高的進程放到最前面。top命令打印出了很多信息,包括系統(tǒng)負載(load average進程數(shù)(Tasks、cpu使用情況內(nèi)存使用情況以及交換分區(qū)使用情況。其實上面這些內(nèi)容可以通過其他命令來查看,所以用top重點查看的還是下面的進程使用系統(tǒng)資源詳細狀況。這部分東西反映的東西還是比較多的,不過需要你關(guān)注的也就是幾項:%CPU, %MEM, COMMAND 這些項目所代表的意義,不用筆者介紹相信你也能看懂吧

http://wiki.jikexueyuan.com/project/linux/images/15_21.png.jpg" alt="15_21.png.jpg" />

另外筆者使用top命令時還常常使用-bn1 這個組合選項,它表示非動態(tài)打印系統(tǒng)資源使用情況,可以用在腳本中,你不妨記一下,以后也許你會用得到

4. sar 監(jiān)控系統(tǒng)狀態(tài)

sar 命令很強大,它可以監(jiān)控系統(tǒng)所有資源狀態(tài),比如平均負載、網(wǎng)卡流量磁盤狀態(tài)、內(nèi)存使用等等。它不同于其他系統(tǒng)狀態(tài)監(jiān)控工具的地方在于,它可以打印歷史信息,可以顯示當天從零點開始到當前時刻的系統(tǒng)狀態(tài)信息如果你系統(tǒng)沒有安裝這個命令,請使用”yum install -y sysstat”命令安裝。初次使用sar命令會報錯,那是因為sar工具還沒有生成相應(yīng)的數(shù)據(jù)庫文件(時時監(jiān)控就不會了,因為不用去查詢那個庫文件)。它的數(shù)據(jù)庫文件在” /var/log/sa/”目錄下,默認保存9。因為這個命令太過復(fù)雜,所以筆者只介紹幾個。

1)查看網(wǎng)卡流量 ‘sar -n DEV ‘

http://wiki.jikexueyuan.com/project/linux/images/15_22.png.jpg" alt="15_22.png.jpg" />

IFACE這列表示設(shè)備名稱,rxpck/s 表示每秒進入收取的包的數(shù)量,txpck/s 表示每秒發(fā)送出去的包的數(shù)量,rxbyt/s 表示每秒收取的數(shù)據(jù)量(單位Byte),txbyt/s表示每秒發(fā)送的數(shù)據(jù)量。后面幾列不需要關(guān)注如果有一天你所管理的服務(wù)器丟包非常嚴重,那么你就應(yīng)該看一看這個網(wǎng)卡流量是否異常了,如果rxpck/s 那一列的數(shù)值大于4000,或者rxbyt/s那列大于5,000,000則很有可能是被攻擊了,正常的服務(wù)器網(wǎng)卡流量不會高于這么多,除非是你自己在拷貝數(shù)據(jù)。上面的命令是查看網(wǎng)卡流量歷史的,如何時時查看網(wǎng)卡流量呢?

http://wiki.jikexueyuan.com/project/linux/images/15_23.png.jpg" alt="15_23.png.jpg" />

另外也可以查看某一天的網(wǎng)卡流量歷史,使用-f選項,后面跟文件名,如果你的系統(tǒng)格式Redhat或者CentOS那么sar的庫文件一定是在/var/log/sa/目錄下的

http://wiki.jikexueyuan.com/project/linux/images/15_24.png.jpg" alt="15_24.png.jpg" />

2)查看歷史負載 ‘sar -q’

http://wiki.jikexueyuan.com/project/linux/images/15_25.png.jpg" alt="15_25.png.jpg" />

這個命令有助于我們查看服務(wù)器在過去的某個時間的負載狀況。

關(guān)于sar的介紹筆者不愿寫太多,畢竟介紹太多會給你帶來更多的壓力,其實筆者介紹這個命令的目的只是讓你學(xué)會查看網(wǎng)卡流量(這是非常有用的)。如果你很感興趣那就man一下吧,它的用法太多了。

5. free查看內(nèi)存使用狀況

http://wiki.jikexueyuan.com/project/linux/images/15_26.png.jpg" alt="15_26.png.jpg" />

只要你敲一個free然后回車就可以當前系統(tǒng)的總內(nèi)存大小以及使用內(nèi)存的情況。從上圖中可看到當前系統(tǒng)內(nèi)存總大小為235128(單位是k)已經(jīng)使用120368,剩余94760。其實真正剩余并不是這個94760,而是第二行的213388,真正使用的也是第二行的21740。這是因為系統(tǒng)初始化時,就已經(jīng)分配出很大一部分內(nèi)存給緩存,這部分緩存用來隨時提供給程序使用,如果程序不用,那這部分內(nèi)存就空閑所以,查看內(nèi)存使用多少,剩余多少請看第二行的數(shù)據(jù)另外你還可以加-m 或者-g選項分別以MG為單位打印內(nèi)存使用狀況。

http://wiki.jikexueyuan.com/project/linux/images/15_27.png.jpg" alt="15_27.png.jpg" />

6. ps 查看系統(tǒng)進程

作為系統(tǒng)管理員,一定要知道你所管理的系統(tǒng)都有那些進程在運行,在windows下只要打開任務(wù)管理器即可查看linux下呢?其實在上面介紹的top命令就可以,但是不夠?qū)I(yè),當然還有專門顯示系統(tǒng)進程的命令。

http://wiki.jikexueyuan.com/project/linux/images/15_28.png.jpg" alt="15_28.png.jpg" />

對了,就是這個’ps aux’。筆者也經(jīng)??吹接械娜讼矚g用’ps -elf’ 大同小異,顯示的信息基本上是一樣的。 ps命令還有更多的用法,筆者不再做介紹,因為你只要會用這個命令就足夠了,請man一下下面介紹上圖上出現(xiàn)的幾個參數(shù)的意義。

PID:進程的id,這個id很有用,在linux中內(nèi)核管理進程就得靠pid來識別和管理某一個程,比如我想終止某一個進程,則用 ‘kill 進程的pid’,有時并不能殺掉,則需要加一個-9選項了’kill -9 進程pid’

STAT :表示進程的狀態(tài),進程狀態(tài)分為以下幾種(不要求記住,但要了解

D??不能中斷的進程(通常為IO

R??正在運行中的進程

S??已經(jīng)中斷的進程,通常情況下,系統(tǒng)中大部分進程都是這個狀態(tài)

T??已經(jīng)停止或者暫停的進程,如果我們正在運行一個命令,比如說sleep 10,如果我們按一下ctrl -z 讓他暫停,那么我們用ps查看就會顯示T這個狀態(tài)

W 這個好像是說,從內(nèi)核2.6xx 以后,表示為沒有足夠的內(nèi)存頁分配

X??已經(jīng)死掉的進程(這個好像從來不會出現(xiàn))

Z??僵尸進程,殺不掉,打不死的垃圾進程,占系統(tǒng)一小點資源,不過沒有關(guān)系。如果太多,就有問題了一般不會出現(xiàn)。

<??高優(yōu)先級進程

N??低優(yōu)先級進程

L? ?在內(nèi)存中被鎖了內(nèi)存分頁

s? ?主進程

l? ?多線程進程

+??代表在前臺運行的進程

這個ps命令是筆者在工作中用的非常多的命令之一,所以請記住它吧。關(guān)于ps命令的使用,筆者經(jīng)常會連同管道符一起使用,用來查看某個進程或者它的數(shù)量。

http://wiki.jikexueyuan.com/project/linux/images/15_29.png.jpg" alt="15_29.png.jpg" />

上面的6不對,需要減掉1,因為使用grep命令時,grep命令本身也算作了一個。

7. netstat 查看網(wǎng)絡(luò)狀況

http://wiki.jikexueyuan.com/project/linux/images/15_44.png.jpg" alt="15_44.png.jpg" />

netstat命令用來打印網(wǎng)絡(luò)連接狀況系統(tǒng)所開放端口、路由表等信息筆者最常用的關(guān)于netstat的命令就是這個netstat -lnp(打印當前系統(tǒng)啟動哪些端口)以及netstat -an (打印網(wǎng)絡(luò)連接狀況)這兩個命令非常有用,請一定要記住。

http://wiki.jikexueyuan.com/project/linux/images/15_45.png.jpg" alt="15_45.png.jpg" />

如果你所管理的服務(wù)器是一臺提供web服務(wù)(80端口)的服務(wù)器,那么你就可以使用netstat -an |grep 80開查看當前連接web服務(wù)的有哪些IP

8. 抓包工具tcpdump

有時候,也許你會有這樣的需求,想看一下某個網(wǎng)卡上都有哪些數(shù)據(jù)包,尤其是當你初步判定你的服務(wù)器上有流量攻擊。這時,使用抓包工具來抓一下數(shù)據(jù)包,就可以知道有哪些IP在攻擊你了。

http://wiki.jikexueyuan.com/project/linux/images/15_46.png.jpg" alt="15_46.png.jpg" />

如果你沒有tcpdump 這個命令,需要用’yum install -y tcpdump ’命令去安裝一下。上圖中第三列和第四列顯示的信息為哪一個IP+port在連接哪一個IP+port,后面的信息是該數(shù)據(jù)包的相關(guān)信息,如果不懂也沒有關(guān)系,畢竟你不是專門搞網(wǎng)絡(luò)的,而這里需要你關(guān)注的只是第三列以及第四列。-i 選項后面跟設(shè)備名稱,如果你想抓eth1網(wǎng)卡的包,后面則要跟eth1.至于-nn選項的作用是讓第三列和第四列顯示成IP+端口號的形式,如果不加-nn則顯示的是主機名+服務(wù)名稱。

【linux網(wǎng)絡(luò)相關(guān)

1. ifconfig 查看網(wǎng)卡IP

ifconfig類似與windowsipconfig,不加任何選項和參數(shù)只打印當前網(wǎng)卡的IP相關(guān)信息(子網(wǎng)掩碼、網(wǎng)關(guān)等)

http://wiki.jikexueyuan.com/project/linux/images/15_47.png.jpg" alt="15_47.png.jpg" />

當然ifconfig后面可以跟設(shè)備名,只打印指定設(shè)備的IP信息。

http://wiki.jikexueyuan.com/project/linux/images/15_48.png.jpg" alt="15_48.png.jpg" />

windows下設(shè)置IP非常簡單,然而在命令窗口下如何設(shè)置?這就需要去修改配置文件/etc/sysconfig/network-scripts/ifcfg-eth0了,如果是eth1那么配置文件是/etc/sysconfig/network-scripts/ifcfg-eth1.

http://wiki.jikexueyuan.com/project/linux/images/15_49.png.jpg" alt="15_49.png.jpg" />

如果想修改IP的話,則只需要修改IPADDR , NETMASK以及GATEWAY即可如果你的linux是通過dhcp服務(wù)器自動獲得的IP,那么配置文件肯定和上圖中的不一樣,BOOTPROTO那里會是’dhcp’,如果你要配置成靜態(tài)IP的話,這里就需要寫成’none’。關(guān)于如何設(shè)置IP以及子網(wǎng)掩碼的這些知識屬于網(wǎng)絡(luò)相關(guān)的基礎(chǔ)知識了,如果你對這方面比較陌生的話,建議你去看看網(wǎng)絡(luò)相關(guān)的資料。當修改完IP后需要重啟網(wǎng)絡(luò)服務(wù)新IP才能生效,重啟命令為’ service network restart’

http://wiki.jikexueyuan.com/project/linux/images/15_50.png.jpg" alt="15_50.png.jpg" />

另外如果你有多個網(wǎng)卡的情況時,只想重啟某一個網(wǎng)卡的話,還可以使用這個命令。

http://wiki.jikexueyuan.com/project/linux/images/15_51.png.jpg" alt="15_51.png.jpg" />

ifdown 即停掉網(wǎng)卡,ifup即啟動網(wǎng)卡。有一點要提醒你的是,如果你遠程登錄你的服務(wù)器,當你使用ifdown eth0這個命令的時候,很有可能后面的命令ifup eth0不會被運行,這樣導(dǎo)致你斷網(wǎng)而無法連接服務(wù)器,所以請盡量使用service network restart 這個命令來重啟網(wǎng)卡。

2. 給一個網(wǎng)卡設(shè)定多個IP

linux系統(tǒng)中,網(wǎng)卡是可以設(shè)定多重IP的,筆者曾經(jīng)管理的一臺服務(wù)器的eth1就設(shè)定了5IP,實在是夠變態(tài)的。

http://wiki.jikexueyuan.com/project/linux/images/15_52.png.jpg" alt="15_52.png.jpg" />

ifcfg-eth0復(fù)制成ifcfg-eth0:1 然后編輯ifcfg-eth0:1修改DEVICE以及IPADDR保存后重啟網(wǎng)卡

http://wiki.jikexueyuan.com/project/linux/images/15_53.png.jpg" alt="15_53.png.jpg" />

再次查看eth0上就有兩個IP。這里你要注意一下,文件名(ifcft-eth0:1)寫成什么都無所謂,但是文件內(nèi)的DEVICE=eth0:1一定要按照這樣的格式寫,否則你啟動不起來網(wǎng)卡。

3. 查看網(wǎng)卡連接狀態(tài)

http://wiki.jikexueyuan.com/project/linux/images/15_54.png.jpg" alt="15_54.png.jpg" />

mii-tool這個命令用來查看網(wǎng)卡是否連接,如圖顯示link ok等字樣說明連接正常,否則會顯示no link字樣,下圖是筆者所管理的一臺服務(wù)器,eth1網(wǎng)卡沒有連接

http://wiki.jikexueyuan.com/project/linux/images/15_55.png.jpg" alt="15_55.png.jpg" />

如果你的機器是虛擬機,那么你使用該命令時應(yīng)該顯示成如下:

http://wiki.jikexueyuan.com/project/linux/images/15_56.png.jpg" alt="15_56.png.jpg" />

這是因為使用的是虛擬網(wǎng)卡,不支持這個工具查看不用多關(guān)注此,你記住這個mii-tool命令即可,它可是會經(jīng)常用到的。

4. 更改主機名

當裝完系統(tǒng)后,默認主機名為localhost,使用hostname就可以知道你的linux的主機名是什么。

http://wiki.jikexueyuan.com/project/linux/images/15_57.png.jpg" alt="15_57.png.jpg" />同樣使用hostname可以更改你的主機名。

http://wiki.jikexueyuan.com/project/linux/images/15_71.png.jpg" alt="15_71.png.jpg" />

下次登錄時就會把命令提示符http://wiki.jikexueyuan.com/project/linux/images/15_72.png.jpg" alt="15_72.png.jpg" />中的’localhost’更改成’Aming’。不過這樣修改只是保存在內(nèi)存中,下次重啟還會變成未改之前的主機名,所以需要你還要去更改相關(guān)的配置文件’/etc/sysconfig/network’。

http://wiki.jikexueyuan.com/project/linux/images/15_73.png.jpg" alt="15_73.png.jpg" />

HOSTNAME=localhost.localdomain 修改成你想要的主機名,這樣再重啟就會讀取這個配置文件中的HOSTNAME.

5. 設(shè)置DNS

DNS是用來解析域名用的,平時我們訪問網(wǎng)站都是直接輸入一個網(wǎng)址,而dns把這個網(wǎng)址解析到一個IP。關(guān)于dns的概念,如果你很陌生的話,那就去網(wǎng)上查一下吧。linux下面設(shè)置dns非常簡單,只要把dns地址寫到一個配置文件中即可這個配置文件就是/etc/resolv.conf

http://wiki.jikexueyuan.com/project/linux/images/15_74.png.jpg" alt="15_74.png.jpg" />

resolv.conf有它固有的格式,一定要寫成’nameserver IP’的格式,上面那行以’;’為開頭的行是一行注釋,沒有實際意義,建議寫兩個或多個namserver ,默認會用第一個namserver去解析域名,當?shù)谝粋€解析不到時會使用第二個。linux下面有一個特殊的文件/etc/hosts也能解析域名,不過是需要我們手動在里面添加IP+域名這些內(nèi)容,它的作用是臨時解析某個域名,非常有用。

http://wiki.jikexueyuan.com/project/linux/images/15_75.png.jpg" alt="15_75.png.jpg" />

它的格式如上圖,每一行作為一條記錄,分成兩部分,第一部分是IP,第二部分是域名。關(guān)于hosts文件,有幾點需要你注意:

1)一個IP后面可以跟多個域名,可以是幾十個甚至上百個;

2)每行只能有一個IP,也就是說一個域名不能對應(yīng)多個IP;

3)如果有多行中出現(xiàn)相同的域名(前面IP不一樣),會按最前面出現(xiàn)的記錄來解析。

linux的防火墻

1. selinux

SelinuxRedhat/CentOS系統(tǒng)特有的安全機制。不過因為這個東西限制太多,配置也特別繁瑣所以幾乎沒有人去真正應(yīng)用它。所以裝完系統(tǒng),我們一般都要把selinux關(guān)閉,以免引起不必要的麻煩。關(guān)閉selinux的方法為:

http://wiki.jikexueyuan.com/project/linux/images/15_76.png.jpg" alt="15_76.png.jpg" />

’SELINUX=enforcing’改成’SELINUX=disabled’,然后重啟機器。臨時關(guān)閉selinux的命令為

http://wiki.jikexueyuan.com/project/linux/images/15_77.png.jpg" alt="15_77.png.jpg" />

getenforce命令可以得到selinux的狀態(tài),其中有兩種(Enforcing|Permissive),前者表示開放,后者表示關(guān)閉,但是會發(fā)出警告。setenforce用來設(shè)置selinux的狀態(tài),后面跟0則設(shè)置成Permissive后面跟1設(shè)置成Enforcing。關(guān)閉selinux的命令為setenforce 0,但是這只是臨時關(guān)閉,重啟后恢復(fù),想要永久生效,請更改配置文件/etc/selinux/config。

2. iptables

Iptableslinux上特有的防火墻機制,其功能非常強大,然而筆者在日常的管理工作中僅僅用到了一兩個應(yīng)用,這并不代表iptables不重要。作為一個網(wǎng)絡(luò)管理員,iptables是必要要熟練掌握的但是作為系統(tǒng)管理員,我們也應(yīng)該會最基本的iptables操作,認識iptables的基本規(guī)則。

1iptalbes的三個表

filter :這個表主要用于過濾包的,是系統(tǒng)預(yù)設(shè)的表,這個表也是筆者用的最多的。內(nèi)建三個鏈INPUT、OUTPUT以及FORWARD。INPUT作用于進入本機的包;OUTPUT作用于本機送出的包;FORWARD作用于那些跟本機無關(guān)的包。

nat :主要用處是網(wǎng)絡(luò)地址轉(zhuǎn)換,也有三個鏈。PREROUTING 鏈的作用是在包剛剛到達防火墻時改變它的目的地址,如果需要的話。OUTPUT鏈改變本地產(chǎn)生的包的目的地址。POSTROUTING鏈在包就要離開防火墻之前改變其源地址。該表筆者用的不多,但有時候會用到。

mangle :這個表主要是用于給數(shù)據(jù)包打標記,然后根據(jù)標記去操作哪些包。這個表幾乎不怎么用除非你想成為一個高級網(wǎng)絡(luò)工程師,否則你就沒有必要花費很多心思在它上面

2iptables 基本語法

A. 查看規(guī)則以及清除規(guī)則

http://wiki.jikexueyuan.com/project/linux/images/15_78.png.jpg" alt="15_78.png.jpg" />

如上圖,-t 后面跟表名,-nvL 即查看該表的規(guī)則,其中-n表示不針對IP反解析主機名;-L表示列出的意思;而-v表示列出的信息更加詳細如果不加-t ,則打印filter表的相關(guān)信息。

http://wiki.jikexueyuan.com/project/linux/images/15_79.png.jpg" alt="15_79.png.jpg" />

這個和-t filter 打印的信息是一樣的。

關(guān)于清除規(guī)則的命令中,筆者用的最多就是

http://wiki.jikexueyuan.com/project/linux/images/15_80.png.jpg" alt="15_80.png.jpg" />

不加-t默認是針對表filter來操作的,-F 表示把所有規(guī)則全部刪除;-Z表示把包以及流量計數(shù)器置零(這個筆者認為很有用)。

B. 增加/刪除一條規(guī)則

http://wiki.jikexueyuan.com/project/linux/images/15_81.png.jpg" alt="15_81.png.jpg" />

這就是增加了一條規(guī)則,省略-t所以針對的是filter。-A 表示增加一條規(guī)則,另外還有-I 表示插入一條規(guī)則,-D刪除一條規(guī)則;后面的INPUT即鏈名稱,還可以是OUTPUT或者FORWORD;-s 后跟源地址;-p 協(xié)議(tcp, udp, icmp); --sport/--dport 后跟源端口/目標端口;-d 后跟目的IP(主要針對內(nèi)網(wǎng)或者外網(wǎng));-j 后跟動作(DROP即把包丟掉,REJECT即包拒絕;ACCEPT即允許包)。這樣講可能很亂,那筆者多舉幾個例子來幫你理解:

http://wiki.jikexueyuan.com/project/linux/images/15_82.png.jpg" alt="15_82.png.jpg" />

上例表示:插入一條規(guī)則,把來自10.0.2.36的所有數(shù)據(jù)包丟掉。

http://wiki.jikexueyuan.com/project/linux/images/15_83.png.jpg" alt="15_83.png.jpg" />刪除剛剛插入的規(guī)則注意要刪除一條規(guī)則時,必須和插入的規(guī)則一致,也就是說,兩條iptables命令,除了-I -D不一樣外,其他地方都一樣。

http://wiki.jikexueyuan.com/project/linux/images/15_165.png.jpg" alt="15_165.png.jpg" />

上例表示把來自10.0.2.36 并且是tcp協(xié)議到本機的80端口的數(shù)據(jù)包丟掉。這里要說的是,--dport/--sport 必須要和-p選項一起使用,否則會出錯。

http://wiki.jikexueyuan.com/project/linux/images/15_166.png.jpg" alt="15_166.png.jpg" />

把發(fā)送到10.0.2.3422端口的數(shù)據(jù)包丟掉下面做一個小試驗:

http://wiki.jikexueyuan.com/project/linux/images/15_167.png.jpg" alt="15_167.png.jpg" />

一開始用本機ping 10.0.2.34是通的,然后使用iptables增加一條規(guī)則,使到10.0.2.34icmp包丟掉,再ping 10.0.2.34則不通了此時用’iptables –nvL’查看iptalbes規(guī)則。

http://wiki.jikexueyuan.com/project/linux/images/15_168.png.jpg" alt="15_168.png.jpg" />會有一條這樣的記錄,看pkts那列顯示4個數(shù)據(jù)包,因為我們ping 的時候給10.0.2.34發(fā)送了4個數(shù)據(jù)包,第二列表示這4個數(shù)據(jù)包一共有多大(336bytes。此時使用’iptables -Z' 清零。

http://wiki.jikexueyuan.com/project/linux/images/15_169.png.jpg" alt="15_169.png.jpg" />

現(xiàn)在你明白’iptables -Z’的意義了吧至于FORWORD鏈的應(yīng)用筆者幾乎沒有用到過,所以不再舉例。再總結(jié)一下各個選項的作用:

-A/-D :增加刪除一條規(guī)則;

-I :插入一條規(guī)則,其實跟-A的效果一樣;

-p :指定協(xié)議,可以是tcpudp或者icmp;

--dport :跟-p一起使用,指定目標端口;

--sport :跟-p一起使用,指定源端口;

-s :指定源IP(可以是一個ip段);

-d :指定目的IP(可以是一個ip段);

-j :后跟動作,其中ACCEPT表示允許包,DROP表示丟掉包,REJECT表示拒絕包;

-i :指定網(wǎng)卡(不常用,但有時候能用到);

http://wiki.jikexueyuan.com/project/linux/images/15_170.png.jpg" alt="15_170.png.jpg" />

上例中表示,把來自10.0.2.0/24這個網(wǎng)段的并且作用在eth0上的包放行有時候你的服務(wù)器上iptables過多了,想刪除某一條規(guī)則時,又不容易掌握當時創(chuàng)建時的規(guī)則。其實有一種比較簡單的方法:

http://wiki.jikexueyuan.com/project/linux/images/15_171.png.jpg" alt="15_171.png.jpg" />

查看結(jié)果如下:

http://wiki.jikexueyuan.com/project/linux/images/15_172.png.jpg" alt="15_172.png.jpg" />

刪除某一個規(guī)則的方法是:

http://wiki.jikexueyuan.com/project/linux/images/15_173.png.jpg" alt="15_173.png.jpg" />

-D 后跟鏈名,然后是規(guī)則num,這個num就是查看iptables規(guī)則時第一列的值

iptables還有一個選項經(jīng)常用到,-P(大寫)選項,表示預(yù)設(shè)策略。用法如下:

http://wiki.jikexueyuan.com/project/linux/images/15_174.png.jpg" alt="15_174.png.jpg" />

-P后面跟鏈名,策略內(nèi)容或者為DROP或者為ACCEPT,默認是ACCEPT。注意:如果你在連接遠程服務(wù)器,千萬不要隨便敲這個命令,因為一旦你敲完回車你就會斷掉。

http://wiki.jikexueyuan.com/project/linux/images/15_175.png.jpg" alt="15_175.png.jpg" />

看到上圖中紅框標出的部分了吧,現(xiàn)在所有進來的數(shù)據(jù)包全部DROP。這個策略一旦設(shè)定后,只能使用iptables -P ACCEPT才能恢復(fù)成原始狀態(tài),而不能使用-F參數(shù)。下面筆者針對一個小需求講述一下這個iptables規(guī)則如何設(shè)定

需求:只針對filter表,預(yù)設(shè)策略INPUTDROP,其他兩個鏈ACCEPT,然后針對10.0.2.0/24開通22端口,對所有網(wǎng)段開放80端口,對所有網(wǎng)段開放21端口

這個需求不算復(fù)雜,但是因為有多條規(guī)則,所以最好寫成腳本的形式。

http://wiki.jikexueyuan.com/project/linux/images/15_176.png.jpg" alt="15_176.png.jpg" />

完成腳本的編寫后,直接運行 ‘sh /usr/local/sbin/iptables.sh ’ 即可。如果想開機啟動時初始化防火墻規(guī)則,則需要在/etc/rc.d/rc.local 中添加一行 ‘sh /usr/local/sbin/iptables.sh’ 。

關(guān)于icmp的包有一個比較常見的應(yīng)用。

http://wiki.jikexueyuan.com/project/linux/images/15_177.png.jpg" alt="15_177.png.jpg" />

--icmp-type 這個選項是要跟-p icmp 一起使用的,后面指定類型編號這個8指的是能在本機ping通其他機器,而其他機器不能ping通本機這個有必要記一下。

C. nat表的應(yīng)用

其實,linuxiptables功能是十分強大的,筆者曾經(jīng)的一個老師這樣形容linux的網(wǎng)絡(luò)功能:只有想不到?jīng)]有做不到!也就是說只要你能夠想到的關(guān)于網(wǎng)絡(luò)的應(yīng)用,linux都能幫你實現(xiàn)在日常生活中相信你接觸過路由器吧,它的功能就是分享上網(wǎng)本來一根網(wǎng)線過來(其實只有一個公網(wǎng)IP),通過路由器后,路由器分配了一個網(wǎng)段(私網(wǎng)