魏蓝

以梦为马

导航

时间同步服务和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-dnssrv@.service
/usr/lib/systemd/system/chrony-dnssrv@.timer
/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

posted on 2022-03-27 10:19  魏蓝  阅读(147)  评论(0编辑  收藏  举报