這個系列的第二篇寫了將近5000字,而且還是刪節內容后的,如RAID就沒寫,因為頭已經很大了。第二篇從早上寫到下午,因為偷懶了,寫著寫著就停筆了。不過好在總算磨完了,現在開始寫RH134系列的最后一篇內容。
我這更新的速度并不慢,雖然我一天的時間都在寫,但是也沒有其他要緊的事要做,除了再去刷RHCSA認證的練習題,現在只刷了一遍,第二遍還沒開始。如果這篇文章寫完的比較早的話,我就開始刷第二遍去了。
雖然是最后一篇,但是剩下的內容也不少,podman容器的內容我這里就不寫了。主要講講訪問網絡附加存儲、控制啟動過程以及管理網絡安全三個部分,第一個其實就是NFS服務,第二個則需要學習系統的啟動過程,并學會修改root密碼,第三個就是講講防火墻的應用。
訪問網絡附加存儲
這一章節主要講NFS服務,包括客戶端和服務端,這兩個可以單獨安裝,分別是nfs-server和nfs-comman。NFS實現訪問遠程主機目錄像訪問本地目錄一樣,主要是通過mount以及unmount命令,將遠程主機目錄掛載到本地。
[1]服務端導出NFS目錄
主要是編寫/etc/exportfs文件,可以通過export -v來查看導出的本機文件目錄,如果修改了該文件,不需要重啟nfs-server服務,可以用exportfs -r(相當于exportfs -ua+exportfs -a)來重新加載配置文件。
編寫規則如/rhome *(rw,rsync)這樣,意思是將本機的/rhome目錄導出,允許網絡上的任何主機訪問,并且以讀寫的方式掛載,犧牲安全換性能,異步寫入。也可以指定主機才能夠訪,如使用192.168.241.0/24(rw,sync)則是只允許特定網段的主機訪問。
[2]客戶端掛載NFS目錄
客戶端可以編寫/etc/fstab來持久掛載,如server:/export /mountpoint nfs rw 0 0條目。這樣就會在系統啟動時自動掛載,不過推薦使用自動掛載器autofs,可以根據需要自動掛載文件系統。
autofs服務的誕生主要是解決非特權用戶沒有足夠權限來使用掛載命令的問題,因為如果不使用掛載命令,那么普通用戶就無法訪問可移動介質。還有就是autofs會保持卸載狀態,直到掛載點被訪問。
但需要注意的是,autofs自動掛載服務是由 ??root 用戶預先配置和管理??,但允許普通用戶??按需觸發掛載??,無需賦予他們mount命令的權限。也就是說,規則還是特權用戶定義的,但是允許普通用戶訪問。
[3]配置自動掛載服務
在/etc/auto.master叫映射配置文件,或者在/etc/auto.master.d目錄下創建.autofs映射配置文件。有兩種映射方式,一種是直接映射,另一種是間接映射。
在直接映射中,映射配置文件以/-開頭,后面跟直接映射文件;至于間接映射,以基礎目錄開頭,如/shares,后面跟簡介映射文件。映射文件的后綴名稱沒有要求,和映射配置文件中的名稱保持一致即可。
直接映射
在直接映射文件中,寫出完整的掛載點路徑,后面跟掛載選項和遠程NFS目錄,如/work -rw,sync server:/export。至于間接映射文件,則是以相對于基礎目錄的路徑開頭,如work -rw,sync server:/export。
間接映射
間接映射支持使用通配符導出多個遠程主機目錄,在間接映射文件中,以*開頭。如* -rw,sync server:/export/&,這會將遠程主機的/export目錄下的所有目錄掛載到基礎目錄下的同名目錄中。
并且在使用?autofs???自動掛載??時,??無需手動創建本地掛載目錄??,autofs?會動態創建和銷毀這些目錄。對于使用mount命令來說,這種是不允許的,必須要確保掛載點目錄存在才可以掛載。
控制啟動過程
這節內容包括選擇啟動目標,重置root密碼還有修復啟動時出現的文件系統問題。前者可通過systemctl來切換系統啟動時的目標,重置密碼則需要在啟動菜單項中編輯內核參數,進入救援模式,而修復文件系統的問題則需要進入緊急模式。
[1]選擇啟動目標
目標是系統必須啟動以達到預期狀態的一組systemd服務單元,在運行時也可以切換目標(無需重啟系統,立即生效)使用systemctl isolate multi-user.target來切換。使用systemctl get-default可以查看系統啟動時的默認目標,并可以通過systemctl set-default targetname來?替換。
[2]重置root密碼
主要是在啟動菜單中編輯救援內核條目的選項,然后ctrl+e來編輯,在linux行末尾添加rd.break,接著使用ctrl+x來啟動。這會進入救援模式,按enter進入維護。這時處于??內存中的臨時根文件系統??(即?initramfs?創建的救援環境),而?/sysroot?是原始系統的根目錄。
我們先重新掛載根文件系統(/sysroot現在以只讀的方式掛載),使用mount -o rw,remount /sysroot,然后使用chroot /sysroot切換根文件系統到/sysroot,之后就可以開始重置密碼了,退出前使用touch /.autorelabel讓系統重新標記所有文件的selinux上下文。
[3]修復文件系統問題
如果/etc/fstab中的文件編寫錯位u,會導致系統無法完成啟動過程。這時候需要進入緊急模式,由于啟動菜單項中并沒有緊急模式,所以在啟動菜單項的默認條目中按ctrl+e編寫,在linux這行的末尾添加systemd.unit=emergency.target。
然后輸入root密碼進入維護模式,這時候根文件系統/處于只讀狀態,同樣要重新掛載根文件系統。接著編寫/etc/fstab文件,使用systemctl daemon-reload重新加載該文件,之后mount -a測試,沒有問題就能夠使用systemctl reboot重啟系統了。
管理網絡安全
上一節其實要寫啟動過程的,但是這里不太想寫,后面會做補充內容的。現在的防火墻使用的是nftables框架,取代了iptables,支持運行時更新規則無需重啟。這里主要是了解firewall-cmd如何使用,同時會用到firewalld服務的預定義區域。
[1]管理服務器防火墻
在預定義區域中,public和trusted這兩個用的比較多。后者允許所有的流量,前者則除非與傳出流量相關,或者是與ssh服務以及預定義服務匹配,否則拒絕一切傳入流量。
防火墻通過通過劃分網絡環境簡化防火墻管理(默認將lo網卡的流量通過預定義區域trusted),使用firewall-cmd --get-default-zone可以獲得當前的默認區域,使用firewall-cmd --set-default-zone=ZONE可以修改默認區域。
firewall-cmd --permanent --add-port=22/tcp、5000-6000/udp這允許當前默認區域(可以使用--zone=ZONE來指定特定的區域)中的22端口和5000-6000端口被訪問。
還有--add-service=http允許特定服務被訪問,--add-source=192.168.241.0/24表示只允許特定網段的主機訪問,這進一步限制??只有特定源IP??能訪問當前區域已開放的端口/服務(其他IP會被拒絕,即使端口已開放)。
firewall-cmd --list-ports 可以查看當前區域開放的端口,使用firewall-cmd --list-all則可以查看所有允許的訪問規則,使用firewall-cmd --reload則是重新加載修改后的防火墻規則。
[2]控制selinux端口標記
semanage port -l可以列出所有具有selinux上下文標簽的端口,一般結合grep來過濾需要的端口。使用semanage port -a -t type -p tcp 80命令可以給80端口添加指定類型的selinux標簽(-p是選擇協議的意思)。
使用semanage port -d -t type -p tcp 80則是用來刪除該端口的selinux標簽,使用semanage port -m -t type -p tcp 80則是需改該端口的selinux標簽。