1.1 /etc/passwd文件:
通过该文件,判断出哪些是普通用户(UID>1000,该设置值在login.defs文件中)、系统用户(UID<1000)和超级用户(UID=0)。
再判断哪些用户不可登录,如shell字段为/sbin/nologin、/bin/false的就不可登录。
通过id命令查看,用法:id [user]
包含用户id,用户组id,附加组id,若不指定用户,则默认显示当前用户基本信息
1.2 /etc/shadow文件:
用户第二字段为*或!!为锁定状态,不允许登录。
结果记录
1)经核查,为用户分配了账户和权限,目前系统内账号包括超级管理员root、系统管理员SysAdmin、安全管理员SecAdmin、审计管理员AudAdmin;
2)经核查,不存在匿名,默认用户只允许超级管理员可以登录。/etc/group权限644,/etc/passwd权限为644,/etc/shadow权限为000,/etc/profile权限为644,/etc/crontab权限为644,/etc/ssh/sshd_config权限为400。
b) 应重命名或删除默认账户,修改默认账户的默认口令。
符合建议项
cat /etc/passwd
cat /etc/shadow
记录没有被禁用的系统默认的用户名
bin、daemon、shutdown、halt、sync、adm、lp、news、uucp、operator、games、gopher
删除多余用户
删除多余用户组
groupdel groupname:adm、lp、news、uucp、games、dip、pppusers、popusers、slipusers
正常情况下Linux默认账户除了root都被禁止登录了,所以我们正常考虑的话就考虑root账户。限制默认账户的方式有很多种,譬如重命名、禁用、降低权限、限制远程访问等等。针对Linux系统,一般不会去重命名或者禁用root,用的比较多的就是限制root账户远程登录。
2、查看远程连接是否
PermitRootLogin no
cat /etc/ssh/sshd_config | grep Root
确认 /etc/ssh/sshd_config 中 PermitRootLogin 参数配置 PermitRootLogin,yes代表允许root远程ssh登录,no代表禁止ssh远程登录
核查
/etc/ssh/sshd_config
cat /etc/ssh/sshd_config
cat /etc/ssh/sshd_config | grep Root
PermitRootLogin no
结果记录
经核查,其他默认用户均已禁用,默认账户超级管理员root的默认口令已修改。查询配置文件/etc/ssh/sshd_config,SSH 远程管理 PermitRootLogin 状态为no,禁止root用户远程登录。
注意
需要重命名root或者禁用删除,但依据 28448-2019,1、2为或的关系,满足一个就给符合
c) 应及时删除或停用多余的、过期的账户,避免共享账户的存在。
符合建议项
确认管理人员与账户之间的对应关系,确认是否存在多人共用统一账户的情况存在。
结果记录
经核查,系统目前只启用root、SysAdmin、SecAdmin、AudAdmin,不存在多余或过期账户,管理员用户与账户之间是否一一对应。
d)应授予管理用户所需的最小权限,实现管理用户的权限分离。
符合建议项
具有最少4个账户(包括一个超管权限账户root),然后对应到人
● 三权分立原则
至少建立系统管理员、安全管理员、审计管理员三种权限帐号。
个人认为,不使用root超级管理员账户,该账户的管理权限应掌握在安全管理员手中,仅上线前用于环境部署工作。
可以参考能力验证给出的权限表
1. 系统管理员
用于管理整个系统,可在 /etc/sudoer 中授予各式各样的权限,但无审计管理的权限,不可中断审计进程及修改审计配置等,且不可威胁到root用户。可授予新增操作员、修改对应文件、服务等的一些操作管理。
例如仅可修改普通用户口令,不可修改root账户口令
2. 安全管理员
负责各类安全策略的制定与落实。包括不限于服务器口令安全策略、备份安全策略、审计安全策略、账户安全策略、防病毒策略、运维安全策略等等。例如:
⚫ 各类设备应划分系统管理员、安全管理员和审计管理员,此外数据库服务器应创建数据库管理员账号;
⚫ 应为每个用户创建账号并分配权限, 禁止出现共享账号。及时停用离职人员账号,避免出现多余账户;
⚫ 用户账户权限分配遵从“最小化”和“必须使用”原则,离岗人员的权限需收回;
⚫ 各类设备应仅允许审计管理员能够查询审计日志,管理日志策略、日志文件和日志进程;
⚫ 配置超时登录机制,登录用户无操作自动退出系统。其中, 关键资产阈值 15分钟, 重要资产阈值 30 分钟, 一般资产阈值 60 分钟。
3. 审计管理员
负责对系统审计日志方面的管理。
例如具有sudo systemctl audit(rsyslog)等进程的管理权限。
对于auidt,syslog轮替规则、审计规则具有配置权限等。
4.操作员
普通权限账户,用于正常的工作,无其他用途。
结果记录
1)经核查,系统进行角色划分,分为超级管理员、系统管理员、安全管理员、审计管理员;
2)经核查,管理用户的权限已经进行分离;
3)经核查,管理用户权限为其工作任务所需的最小权限。
e)应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则。
要求解读
操作系统的访问控制策略应由授权主体(例如安全管理员)进行配置,非授权主体不得更改访问控制策略。访问控制策略规定了操作系统用户对操作系统资源(例如文件和目录)具有哪些权限、能进行哪些操作。通过在操作系统中配置访问控制策略,可以实现对操作系统各用户权限的限制。
结果记录
1)经核查,系统由授权主体安全管理员SecAdmin负责配置访问控制策略;
2)经核查,授权主体安全管理员SecAdmin依据安全策略配置了主体对客体的访问规则并统一管理;
3)经测试,系统管理员SysAdmin和审计管理员AudAdmin不可越权访问。
f)访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级。
符合建议项
依据能力验证官方给出的结果记录描述,该条对于操作系统自主访问控制基本默认符合。
主体为用户级,客体为文件、目录级别。
结果记录
经核查,访问控制策略的控制粒度达到主体为用户级或进程级,客体为文件、数据库表、记录或字段级。查看cat /etc/login.defs中的Umask为077。
g)应对敏感信息资源设置安全标记,并控制主体对有安全标记信息资源的访问。
要求解读
敏感标记是强制访问控制的依据,主体和客体都有,存在形式多样,既可能是整型数字,也可能是字母,总之,它表示主体和客体的安全级别。敏感标记由强认证的安全管理员设置。安全管理员通过对重要信息资源设置敏感标记来决定主体以何种权限对客体进行操作,实现强制访问控制。
在操作系统能够对信息资源设置敏感标记的前提下,应严格按照安全策略控制用户对相关资源的操作。
这条应该是作为做等保人员比较难测评的一条条款了,其实做了这么久,也不太明白真实符合的情况是什么样的,因为客户基本不可能会去自己配置。初级书中叫我们去查看 /etc/selinux/config 这个文件,这里可以使用 sestatus 命令查看,确认状态为 enabled,再确认具体的工作模式
结果记录
经核查,系统未对主体、客体设置安全标记。
安全审计
基本要求
测评要求
应用指南
a) 应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计。
符合建议项
1、检查系统是否开启审计功能:
systemctl is-enabled auditd
Syslog and audit status
systemctl status auditd
systemctl status rsyslog
service auditd status
service rsyslog status
2、是否审核了审计功能启用前的进程:
grep "^\s*linux" /boot/grub2/grub.cfg
3、查看audit.rules中是否记录了修改日期和时间信息的事件(time-change)、修改用户/组信息事件(identity)、修改系统网络环境事件(system-locale)、记录用户登录退出事件(logins)、会话初始化信息(session)、访问控制权限修改事件(perm_mod)、未经授权的文件访问失败事件(access)、记录文件被重命名或修改属性、系统管理员操作(action)、内核模块的加载和卸载(modules)等等。
cat /etc/audit/audit.rules
ausearch -ts today
4、若有第三方审计工具或系统则记录其运行状态是否正常。
/var/log/messages 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
/var/log/secure 与安全相关的日志信息
/var/log/maillog 与邮件相关的日志信息
/var/log/cron 与定时任务相关的日志信息
/var/log/spooler 与UUCP和news设备相关的日志信息
/var/log/boot.log 守护进程启动和停止相关的日志消息
ls -l /var/log/secure /var/log/audit/audit.log /var/log/cron /var/log/lastlog /var/log/messages /etc/rsyslog.conf /etc/audit/auditd.conf
结果记录
1)经核查,系统开启了安全审计功能,系统审核策略:rsyslog.service和auditd.service均为active (running) ,可保证6个月留存期;
2)经核查,部署了外部Syslog日志服务器收集审计日志,审计范围覆盖到每个用户;
3)经核查,部署了外部Syslog日志服务器收集审计日志,对重要的用户行为和重要安全事件进行审计。
b) 审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息。
符合建议项
**1. 查看当前系统时间:**date
确认当前系统时间是否为北京时间。
2. 查看日志信息(默认符合)
ausearch -i |more
在/var/log/目录下的文件中查看即可,如message日志
结果记录
经核查,Linux日志包括类型、信息、pid、uid、auid、ses、具体信息、用户名、地址、终端、结果。同时部署外部Syslog日志服务器收集审计日志,审计记录信息包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息。
c) 应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等。
1.确认本地审计记录文件权限
日志文件权限不高于644
2.是否定期备份
确认是否将syslog、audit日志定期备份到日志审计设备中(可以问业主如果没做外发有无设置日志定期保存到别的地方,如果是初测一般都没做)
3.查看轮替规则
若未定期备份审计记录,确认各日志的轮替规则
syslog配置文件 /etc/logrotate.conf
weekly #每周清理一次日志文件
rotate 4 #保存四个轮换日志
create #清除旧日志的同时,创建新的空日志文件
dateext #使用日期为后缀的回滚文件 #可以去var/log目录下看看
include /etc/logrotate.d #包含/etc/logrotate.d目录下的所有配置文件
结果记录
1)经核查,采取了保护措施对审计记录进行保护,日志数据本地保存,覆盖周期不小于6个月;
2)经核查,部署了外部Syslog日志服务器收集审计日志,对审计记录进行定期备份,每6个月打包一次审计记录。
d) 应对审计进程进行保护,防止未经授权的中断。
符合建议项
1. 判断哪些用户可以对审计进程进行操作
默认情况下,仅root权限账户可中断审计进程
查看sudo文件配置情况:cat /etc/sudoers,若存在以下配置,则能中断审计进程
结果记录
经核查,通过系统管理员SysAdmin和安全管理员SecAdmin无法中断审计进程。同时部署了外部Syslog日志服务器收集审计日志,对审计记录进行定期备份,每6个月打包一次审计记录。
入侵防范
基本要求
测评要求
应用指南
a) 应遵循最小安装的原则,仅安装需要的组件和应用程序。
符合建议项
查询linux中安装的程序,一般使用yum list installed 或者rpm -qa,关键是linux中随随便便都安装得有几百个组件,而且很多组件都是存在着依赖关系。你很难或者至少很难快速的判断某组件到底是必需的还是非必需的,而被测评单位方的人也一样,他也不可能知道。
感觉从上述命令中非常难下手,稍微明显一些的,可以查看开机自启服务
systemctl list-unit-files | grep enabled
有些可能明显用不到的,比如web应用服务器上留有当时测试的mysql 程序,后续项目更新升级后使用数据库服务器,而原先的就忘了卸载删除。以及一些明显有问题的服务,例如 telnet。
1.查看是否启用多余的inetd.Services服务:
chkconfig --list
Chargen services、daytime services、Discard wervices、Echo services、Time services
以上服务均为Debug和测试时使用。
systemctl | grep running
是否对安全隐患的漏洞进行补丁修补或指定补丁策略。
2.查看已安装组件和应用程序
yum list installed
结果记录
1)经核查,服务器遵循最小安装原则;
2)经核查,服务器未安装非必要的组件和应用程序。
b) 应关闭不需要的系统服务、默认共享和高危端口。
1. 服务
对于组件、服务、进程、端口而言,它们之间是存在着关系的:安装程序–>启动相关服务–>启动相关进程–>监听相关端口。而且,一个程序(组件)可能有数个服务,而一个服务也可能实际启动了数个进程,当然一个进程应该就对应一个端口。
● Centos 6.x使用 service --status-all 来查看服务
● Centos 7.x 使用 systemctl 命令来查看服务
可以根据类型列出单元 systemctl list-units --type service
估计也看不太懂,具体哪些服务是多余的,看到有明显不符合的,例如telnet 之类的就给不符合吧
2. 端口
使用命令:netstat -tuanp 查看系统中监听的端口以及对应的进程,进行判断哪些是多余的服务、端口,一般默认装机完毕25、111为多余端口,对应的服务也就是多余的。
3. 共享情况
Linux 默认共享是没有的,但是可以安装对应的共享服务
符合建议项
1、检查:
systemctl -a
查看
CUPS、Rsh services、Talk、Telnet、tftp、、IMAP、POP3、SNMP、DHCP、rsync、NIS
等等服务应该关闭。
systemctl | grep running
ss -ntlp
ss -ntlpu
查看是否开启端口:
21、23
1. Telnet服务(默认端口23):telnet是一个不安全的网络协议,会以明文形式传输用户名和密码。建议关闭telnet服务,使用更安全的SSH服务。
2. FTP服务(默认端口21):FTP也是一个不安全的协议,密码以明文形式传输。建议关闭FTP服务,并使用更安全的SCP或SFTP替代。
数据库端口是否修改默认端口号:
1433、1521、3306、6379、5432、27017
等等。
MySQL: 3306
PostgreSQL: 5432
Oracle Database: 1521
SQL Server: 1433
MongoDB: 27017
Redis: 6379
MariaDB: 3306
Elasticsearch: 9200 (HTTP), 9300 (TCP)
结果记录
1)经核查,服务器未开启非必要的系统服务和默认共享;
2)经核查,服务器不存在非必要的高危端口,仅开启SSH协议(22端口)、https服务(443端口)。
c) 应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制。
符合建议项
1、查看服务器是否通过
hosts.allow/hosts.deny(cat /etc/hosts.allow、cat /etc/hosts.deny)
或ssh中Listenaddress(cat /etc/ssh/sshd_config)、或iptables(iptables -L -v -n)限制可接入的网络地址。
/etc/hosts.deny 和 /etc/hosts.allow 是 Linux 系统中用于控制网络访问的配置文件。
/etc/hosts.deny 文件允许你指定哪些客户端将被拒绝访问系统。你可以在这个文件中使用 TCP Wrappers 语法来配置访问控制规则。
修改/etc/hosts.allow和/etc/hosts.deny 这两个文件,把需要通过的IP写在/etc/hosts.allow 文件里
cat /etc/hosts.allow
cat /etc/hosts.deny
cat /etc/hosts.allow | grep -v ^#
cat /etc/hosts.deny | grep -v ^#
[root@localhost ~]# cat /etc/hosts.allow
sshd:127.0.0.1:allow
[root@localhost ~]# cat /etc/hosts.deny
sshd:ALL
[root@localhost ~]# service sshd restart #重启服务使配置生效
1.2 firewall
查看当前防火墙是否开启
systemctl status firewalld.service
firewall-cmd --state
例如使用以下命令添加允许访问22端口的规则
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.12.28" port protocol="tcp" port="22" accept'
firewall-cmd --reload
3. sshd_config文件
结果记录
经核查,服务器通过堡垒机输入账号密码登录,堡垒机限制终端接入范围,仅来自ip 192.168.1.4 的终端可以接入堡垒机从而登录服务器。同时,服务器通过/etc/hosts.allow和/etc/hosts.deny进行限制,仅允许ip 192.168.1.4 的终端远程登录。
d)应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求。
结果记录
不适用,根据GB∕T 28448-2019 《信息安全技术 网络安全等级保护测评要求》测评对象范围描述,操作系统无该项要求。
e) 应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞。
这条一般是结合漏洞扫描结果,确认是否存在已知漏洞
或装有统一管理的安全软件,后台可以统一查看对应服务器是否存在相应漏洞,可以进行安全检查
结果记录
1)定期对操作系统进行漏洞扫描,对扫描发现的漏洞进行评估和补丁更新测试,及时进行补丁更新;
2)本次测评通过漏洞扫描、渗透测试等方式未发现高风险漏洞;
3)对操作系统补丁进行测试和安装,补丁情况为较新稳定版本。
f) 应能够检测到对重要节点进行入侵的行为,并在发生严重入侵事件时提供报警。
该条查看是否安装入侵检测软件,例如EDR等,一般可以通过进程查到,这种就需要去询问运维人员了
符合建议项
2.网络入侵检测
结果记录
1)经访谈安全管理员并核查,服务器部署阿里云安骑士主机入侵检测系统,网络部署阿里巴巴安全组件和阿里云助手;
2)经核查,在发生严重入侵事件时阿里云安骑士主机入侵检测系统可以提供报警。
恶意代码防范
基本要求
应用指南
a) 应采用免受恶意代码攻击的技术措施或主动免疫可信验证机制及时识别入侵和病毒行为,并将其有效阻断。
针对于Linux来说,一种就是购买统一管理的防病毒软件,常见的有EDR、等,免费常见的一般为 clamav(安装步骤这里就略过了)
查看病毒库版本:freshclam -V 或 clamscan --version
确定病毒库的版本距今不超过1个月,不然就是高风险项。
结果记录
1)经核查,服务器安装了终端安全EDR,定期进行升级和更新恶意代码库。
2)经核查,终端安全EDR采用主动免疫验证技术即使识别入侵和病毒行为;
3)经核查,当识别入侵和病毒行为时终端安全EDR可以将其有效阻断。
可信验证
基本要求
测评要求
应用指南
可信验证这个条款,目前市面上的主流产品并没有普及。条款要求基于“可信根”对计算机设备的系统引导程序、系统程序、重要配置参数和应用程序等进行可信验证,那么这个“可信根”又是什么东西。
个人认为就是可信的源头,那么针对于服务器这类的可信,源头是哪里呢?那么肯定是从硬件开始可信,通过 硬件****→内核 → 应用 一步步来实现最终的可信链路。所以一般的情况下就是要有这样的可信硬件产品。可以参考下图,是银河麒麟操作系统多安全策略框架,这样的策略下应该是能实现可信验证了。
总结来说就是要购买可信硬件并部署,通过从硬件开始可信,可能是可信芯片啥的,这个具体没有接触过,细节就不大清楚了。所以如果没有硬件做可信支持的话,那么这条条款肯定是不符合的。
结果记录
1)经核查,未基于可信根对计算设备的系统引导程序、系统程序、重要配置参数和应用程序
等进行可信验证;
2)经核查,未在应用程序的关键执行环节进行动态可信验证。
数据完整性
针对测评对象为操作系统,我们需要考虑的应为鉴别数据、重要审计数据、重要配置****数据等。
Linux 服务器采用SSH进行远程管理
首先,SSH会使用加密算法来将数据进行加密,就像把信封上的信写成密码一样,这样只有合法的接收方才能读懂里面的内容。这样就能防止数据在传输途中被别人偷窥或修改。
其次,SSH还会对数据做数字签名,就像在信封上盖上自己的印章一样。这可以帮助接收方验证数据的完整性和真实性,确保数据没有被偷偷篡改。
另外,SSH还会使用一种叫做消息鉴别码的方法来检查数据的完整性。这个鉴别码就像是一个特殊的密码,只有知道密码的人才能验证数据是否正常,防止数据在传输过程中被损坏或修改。
通过这些方法,SSH能够确保通信过程中数据的完整性。它可以保护数据不被窃听、篡改或损坏,并确保只有合法的接收方能够读取和理解数据。
所以通过SSH协议进行远程管理的话,鉴别数据以及传输过程中的配置数据,这些完整性都能得到保障。另外审计数据一般是通过syslog协议发送到日志服务器上,syslog协议并不提供保密性和完整性的保证。它主要用于系统日志的传输和存储,并没有内置的加密或签名机制来确保传输的日志消息的机密性和完整性。
结果记录
b)应采用校验技术或密码技术保证重要数据在存储过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等
一般不符合
先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
否正常,防止数据在传输过程中被损坏或修改。
通过这些方法,SSH能够确保通信过程中数据的完整性。它可以保护数据不被窃听、篡改或损坏,并确保只有合法的接收方能够读取和理解数据。
所以通过SSH协议进行远程管理的话,鉴别数据以及传输过程中的配置数据,这些完整性都能得到保障。另外审计数据一般是通过syslog协议发送到日志服务器上,syslog协议并不提供保密性和完整性的保证。它主要用于系统日志的传输和存储,并没有内置的加密或签名机制来确保传输的日志消息的机密性和完整性。
结果记录
b)应采用校验技术或密码技术保证重要数据在存储过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等
一般不符合
先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
[外链图片转存中…(img-UDSwwbx6-1714297344088)]
[外链图片转存中…(img-CY4a4p8o-1714297344089)]
[外链图片转存中…(img-4NnFlPTz-1714297344090)]
[外链图片转存中…(img-LFfgXYLu-1714297344090)]
[外链图片转存中…(img-jZBtYfOq-1714297344091)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新