時間同步服務和SElinux安全管理
一、時間同步服務
1.時間同步服務
多主機協作工作時,各個主機的時間同步很重要,時間不一致會造成很多重要應用的故障,如:加密協 議,日誌,叢集等, 利用NTP(Network Time Protocol) 協議使網路中的各個計算機時間達到同步。 目前NTP協議屬於運維基礎架構中必備的基本服務之一
2.時間同步軟體實現:
- ntp
- chrony
1)ntp:
將系統時鐘和世界協調時UTC同步,精度在區域網內可達0.1ms,在網際網路上絕大多數的地方精度可以 達到1-50ms
專案官網:http://www.ntp.org
2)chrony:
實現NTP協議的的自由軟體。可使系統時鐘與NTP伺服器,參考時鐘(例如GPS接收器)以及使用手錶 和鍵盤的手動輸入進行同步。還可以作為NTPv4(RFC 5905)伺服器和對等體執行,為網路中的計算機 提供時間服務。設計用於在各種條件下良好執行,包括間歇性和高度擁擠的網路連線,溫度變化(計算 機時鐘對溫度敏感),以及不能連續執行或在虛擬機器上執行的系統。 通過Internet同步的兩臺機器之間的典型精度在幾毫秒之內,在LAN上,精度通常為幾十微秒。利用硬 件時間戳或硬體參考時鐘,可實現亞微秒的精度
二、chrony
1.chrony介紹
chrony 的優勢:
更快的同步只需要數分鐘而非數小時時間,從而最大程度減少了時間和頻率誤差,對於並非全天 24 小時執行的虛擬計算機而言非常有用 能夠更好地響應時鐘頻率的快速變化,對於具備不穩定時鐘的虛擬機器或導致時鐘頻率發生變化的節 能技術而言非常有用 在初始同步後,它不會停止時鐘,以防對需要系統時間保持單調的應用程式造成影響 在應對臨時非對稱延遲時(例如,在大規模下載造成連結飽和時)提供了更好的穩定性 無需對伺服器進行定期輪詢,因此具備間歇性網路連線的系統仍然可以快速同步時鐘
chrony官網:https://chrony.tuxfamily.org
chrony官方文件:https://chrony.tuxfamily.org/documentation.html
2.chrony 檔案組成
1)包:chrony
2)兩個主要程式:chronyd和chronyc
chronyd:後臺執行的守護程序,用於調整核心中執行的系統時鐘和時鐘伺服器同步。它確定計算
機增減時間的比率,並對此進行補償
chronyc:命令列使用者工具,用於監控效能並進行多樣化的配置。它可以在chronyd例項控制的計
算機上工作,也可在一臺不同的遠端計算機上工作
3)服務unit 檔案: /usr/lib/systemd/system/chronyd.service
4)監聽埠: 服務端: 123/udp,客戶端: 323/udp
5)配置檔案: /etc/chrony.conf
6)chronyc 可以執行在互動式和非互動式兩種方式,支援以下子命令
help 命令可以檢視更多chronyc的互動命令 accheck 檢查是否對特定主機可訪問當前伺服器 activity 顯示有多少NTP源線上/離線 sources [-v] 顯示當前時間源的同步資訊 sourcestats [-v]顯示當前時間源的同步統計資訊 add server 手動新增一臺新的NTP伺服器 clients 報告已訪問本伺服器的客戶端列表 delete 手動移除NTP伺服器或對等伺服器 settime 手動設定守護程序時間 tracking 顯示系統時間資訊
三、公共NTP服務
pool.ntp.org:專案是一個提供可靠易用的NTP服務的虛擬叢集cn.pool.ntp.org,0-3.cn.pool.ntp.org
阿里雲公共NTP伺服器 Unix/linux類:ntp.aliyun.com,ntp1-7.aliyun.com windows類: time.pool.aliyun.com
騰訊公共NTP time1-5.cloud.tencent.com
大學ntp服務 s1a.time.edu.cn 北京郵電大學 s1b.time.edu.cn 清華大學 s1c.time.edu.cn 北京大學
國家授時中心伺服器:210.72.145.44
美國標準技術院: time.nist.gov
四、實戰案例:實現私有的時間伺服器
1.服務端配置
安裝chrony包
[root@centos7 ~]# yum -y install chrony
檢視其所有包
[root@centos7 ~]# rpm -ql chrony /etc/NetworkManager/dispatcher.d/20-chrony /etc/chrony.conf /etc/chrony.keys /etc/dhcp/dhclient.d/chrony.sh /etc/logrotate.d/chrony /etc/sysconfig/chronyd /usr/bin/chronyc /usr/lib/systemd/ntp-units.d/50-chronyd.list /usr/lib/systemd/system/chrony-[email protected] /usr/lib/systemd/system/chrony-[email protected] /usr/lib/systemd/system/chrony-wait.service /usr/lib/systemd/system/chronyd.service /usr/libexec/chrony-helper /usr/sbin/chronyd /usr/share/doc/chrony-3.4 /usr/share/doc/chrony-3.4/COPYING /usr/share/doc/chrony-3.4/FAQ /usr/share/doc/chrony-3.4/NEWS /usr/share/doc/chrony-3.4/README /usr/share/man/man1/chronyc.1.gz /usr/share/man/man5/chrony.conf.5.gz /usr/share/man/man8/chronyd.8.gz /var/lib/chrony /var/lib/chrony/drift /var/lib/chrony/rtc /var/log/chrony
修改其配置檔案/etc/chrony.conf
[root@centos7 ~]# vim /etc/chrony.conf
重啟chrony服務
[root@centos7 ~]# systemctl restart chronyd
檢視其埠123/udp
[root@centos7 ~]# ss -ntul
2.客戶端配置
安裝chrony包
[root@centos8 ~]# yum -y install chrony
修改配置檔案/etc/chronyconf
重啟chronyd服務
[root@centos8 ~]# systemctl restart chronyd
[root@centos8 ~]# systemctl status chronyd
確認同步成功
[root@centos8 ~]# chronyc sources -v [root@centos8 ~]# date
五、SELinux 介紹和工作原理
1.SELinux 介紹
SELinux:Security-Enhanced Linux, 是美國國家安全域性(NSA=The National Security Agency)和 SCC(Secure Computing Corporation) 開發的Linux的一個強制訪問控制的安全模組。2000年以GNU GPL釋出,Linux核心2.6版本後集成在核心中
2.SELinux 相關概念
物件(object):所有可以讀取的物件,包括檔案、目錄和程序,埠等 主體:程序稱為主體(subject) SELinux中對所有的檔案都賦予一個type的檔案型別標籤,對於所有的程序也賦予各自的一個domain的 標籤。domain標籤能夠執行的操作由安全策略裡定義 當一個subject試圖訪問一個object,Kernel中的策略執行伺服器將檢查AVC (訪問向量快取Access Vector Cache), 在AVC中,subject和object的許可權被快取(cached),查詢“應用+檔案”的安全環境。然後 根據查詢結果允許或拒絕訪問 安全策略:定義主體讀取物件的規則資料庫,規則中記錄了哪個型別的主體使用哪個方法讀取哪一個對 象是允許還是拒絕的,並且定義了哪種行為是充許或拒絕
3.SELinux有四種工作型別
- Strict:CentOS 5,每個程序都受到selinux的控制
- targeted:用來保護常見的網路服務,僅有限程序受到selinux控制,只監控容易被入侵的程序, CentOS 4只保護13個服務,CentOS 5保護88個服務
- minimum:CentOS 7,修改的 targeted,只對選擇的網路服務
- mls:提供MLS(多級安全)機制的安全性
targeted為預設型別,minimum和mls穩定性不足,未加以應用,strict已不再使用
4.SELinux安全上下文
傳統Linux,一切皆檔案,由使用者,組,許可權控制訪問,在SELinux中,一切皆物件(object),由存放 在inode的擴充套件屬性域的安全元素所控制其訪問,所有檔案和埠資源和程序都具備安全標籤:安全上 下文(security context)
安全上下文有五個元素組成:
user:role:type:sensitivity:category
五個安全元素
User:指示登入系統的使用者型別,程序:如system_u為系統服務程序,是受到管制的, unconfined_u為不管制的程序,使用者自己開啟的,如 bash,檔案:system_u系統程序建立的文 件, unconfined_u為使用者自已建立的檔案 Role:定義檔案,程序和使用者的用途:程序:system_r為系統服務程序,受到管制。 unconfined_r 為不管制程序,通常都是使用者自己開啟的,如 bash,檔案:object_r Type:指定資料型別,規則中定義何種程序型別訪問何種檔案Target策略基於type實現,多服務共 用:public_content_t Sensitivity:限制訪問的需要,由組織定義的分層安全級別,如unclassified,secret,top,secret, 一 個物件有且只有一個sensitivity,分0-15級,s0最低,Target策略預設使用s0 Category:對於特定組織劃分不分層的分類,如FBI Secret,NSA secret, 一個物件可以有多個 categroy, c0-c1023共1024個分類, Target 策略不使用category
5.啟用和禁用SELinux
1)SELinux的狀態:
enforcing:強制,每個受限的程序都必然受限
permissive:允許,每個受限的程序違規操作不會被禁止,但會被記錄於審計日誌
disabled:禁用
2)相關命令:
getenforce: 獲取selinux當前狀態 sestatus :檢視selinux狀態 setenforce 0|1 0: 設定為permissive 1: 設定為enforcing
3)配置檔案:
/boot/grub/grub.conf 在kernel行使用selinux=0禁用SELinux /boot/grub2/grub.cfg 在linux16行使用selinux=0禁用SELinux /etc/selinux/config 或 /etc/sysconfig/selinux 中 SELINUX={disabled|enforcing|permissive}
記錄於2022-3-27-10:20