时间同步服务和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