RHEL7/CENTOS7新特性:
1、身份管理
kerberos的跨平臺信任機制:kerberos將完全兼容微軟活動目錄,實現(xiàn)完全使用活動目錄進行認證。
REALMD:該功能簡化了RHEL 加入微軟活動目錄的配置,支持自動發(fā)現(xiàn)域信息。
RHEL 7增加了兩個關(guān)鍵性的新特征改善了RHEL對AD的處理方式。現(xiàn)在,RHEL7和AD之間建立了跨域信任(Cross-realm trusts),因此AD用戶可以在Linux端無需登錄就能訪問資源。RHEL 7增加的另外一個AD相關(guān)的功能是realmd,實現(xiàn)自動化查詢與添加AD(或其他紅帽認證服務(wù))DNS信息。
2、性能管理
性能輔助工具:RHEL7 提供了一個新的框架和一個新的通用圖形界面來提供性能輔助管理。可以收集、分析系統(tǒng)瓶頸。
調(diào)優(yōu)和調(diào)優(yōu)配置:RHEL7 提供了動態(tài)調(diào)優(yōu)方案,來解決系統(tǒng)性能瓶頸問題。系統(tǒng)管理員也可以手動修改系統(tǒng)預(yù)置的方案來達到調(diào)優(yōu)的效果
3、虛擬化
增強RHEL7虛擬機:完全兼容vmwarevshpere架構(gòu),RHEL7 自帶 open vmtool 、3D圖形驅(qū)動和OpenGLX11 的支持。使得RHEL7 部署在vmware平臺更加方便。RHEL 7 同時支持vmware esxi 之間快速通信。
虛擬I/O:為每臺虛擬機提供了調(diào)用底層PCI 設(shè)備的接口,實現(xiàn)內(nèi)核級別的隔離。提高了機器的安全性和兼容性
虛擬機USB3.0接口支持
QCOW2格式文件型快照支持
嵌套虛擬化支持,可以在KVM中安裝配置OpenStack
加強了對VMWARE的技術(shù)支持,自帶open-vm-tools替換vm-tools
支持最熱的技術(shù)Docker
Docker是基于目前流行的應(yīng)用虛擬化技術(shù)。應(yīng)用被打包在Docker中,與系統(tǒng)和其他應(yīng)用完全隔離,因此可以在系統(tǒng)之間遷移并正常運行。
4、文件系統(tǒng)
RHEL7 選擇XFS作為其默認的文件系統(tǒng),。
RHEL7.0在安裝的時候就默認使用了XFS,并不是說原有的EXT文件系統(tǒng)不再使用,RHEL7仍然是支持ext4的.而是面對未來爆炸式增長的數(shù)據(jù)量,ext文件系統(tǒng)已經(jīng)顯得原來越力不從心。XFS文件系統(tǒng)完全為大數(shù)據(jù)而生,單個文件系統(tǒng)最大可以支持到8EB大小,單個文件的大小最大可達到16T,并且提供了豐富的日志系統(tǒng),是應(yīng)對大數(shù)據(jù)存儲的強大的文件系統(tǒng)。
XFS是擴展性高、高性能的文件系統(tǒng)。也是rhel7/centos7的默認文件系統(tǒng)。
可通過工具xfsdump和xfsrestore來備份和恢復(fù)xfs文件系統(tǒng),
6、網(wǎng)絡(luò)管理
新增網(wǎng)絡(luò)管理接口NMCLI
7、服務(wù)管理
使用systemctl 調(diào)用服務(wù)腳本
RHEL7中使用systemd取代了原有的sysV,由systemd來管理系統(tǒng)中的服務(wù)。Systemd定義了與原來sysV 的init進程完全不同的方式對服務(wù)和系統(tǒng)進程進行管理。使得系統(tǒng)中的服務(wù)可以自動解決服務(wù)之間的依賴關(guān)系,并且可以支持服務(wù)的并行啟動!也就是說,RHEL7.0比原有的sysV操作系統(tǒng)啟動速度更快,更穩(wěn)定,同時也可以完美的支持Docker!
8、RHEL7桌面
使用最新的Gnome 3為默認桌面環(huán)境,使用最新的KDE 4.10為備選桌面環(huán)境。
一、RHEL7安裝體驗:
生產(chǎn)服務(wù)器如果是大內(nèi)存(4G以上內(nèi)存),建議安裝64位版本rhel-server-7.0-x86_64-dvd.iso
啟動加載后如下圖:
界面說明:
InstallRed Hat Enterprise Linux 7.0 安裝RHEL7系統(tǒng)
Testthis media & install Red Hat Enterprise Linux 7.0 測試安裝介質(zhì)及安裝RHEL7系統(tǒng) (相對于RHEL6來,將檢測媒介提前到初始安裝頁面中)
Troubleshooting 故障排除
選擇Troubleshooting,可以從下面界面看到:
安裝基本的圖形模式
安裝救援系統(tǒng)
從本地驅(qū)動器啟動
內(nèi)存測試
返回菜單
返回菜單,選擇第一項Install Red HatEnterprise Linux 7.0 按回車,系統(tǒng)開始安裝見下圖:
安裝過程語言的選擇,正式生產(chǎn)服務(wù)器建議安裝英文版本,這里保持默認英文點擊下一步
單擊continue
進入到了安裝匯總頁面,從此頁面顯示三大塊分別為:
LOCALIZATION 本地化:可以看在此下面配置時間時區(qū),鍵盤設(shè)置以及語言
SOFTWARE 軟件:在SOFTWARE下面可以到安裝來源和自定義軟件安裝,默認系統(tǒng)選擇最小化的安裝
SYSTEM 系統(tǒng):安裝目標設(shè)備和網(wǎng)絡(luò)配置
附:
可以在system系統(tǒng)中的installation destination進行磁盤分區(qū)管理:自動分區(qū)和手動分區(qū)
這里我創(chuàng)建如下分區(qū):
/boot 分區(qū) 500MB
swap分區(qū) 4096MB(一般設(shè)置為內(nèi)存的2倍)
/分區(qū)剩余全部空間
備注:生產(chǎn)服務(wù)器建議單獨再劃分一個/data分區(qū)存放數(shù)據(jù)
點擊左上角的done,進入下面的界面
點擊accept changes,回到安裝匯總頁面,點擊begin installation,進入下面界面:
選擇user settings的root password,設(shè)置root賬戶的口令。
安裝完成之后,點擊reboot重啟
在用U盤裝完CentOS后,重新開機啟動后顯示:
Initialsetup of CentOS Linux 7 (core)
1) [x]Creat user 2) [!] License information
(no userwill be created) (license not accepted)
Pleasemake your choice from above [‘q’ to quit | ‘c’to continue | ‘r’ to refresh]:
解決方法:
輸入“1”,按Enter鍵
輸入“2”,按Enter鍵
輸入“q”,按Enter鍵
輸入“yes”,按Enter鍵
重啟后進入到初始安裝界面,配置license 及注冊設(shè)置。
系統(tǒng)首次初始化后,就進入了啟動界面
第一項是正常啟動系統(tǒng),第二項是以恢復(fù)啟動系統(tǒng)。
注1:系統(tǒng)默認編碼設(shè)置文件,由/etc/sysconfig/i18n 更改為 /etc/locale.conf該文件主定義你當前系統(tǒng)的語言環(huán)境變量設(shè)置,這里是LANG=”en_US.UTF-8”、系統(tǒng)預(yù)置了那些
語言支持,
注2:常用命令安裝:查看anaconda-ks.cfg,確定是否裝base軟件組
顯示部份信息如下:
若沒安裝base軟件組,則一些常規(guī)命令如ifconfig等就無法使用。可以使用yumgroupinstall base安裝base軟件組。
二、rhel7默認運行級別和終端分辨率修改
修改默認運行級別:
rhel7.0 做了很多大的改變,打開inittab看下
# inittab is no longer used whenusing systemd.
/etc/inittab 這個文件已經(jīng)不再使用,systemd對linux來說就是一個init程序,可以作為sysVinit和Upstat的替代。
systemd使用比sysvinit的運行級別更為自由的target概念作為替代
第三運行級:multi-user.target
第五運行級:graphical.target
#前者是符號鏈接指向了后面的target
runlevel3.target-> multi-user.target
runlevel5.target-> graphical.target
如下圖所示:
修改開機默認運行級別:
方法1:
默認級別轉(zhuǎn)換為3(文本模式)
ln -sf /lib/systemd/system/multi-user.target/etc/systemd/system/default.target
或者默認級別轉(zhuǎn)換為5(圖形模式)
ln -sf /lib/systemd/system/graphical.target/etc/systemd/system/default.target
重啟:reboot
方法2:
systemctl set-default multi-user.target
用這個systemctl命令來查看默認目標。
systemctl get-default
切換運行級別:
方法1:
切換到:運行級3
這兩種都可以
systemctlisolate multi-user.target systemctlisolate runlevel3.target
切換到:運行級5
這兩種都可以
systemctlisolate graphical.target systemctlisolate runleve5.target
方法2:
init [0123456]
#查看當前運行的級別
runlevel //仍然可用
修改安字符終端分辨率:
由于是在VM里面安裝的,完了之后終端界面的分辨率非常高,很難操作
因為RHEL7用了grub2,而不再是grub了,在grub2中要修改的文件是/boot/grub2/grub.cfg;
這里有一張分辨率的對照表(在grub.cfg中添加vga=ask,系統(tǒng)重啟后就會詢問要設(shè)置的分辨率。)
修改前:
修改后,在后面添加vga=0x???(問號代表分辨率代碼),
附:如何實現(xiàn)rhel7圖形界面自動登陸:
首先找到/etc/gdm/custom.conf文件
然后在custom.conf文件里在daemon下加入下面的內(nèi)容:
AutomaticLoginEnable=true AutomaticLogin=root
三、設(shè)置主機名
rhel7不再使用/etc/sysconfig/network設(shè)置主機名,而是使用/etc/hostname文件,下面就介紹有關(guān)rhel7設(shè)置主機名的幾種方法。
方法:1
修改/etc/hostname文件設(shè)置主機名。
方法:2
執(zhí)行hostnamectl命令
使用hostnamectl命令, hostnamectl set-hostname name,再通過hostname或者hostnamectl status 命令查看更改是否生效。
方法:3
執(zhí)行nmtui命令
使用nmtui命令會彈出一工具界面
選擇第三項"set system hostname"修改主機名
修改后選擇"ok"退出nmtui工具。
執(zhí)行systemctl restart systemd-hostnamed 執(zhí)行hostname或hostnamectl查看。
方法:4
執(zhí)行nmcli命令
nmcli general hostname查看主機名 nmcli general hostnamemy-server 設(shè)置主機名 執(zhí)行systemctl restartsystemd-hostnamed使修改生效
四、設(shè)置IP地址、網(wǎng)關(guān)和DNS
RHEL7里面的網(wǎng)卡命名方式從eth0,1,2的方式變成了enoXXXXX的格式。 en 代表的是enthernet (以太網(wǎng)),o 代表的是onboard (內(nèi)置),那一串數(shù)字是主板的某種索引編號自動生成,以便保證其唯一性。和原先的命名方式對比,這種新的方式比較長,難以記憶,不過優(yōu)點在于編號唯一,做系統(tǒng)遷移的時候不容易出錯。
說明:RHEL 7.0默認安裝好之后是沒有自動開啟網(wǎng)絡(luò)連接的!
方法1、進入網(wǎng)絡(luò)置配文件目錄,修改網(wǎng)卡配置文件,如下圖所示:
TYPE="Ethernet|Bridge"網(wǎng)絡(luò)接口類型 BOOTPROTO="static|none" #啟用靜態(tài)IP地址(BOOTPROTO=dhcp啟用動態(tài)獲取IP) DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes|no" 是否支持IPV6 USERCTL="yes|no" 是否允許普通用戶控制此接口 PEERDNS="yes|no" 是不是接受DHCP服務(wù)器指派的DNS服務(wù)器地址 IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" NAME="eno16777736" UUID="8071cc7b-d407-4dea-a41e-16f7d2e75ee9" 設(shè)備標識號 ONBOOT="yes" #開啟自動啟用網(wǎng)絡(luò)連接(默認值為no) IPADDR0="192.168.21.128" #設(shè)置IP地址 只有在BOOTPROTO={none|static}設(shè)置才有效 PREFIX0="24" #設(shè)置子網(wǎng)掩碼 此設(shè)置也可用 PREFIX=n (n為掩碼位數(shù)) GATEWAY0="192.168.21.2" #設(shè)置網(wǎng)關(guān) 要與IP地址屬于同一網(wǎng)段 DNS1="8.8.8.8" #設(shè)置主DNS DNS2="8.8.4.4" #設(shè)置備DNS HWADDR="00:0C:29:EB:F2:B3" IPV6_PEERDNS="yes" IPV6_PEERROUTES="yes" service networkrestart #重啟網(wǎng)絡(luò)
查看ip信息:
Ifconfig命令或 ip addr show 或 ip addr show dev 網(wǎng)絡(luò)設(shè)備名或 ip addr查看所有網(wǎng)卡信息。
#ip addr show dev eno16777736
1.接口狀態(tài)
2.硬件
3.IPv4地址與子網(wǎng)
4.廣播地址,范圍,設(shè)備名稱
5.IPv6信息
ip 命令現(xiàn)實關(guān)于網(wǎng)絡(luò)性能的統(tǒng)計信息,接收(RX)發(fā)送(TX)數(shù)據(jù)包。
用nmcli connection show網(wǎng)卡信息
測試網(wǎng)絡(luò)是否正常:
ping www.baidu.com #測試網(wǎng)絡(luò)是否正常
traceroute 和 mtr 顯示出我們到達一個網(wǎng)絡(luò)所經(jīng)過的路由信息
yum -y install traceroute
yum -y install mtr
traceroutewww.baidu.com
mtr是Red Hat自帶的工具,結(jié)合了"traceroute"和"ping"功能于一身診斷工具
第一列:顯示的是IP地址和本機域名,這點和tracert很像
第二列:是顯示的每個對應(yīng)IP的丟包率
第三列:snt設(shè)置每秒發(fā)送數(shù)據(jù)包的數(shù)量,默認值是10 可以通過參數(shù) -c來指定
第四列:顯示的最近一次的返回時延
第五列:是平均值這個應(yīng)該是發(fā)送ping包的平均時延
第六列:是最好或者說時延最短的
第七列:是最差或者說時延最常的
第八列:是標準偏差
ethtool:查看網(wǎng)路接口設(shè)備本身的屬性
ethtool 網(wǎng)卡接口名稱
方法2:執(zhí)行nmtui命令
使用nmtui命令會彈出一工具界面
重啟network服務(wù)。
方法3:通過nm-connection-editor來配置連接(注:必須在圖形界面下運行)
配置好了,重啟網(wǎng)絡(luò)服務(wù),執(zhí)行ifconfig或ip addr發(fā)現(xiàn)已經(jīng)獲取了新的地址。
一旦該連接建立成功,在/etc/sysconfig/networks-scripts下面就會自動創(chuàng)建同名的配置文件
方法4:nmcli命令
nmcli是個很強大的命令,后面一大堆選項和對象可以配置??纯磶椭臋n,對象可以是綜合信息,網(wǎng)絡(luò),信號和連接。這里我們主要是學(xué)習(xí)連接的配置使用
如何配置連接,還是先看看幫助,他后面可以跟show,up, down, add, modify, edit, delete, reload,
看看device有哪些參數(shù)
查看具體的設(shè)備信息可以通過 nmcli connection show 設(shè)備名來查看
添加一個新連接,先先看看幫助
修改現(xiàn)有連接,可以先先看看幫助
nmcliconnection modify --help
附:修改RHEL7的網(wǎng)卡名稱
RHEL7安裝完成之后,默認的網(wǎng)卡名稱是eno16777736
輸入如下命令,進入對應(yīng)目錄,編輯文件:
vim /etc/sysconfig/grub
然后,往這個文件中添加“net.ifnames=0biosdevname=0”內(nèi)容,作用是禁用該可預(yù)測命名規(guī)則,如下圖所示:
接著執(zhí)行下面的命令,效果如下:
然后,重啟系統(tǒng)后查看網(wǎng)卡名稱
五、服務(wù)控制
Systemd對linux來說,就是一個init程序,可以作為sysVinit和Upstat的替代
RHEL7監(jiān)視和控制systemd的主要命令是systemctl,該命令可以用于查看系統(tǒng)狀態(tài)和管理系統(tǒng)及服務(wù)。
RHEL7的服務(wù)systemctl腳本存放在:/usr/lib/systemd/,有系統(tǒng)(system)和用戶(user)之分,像需要開機不登陸就能運行的程序,存在系統(tǒng)服務(wù)里,即:/usr/lib/systemd/system目錄下。每一個服務(wù)以.service結(jié)尾,一般會分為3部分:[Unit]、[Service]和[Install]
[Unit]部分主要是對這個服務(wù)的說明,內(nèi)容包括Description和After,Description用于描述服務(wù),After用于描述服務(wù)類別
[Service]部分是服務(wù)的關(guān)鍵,是服務(wù)的一些具體運行參數(shù)的設(shè)置,這里Type=forking是后臺運行的形式,PIDFile為存放PID的文件路徑,ExecStart為服務(wù)的具體運行命令,ExecReload為重載命令,ExecStop為停止命令,注意:[Service]部分的啟動、重啟、停止命令全部要求使用絕對路徑,使用相對路徑則會報錯!
[Install]部分是服務(wù)安裝的相關(guān)設(shè)置,可設(shè)置為多用戶的.
注意: 如果服務(wù)沒有Install段落,一般意味著應(yīng)該通過其它服務(wù)自動調(diào)用它們
使用systemd時,可通過正確編寫單元配置文件來解決其依賴關(guān)系。典型的情況是,服務(wù)A要求服務(wù)B在A啟動之前運行。在此情況下,向服務(wù)A配置文件中的 [Unit] 段添加Requires=B 和 After=B 即可
我們對service和chkconfig兩個命令都不陌生,RHEL7系統(tǒng)中systemctl 是管制服務(wù)的主要工具,它整合了chkconfig 與 service功能于一體。
systemctl命令的基本操作格式是:
systemctl 動作服務(wù)名.service
查看一下--help的信息
systemd提供更優(yōu)秀的框架以表示系統(tǒng)服務(wù)間的依賴關(guān)系實現(xiàn)系統(tǒng)初始化時服務(wù)的并行啟動,同時達到降低Shell的系統(tǒng)開銷的效果,systemd的目標是盡可能啟動更少進程;盡可能將更多進程并行啟動。
分析系統(tǒng)狀態(tài):
systemctl 或systemctl list-units #輸出激活的單元 systemctl list-units--type=service #列出active狀態(tài)的服務(wù) systemctl list-unit-files列出所有已安裝服務(wù) systemctl --failed #顯示啟動失敗的服務(wù) systemd-cgls以樹形列出正在運行的進程
所有可用的單元文件存放在 /usr/lib/systemd/system/ 和 /etc/systemd/system/ 目錄(后者優(yōu)先級更高)
使用單元:
一個單元可以是系統(tǒng)服務(wù)(.service)、掛載點(.mount)、sockets(.sockets)。
使用 systemctl 控制單元時,通常需要使用單元文件的全名,包括擴展名(例如sshd.service)。但是有些單元可以在systemctl中使用簡寫方式。如果無擴展名,systemctl 默認把擴展名當作 .service。例如sshd和sshd.service 是等價的。
掛載點會自動轉(zhuǎn)化為相應(yīng)的 .mount 單元。例如 /home 等價于 home.mount。
設(shè)備會自動轉(zhuǎn)化為相應(yīng)的 .device 單元,所以 /dev/sda2 等價于 dev-sda2.device。
systemctl start <單元> #立即啟動單元 systemctl stop <單元> #立即停止單元 systemctl restart <單元> #重啟單元 systemctl reload <單元> #重新讀取單元配置 systemctl status <單元> #輸出單元運行狀態(tài) systemctl is-enabled <單元> #檢查單元是否配置為自動啟動 systemctl enable <單元> #開機自動啟動單元 systemctl disable <單元> #取消開機自動激活單元 systemctl is-active<單元> #查看單元是不是正在運行 systemctl daemon-reload #重新載入 systemd,掃描新的或有變動的單元
電源管理:
systemctl reboot #重啟 systemctl poweroff #退出系統(tǒng)并停止電源
例如:
systemctl is-enablediptables.servicesystemctl is-enabled servicename.service #查詢服務(wù)是否開機啟動systemctl enable *.service #開機運行服務(wù)systemctl disable *.service #取消開機運行systemctl start *.service #啟動服務(wù)systemctl stop *.service #停止服務(wù)systemctl restart *.service #重啟服務(wù)systemctl reload *.service #重新加載服務(wù)配置文件systemctl status *.service #查詢服務(wù)運行狀態(tài)systemctl mask *.service #禁用指定服務(wù)systemctl unmask *.service #激活指用服務(wù)
注:*代表某個服務(wù)的名字,如http的服務(wù)名為httpd
案例:
查看服務(wù)的狀況
停止 sshd服務(wù),查看狀態(tài)
狀態(tài)表示為dead服務(wù)已經(jīng)停止。
disable 服務(wù),禁止開機自動運行
開機自動加載,并啟動該服務(wù)
通過mask來禁用該服務(wù),這樣一旦服務(wù)終止,則無法再啟動,必須通過unmask解除禁用才能使用systemctl start sshd 來運行服務(wù)
除了上面提到的基本功能,systemctl還可以查詢當前加載的模塊單元,注意后綴為service的才是我們需要管理的服務(wù)
可以通過 type來過濾掉其他類型的單元
systemctl list-unit-files –typeservice
六:防火墻
Redhat Enterprise Linux7已經(jīng)默認使用firewalld作為防火墻,其使用方式已經(jīng)變化。
基于iptables的防火墻被默認不啟動,但仍然可以繼續(xù)使用。
RHEL7中有幾種防火墻共存:firewalld、iptables、ebtables等,默認使用firewalld作為防火墻,管理工具是firewall-cmd。RHEL7的內(nèi)核版本是3.10,在此版本的內(nèi)核里防火墻的包過濾機制是firewalld,使用firewalld來管理netfilter,不過底層調(diào)用的命令仍然是iptables等。因為這幾種daemon是沖突的,所以建議禁用其他幾種服務(wù)
例如若要禁用iptables、ip6tables、ebtables防火墻,方法如下圖
或
查看這幾種服務(wù)是否正在運行
或
RHEL7雖然有iptables但是不建議使用了,使用新的firewalld服務(wù)。
查看firewalld軟件包是否安裝
Firewalld提供了支持網(wǎng)絡(luò)/防火墻區(qū)域(zone)定義網(wǎng)絡(luò)鏈接以及接口安全等級的防火墻管理工具。擁有運行時配置和永久配置選項。它也支持允許服務(wù)或者應(yīng)用程序直接添加防火墻規(guī)則的接口。以前的 system-config-firewall防火墻模型是靜態(tài)的,每次修改都要求防火墻完全重啟。這個過程包括內(nèi)核 netfilter 防火墻模塊的卸載和新配置所需模塊的裝載等。相反,firewall daemon 動態(tài)管理防火墻,不需要重啟整個防火墻便可應(yīng)用更改。因而也就沒有必要重載所有內(nèi)核防火墻模塊了。
什么是區(qū)域:網(wǎng)絡(luò)區(qū)域定義了網(wǎng)絡(luò)連接的可信等級。
數(shù)據(jù)包要進入到內(nèi)核必須要通過這些zone中的一個,而不同的zone里定義的規(guī)則不一樣(即信任度不一樣,過濾的強度也不一樣)??梢愿鶕?jù)網(wǎng)卡所連接的網(wǎng)絡(luò)的安全性來判斷,這張網(wǎng)卡的流量到底使用哪個zone,比如上圖來自eth0的流量全部使用zone1的過濾規(guī)則,eth1的流量使用zone2。一張網(wǎng)卡同時只能綁定到一個zone
預(yù)定義的服務(wù):服務(wù)是端口和/或協(xié)議入口的組合。
端口和協(xié)議:定義了 tcp 或 udp 端口,端口可以是一個端口或者端口范圍。
ICMP 阻塞:可以選擇 Internet控制報文協(xié)議的報文。這些報文可以是信息請求亦可是對信息請求或錯誤條件創(chuàng)建的響應(yīng)。
偽裝:私有網(wǎng)絡(luò)地址可以被映射到公開的IP地址。這是一次正規(guī)的地址轉(zhuǎn)換。
端口轉(zhuǎn)發(fā):端口可以映射到另一個端口以及/或者其他主機。
在進行firewalld配置之前,我想來討論一下區(qū)域(zones)這個概念。默認情況就有一些有效的區(qū)域。由firewalld 提供的區(qū)域按照從不信任到信任的順序排序。
丟棄區(qū)域(Drop Zone):如果使用丟棄區(qū)域,任何進入的數(shù)據(jù)包將被丟棄。這個類似與我們之前使用iptables -j drop。使用丟棄規(guī)則意味著將不存在響應(yīng)。 阻塞區(qū)域(Block Zone):阻塞區(qū)域會拒絕進入的網(wǎng)絡(luò)連接,返回icmp-host-prohibited,只有服務(wù)器已經(jīng)建立的連接會被通過即只允許由該系統(tǒng)初始化的網(wǎng)絡(luò)連接。 公共區(qū)域(Public Zone):只接受那些被選中的連接,默認只允許 ssh 和 dhcpv6-client。這個 zone 是缺省 zone 外部區(qū)域(External Zone):這個區(qū)域相當于路由器的啟用偽裝(masquerading)選項。只有指定的連接會被接受,即ssh,而其它的連接將被丟棄或者不被接受。 隔離區(qū)域(DMZ Zone):如果想要只允許給部分服務(wù)能被外部訪問,可以在DMZ區(qū)域中定義。它也擁有只通過被選中連接的特性,即ssh。 工作區(qū)域(Work Zone):在這個區(qū)域,我們只能定義內(nèi)部網(wǎng)絡(luò)。比如私有網(wǎng)絡(luò)通信才被允許,只允許ssh,ipp-client和 dhcpv6-client。 家庭區(qū)域(Home Zone):這個區(qū)域?qū)iT用于家庭環(huán)境。它同樣只允許被選中的連接,即ssh,ipp-client,mdns,samba-client和 dhcpv6-client。 內(nèi)部區(qū)域(Internal Zone):這個區(qū)域和工作區(qū)域(Work Zone)類似,只有通過被選中的連接,和home區(qū)域一樣。 信任區(qū)域(Trusted Zone):信任區(qū)域允許所有網(wǎng)絡(luò)通信通過。記?。阂驗閠rusted是最被信任的,即使沒有設(shè)置任何的服務(wù),那么也是被允許的,因為trusted是允許所有連接的
以上是系統(tǒng)定義的所有的 zone,但是這些 zone 并不是都在使用。只有活躍的 zone 才有實際操作意義。
Firewalld的原則:
如果一個客戶端訪問服務(wù)器,服務(wù)器根據(jù)以下原則決定使用哪個 zone 的策略去匹配 1.如果一個客戶端數(shù)據(jù)包的源 IP 地址匹配 zone 的 sources,那么該 zone 的規(guī)則就適 用這個客戶端;一個源只能屬于一個zone,不能同時屬于多個zone。 2.如果一個客戶端數(shù)據(jù)包進入服務(wù)器的某一個接口(如eth0)區(qū)配zone的interfaces, 則么該 zone 的規(guī)則就適用這個客戶端;一個接口只能屬于一個zone,不能同時屬于多個zone。 3.如果上述兩個原則都不滿足,那么缺省的zone 將被應(yīng)用
你可以使用任何一種 firewalld 配置工具來配置或者增加區(qū)域,以及修改配置。工具有例如firewall-config 這樣的圖形界面工具, firewall-cmd 這樣的命令行工具,或者你也可以在配置文件目錄中創(chuàng)建或者拷貝區(qū)域文件,/usr/lib/firewalld/zones 被用于默認和備用配置,/etc/firewalld/zones被用于用戶創(chuàng)建和自定義配置文件。
命令行工具firewall-cmd支持全部防火墻特性,基本應(yīng)用如下:
一般應(yīng)用:
1、 獲取firewalld狀態(tài)
2、在不改變狀態(tài)的條件下重新加載防火墻:
如果你使用--complete-reload,狀態(tài)信息將會丟失。
3、獲取支持的區(qū)域列表
這條命令輸出用空格分隔的列表
4、獲取所有支持的服務(wù)
這條命令輸出用空格分隔的列表。
服務(wù)是firewalld所使用的有關(guān)端口和選項的規(guī)則集合。被啟動的服務(wù)會在firewalld服務(wù)開啟或者運行時自動加載。默認情況下,很多服務(wù)是有效的。使用下面命令可列出有效的服務(wù)。
想要列出默認有效的服務(wù),也可以進入下面的目錄也能夠取得。
# cd /usr/lib/firewalld/services/
想要創(chuàng)建自己的服務(wù),需要在下面的目錄下定義它。比如,現(xiàn)在我想添加一個rhmp服務(wù),端口號1935。首先,任選一個服務(wù)復(fù)制過來。
接下來把復(fù)制過來的文件重命名為“rtmp.xml”,
接下來打開并編輯文件的頭部、描述、協(xié)議和端口號,以供RTMP服務(wù)使用,如下圖所示。
重啟firewalld服務(wù)或者重新加載設(shè)置,以激活這些設(shè)置。
# firewall-cmd --reload
為確認服務(wù)是否已經(jīng)啟動,運行下面的命令獲取有效的服務(wù)列表。
# firewall-cmd --get-services
5、獲取所有支持的ICMP類型
這條命令輸出用空格分隔的列表。
6、列出全部啟用的區(qū)域的特性(即查詢當前防火墻策略)
解釋:特性可以是定義的防火墻策略,如:服務(wù)、端口和協(xié)議的組合、端口/數(shù)據(jù)報轉(zhuǎn)發(fā)、偽裝、ICMP 攔截或自定義規(guī)則等
上面的命令將會列出每種區(qū)域如block、dmz、drop、external、home、internal、public、trusted以及work。如果區(qū)域還有其它詳細規(guī)則(rich-rules)、啟用的服務(wù)或者端口,這些區(qū)域信息也會分別被羅列出來
7、輸出區(qū)域全部啟用的特性。如果省略區(qū)域,將顯示默認區(qū)域的信息。
firewall-cmd [--zone=] --list-all
輸出指定區(qū)域啟動的特性
8、查看默認區(qū)域
public區(qū)域是默認區(qū)域。
在文件/etc/firewalld/firewalld.conf中定義成DefaultZone=public。
9、設(shè)置默認區(qū)域
firewall-cmd --set-default-zone=區(qū)域名
流入默認區(qū)域中配置的接口的新訪問請求將被置入新的默認區(qū)域。當前活動的連接將不受影響。
10、獲取活動的區(qū)域
這條命令將用以下格式輸出每個區(qū)域所含接口:
區(qū)域名
interfaces : 接口名
11、根據(jù)接口獲取區(qū)域即需要查看哪個區(qū)域和這個接口綁定即查看某個接口是屬于哪個zone的:
firewall-cmd --get-zone-of-interface=接口名
這條命令將輸出接口所屬的區(qū)域名稱。
12、將接口(網(wǎng)卡)增加到區(qū)域
firewall-cmd [--zone=] --add-interface=接口名
如果接口不屬于區(qū)域,接口將被增加到區(qū)域。如果區(qū)域被省略了,將使用默認區(qū)域。接口在重新加載后將重新應(yīng)用。
13、修改接口所屬區(qū)域
firewall-cmd [--zone=] --change-interface=接口名
這個選項與--add-interface 選項相似,但是當接口已經(jīng)存在于另一個區(qū)域的時候,該接口將被添加到新的區(qū)域。
14、從區(qū)域中刪除一個接口
firewall-cmd [--zone=] --remove-interface=接口名
注:如果某個接口不屬于任何Zone,那么這個接口的所有數(shù)據(jù)包使用默認的Zone的規(guī)則
15、查詢區(qū)域中是否包含某接口
firewall-cmd [--zone=] --query-interface=接口名
如果區(qū)域被省略了,將使用默認區(qū)域
16、列舉區(qū)域中啟用的服務(wù)
firewall-cmd [ --zone= ] --list-services
如果區(qū)域被省略了,將使用默認區(qū)域
17、啟用應(yīng)急模式阻斷所有網(wǎng)絡(luò)連接,以防出現(xiàn)緊急狀況
18、禁用應(yīng)急模式
firewall-cmd --panic-off
19、查詢應(yīng)急模式
firewall-cmd --query-panic
其他相關(guān)的配置項可以查看firewall-cmd的手冊頁:#man firewall-cmd
處理運行時區(qū)域:
運行時模式下對區(qū)域進行的修改不是永久有效的。重新加載或者重啟后修改將失效。
1、啟用區(qū)域中的一種服務(wù)即給某個區(qū)域開啟某個服務(wù)
firewall-cmd [--zone=區(qū)域] --add-service=服務(wù) [--timeout=秒數(shù)]
此操作啟用區(qū)域中的一種服務(wù)。如果未指定區(qū)域,將使用默認區(qū)域。如果設(shè)定了超時時間,服務(wù)將只啟用特定秒數(shù)。
使區(qū)域中的ipp-client 服務(wù)生效60秒:
啟用默認區(qū)域中的http服務(wù):firewall-cmd--add-service=http
2、禁用區(qū)域中的某種服務(wù)即關(guān)閉某個服務(wù)
firewall-cmd [--zone=區(qū)域] --remove-service=服務(wù)
此舉禁用區(qū)域中的某種服務(wù)。如果未指定區(qū)域,將使用默認區(qū)域。
例:禁止默認區(qū)域中的 http 服務(wù):
3、查詢區(qū)域中是否啟用了特定服務(wù)
firewall-cmd [--zone=區(qū)域] --query-service=服務(wù) Yes 表示服務(wù)啟用, no 表示服務(wù)關(guān)掉了。
4、啟用區(qū)域端口和協(xié)議組合
firewall-cmd [--zone=區(qū)域] --add-port=portid[-portid]/protocol[--timeout=seconds]
此操作將啟用端口和協(xié)議的組合。端口可以是一個單獨的端口或者是一個端口范圍 - 。協(xié)議可以是tcp或udp。
5、禁用端口和協(xié)議組合
firewall-cmd [--zone=區(qū)域] --remove-port=portid[-portid]/protocol
6、查詢區(qū)域中是否啟用了端口組合
7、啟用區(qū)域中的 IP 偽裝功能
firewall-cmd [--zone=區(qū)域]--add-masquerade
此操作啟用區(qū)域的偽裝功能。私有網(wǎng)絡(luò)的地址將被隱藏并映射到一個公有IP。這是地址轉(zhuǎn)換的一種形式,常用于路由。由于內(nèi)核的限制,偽裝功能僅可用于IPv4。
8、禁用區(qū)域中的 IP 偽裝
firewall-cmd [--zone=區(qū)域]--remove-masquerade
9、查詢區(qū)域的偽裝狀態(tài)
firewall-cmd [--zone=區(qū)域]--query-masquerade
注意:啟用偽裝功能的主機同時也需要開啟轉(zhuǎn)發(fā)服務(wù):
#echo 1 > /proc/sys/net/ipv4/ip_forward 或 #vi /etc/sysctl.conf 添加如下內(nèi)容 net.ipv4.ip_forward = 1 保存退出并執(zhí)行#sysctl -p使修改生效
10、啟用區(qū)域的 ICMP 阻塞功能
firewall-cmd [--zone=區(qū)域] --add-icmp-block=icmp類型
此操作將啟用選中的 Internet 控制報文協(xié)議(ICMP)報文進行阻塞。 ICMP 報文可以是請求信息或者創(chuàng)建的應(yīng)答報文,以及錯誤應(yīng)答。
11、禁止區(qū)域的 ICMP 阻塞功能
firewall-cmd [--zone=區(qū)域] --remove-icmp-block=icmp類型
12、查詢區(qū)域的 ICMP 阻塞功能
firewall-cmd [--zone=區(qū)域] --query-icmp-block=icmp類型
13、在區(qū)域中啟用端口轉(zhuǎn)發(fā)或映射
firewall-cmd [--zone=區(qū)域] --add-forward-port=port=portid[-portid]:proto=protocol[:toport=portid[-portid]][ :toaddr=address [/mask]]
端口可以映射到另一臺主機的同一端口,也可以是同一主機或另一主機的不同端口。端口號可以是一個單獨的端口或者是端口范圍 - 。協(xié)議可以為tcp或udp。目標端口可以是端口號或者是端口范圍 - 。目標地址可以是 IPv4地址。受內(nèi)核限制,端口轉(zhuǎn)發(fā)功能僅可用于IPv4。
意思是凡是來從external進來的22端口的數(shù)據(jù)包全部轉(zhuǎn)發(fā)到211.106.65.50
firewall-cmd --zone=external--add-forward-port=port=22:proto=tcp:toaddr=211.106.65.50
14、禁止區(qū)域的端口轉(zhuǎn)發(fā)或者端口映射
firewall-cmd [--zone=]--remove-forward-port=port=portid[-portid]:proto=protocol[ :toport=portid[-portid]][:toaddr=address [/mask]]
15、查詢區(qū)域的端口轉(zhuǎn)發(fā)或者端口映射
firewall-cmd [--zone=]--query-forward-port=port=portid[-portid]:proto=protocol[:toport=portid[-portid]][ :toaddr=address [/mask]]
處理永久區(qū)域:
永久選項不直接影響運行時的狀態(tài)。這些選項僅在重載或者重啟服務(wù)時可用。為了使用運行時和永久設(shè)置,需要分別設(shè)置兩者。選項--permanent需要是永久設(shè)置的第一個參數(shù)。
1、獲取永久選項所支持的服務(wù)
firewall-cmd --permanent --get-services
2、獲取永久選項所支持的ICMP類型列表
firewall-cmd --permanent --get-icmptypes
3、獲取支持的永久區(qū)域
firewall-cmd --permanent --get-zones
4、配置防火墻在public區(qū)域打開http協(xié)議,并保存,以致重啟有效
firewall-cmd --permanent --zone=public --add-service=http
查看永久模式下public區(qū)域是否打開http服務(wù)。
firewall-cmd --permanent --zone=public --query-service=http
5、防火墻開放8080端口在public區(qū)域
firewall-cmd --permanent--zone=public --add-port=8080/tcp
6、命令行配置富規(guī)則:
查看富規(guī)則:
# firewall-cmd --list-rich-rules
創(chuàng)建富規(guī)則:
firewall-cmd --add-rich-rule 'rule family=ipv4 sourceaddress=10.35.89.0/24 service name=ftp log prefix="ftp" level=info accept' --permanent firewall-cmd --add-rich-rule 'rule family=ipv4 sourceaddress=10.35.89.0/24 port port=80 protocol=tcp log prefix="80" level=info accept'--permanent firewall-cmd --add-rich-rule rule family="ipv4" sourceaddress="192.168.10.30" forward-port port="808"protocol="tcp" to-port="80" to-addr="10.10.10.2"
富規(guī)則中使用偽裝功能可以更精確詳細的限制:
firewall-cmd--add-rich-rule 'rule family=ipv4 source address=10.10.10.2/24 masquerade'
僅允許部分IP訪問本機服務(wù)配置
firewall-cmd --permanent--zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.0/24"service name="http" accept"
禁止遠程IP訪問ssh
firewall-cmd --permanent--zone=public --add-rich-rule=’rule family=ipv4 source address=192.168.0.0/24service name=ssh reject’
7、刪除rich規(guī)則
firewall-cmd --permanent--zone=public --remove-rich-rule=’rule family=ipv4 source address=192.168.0.0/24service name=ssh reject’
8、僅允許部分IP訪問本機端口配置
firewall-cmd --permanent--zone=public --add-rich-rule="rule family="ipv4" sourceaddress="192.168.0.0/24"port protocol="tcp"port="8080" accept"
9、創(chuàng)建rich規(guī)則,可以指定日志的前綴和輸出級別
firewall-cmd --permanent--zone=public --add-rich-rule="rule family="ipv4" sourceaddress="192.168.0.4/24"port port=8080 protocol="tcp" logprefix=proxy level=warning accept" 可以通過查看/var/log/messages日志文件
10、也可通過配置以下XML文件,進行對防火墻的配置修改
#cat/etc/firewalld/zones/public.xml <?xmlversion="1.0" encoding="utf-8"?> <zone> <short>Public</short> <description>Foruse in public areas. You do not trust the other computers on networks to notharm your computer. Only selected incoming connections areaccepted.</description> <servicename="dhcpv6-client"/> <servicename="ssh"/> <rulefamily="ipv4"> <sourceaddress="192.168.0.4/24"/> <servicename="http"/> <accept/> </rule> </zone>
總結(jié)
netfilter 防火墻總是容易受到規(guī)則順序的影響,因為一條規(guī)則在鏈中沒有固定的位置。在一條規(guī)則之前添加或者刪除規(guī)則都會改變此規(guī)則的位置。在靜態(tài)防火墻模型中,改變防火墻就是重建一個干凈和完善的防火墻設(shè)置,默認鏈通常也沒有安全的方式添加或刪除規(guī)則而不影響其他規(guī)則。
動態(tài)防火墻有附加的防火墻功能鏈。這些特殊的鏈按照已定義的順序進行調(diào)用,因而向鏈中添加規(guī)則將不會干擾先前調(diào)用的拒絕和丟棄規(guī)則。從而利于創(chuàng)建更為合理完善的防火墻配置。
下面是一些由守護進程創(chuàng)建的規(guī)則,過濾列表中啟用了在公共區(qū)域?qū)?/span> ssh , mdns 和 ipp-client 的支持:
總結(jié):
圖形化配置工具
firewall daemon 主要的配置工具是firewall-config。它支持防火墻的所有特性。管理員也可以用它來改變系統(tǒng)或用戶策略。
命令行客戶端
firewall-cmd是命令行下提供大部分圖形工具配置特性的工具。
附錄:要想了解更多firewall防火墻更多知識可以查看firewall的相關(guān)手冊頁,下圖所顯示的就是firewall防火墻的相關(guān)手冊頁:
若要查看rich-rule手冊頁
例如:允許icmp協(xié)議的數(shù)據(jù)包通信
本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!
更多建議: