1. 程式人生 > 其它 >時間同步服務和SElinux安全管理

時間同步服務和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