等保2.0测评深入理解—Linux操作系统(十)

admin 2024年2月15日19:57:33评论59 views字数 4420阅读14分44秒阅读模式

知识宝库在此藏,一键关注获宝藏

续上文……

七、数据完整性

b)应采用校验技术或密码技术保证重要数据在存储过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等

我们再来看存储完整性,这里可以看一下以前客户现场的一张截图,下面有期望版本与当前版本两列
等保2.0测评深入理解—Linux操作系统(十)
判断数据是否被篡改,其实就是需要一个比对过程,一般采用哈希算法进行完整性比对。哈希值的特点就是原数据改变(即使在一串字符中加入了一个1),所计算出来的哈希值也会有天差地别。所以这条的要求是要有比对的手段,来判断其是否具有存储完整性校验措施,而与数据存储采用的算法无关,比如鉴别数据采用MD5,但是没有比对过程,是与该条完整性校验没有任何关系的

Linux 常见免费的完整性检测软件一般有两个:aide和tripwire,aide 相关情况可以看下我之前的2022能力验证—linux系统配置核查(四)这篇文章,这里就介绍下tripwire

1.  centos7上安装tripwire

yum -y update

yum -y install epel-release

yum -y install tripwire
安装完成后,我们需要生成新的密钥文件
Tripwire使用2个关键文件。
site-key:它用于保护Tripwire配置。 因此,除非我们再次生成配置,否则对tripwire配置所做的任何更改都不会生效,我们会提示您输入“site-key”密码。
local-key:它用于验证tripwire二进制文件。 当我们想要更新tripwire系统数据库时,我们需要运行tripwire命令,并且会提示我们输入'local-key'的密码。
使用下面的命令生成新的tripwire密钥文件(站点和本地密钥)。
tripwire-setup-keyfiles
该命令将生成两个密钥文件“site-key”和“local-key”,并且您将被要求输入每个密码。
输入您自己的“ 网站密钥 ”密码,然后按Enter键。
输入您自己的“ 本地密钥 ”密码并再次按Enter键。
等保2.0测评深入理解—Linux操作系统(十)
接下来,使用'site-key'签署tripwire配置。
输入您的“ 网站密钥 ”密码。
现在,为了签署Tripwire政策,请输入您的“ 本地密钥 ”密码。
等保2.0测评深入理解—Linux操作系统(十)
Tripwire已安装在CentOS 7上,新的tripwire配置和密钥位于 /etc/tripwire 目录中。

等保2.0测评深入理解—Linux操作系统(十)

1.2 为CentOS配置Tripwire策略
初始化tripwire数据库并确保没有错误,使用下面的tripwire 命令初始化tripwire数据库。
tripwire --init
等保2.0测评深入理解—Linux操作系统(十)
您将被问到“local-key”密码短语,您可能会收到错误消息“no such directory”。因为系统没有在tripwire配置中已经定义的目录和文件。 为了解决这个错误,我们需要编辑tripwire配置’twpol.txt’并重新签署tripwire配置。
..
现在使用下面的命令从tripwire生成日志错误。
sh -c "tripwire --check | grep Filename > no-directory.txt"
所有不存在于CentOS系统上的目录和文件都列在文件’no-directory.txt’中
cat no-directory.txt
等保2.0测评深入理解—Linux操作系统(十)
使用以下bash脚本编辑tripwire配置’twpol.txt’ - 在终端上运行此脚本。
for f in $(grep "Filename:" no-directory.txt | cut -f2 -d:); do sed -i "s|($f) |#\1|g" /etc/tripwire/twpol.txt;
done
等保2.0测评深入理解—Linux操作系统(十)
我们需要使用twadmin命令重新生成并重新签署tripwire配置,如下所示。
twadmin -m P /etc/tripwire/twpol.txt
输入您的“网站密钥”密码。
重新初始化tripwire数据库,并确保没有错误。
tripwire --init
重新初始化tripwire数据库,没有任何错误。

等保2.0测评深入理解—Linux操作系统(十)

1.3 验证Tripwire配置和检查系统
要验证tripwire配置,我们可以运行系统检查命令如下。
tripwire --check
你应该得到类似于以下的结果。
等保2.0测评深入理解—Linux操作系统(十)
所以这意味着在我们的系统上没有发现错误和系统违规。
现在我们将尝试在根目录下添加一个新文件,并使用tripwire再次检查。
转到/root目录并创建一个新文件'test.txt'或者删除一些文件。
现在使用tripwire命令再次检查系统。
您将在系统中得到严重程度为100的新违规的结果,如下所示。

等保2.0测评深入理解—Linux操作系统(十)

1.4 将新规则添加到Tripwire策略
Twpol.txt 文件是重要配置文件,定义了所有的检查策略
等保2.0测评深入理解—Linux操作系统(十)

tripwire所定义的文件类型

SEC_CRIT       = $(IgnoreNone)-SHa ;  
#这个是重要文件,是写死了的,不能被修改。
SEC_SUID       = $(IgnoreNone)-SHa ;  
#这个是设置SUID和SGID的二进制文件,例如/usr/sbin/里的文件。
SEC_BIN        = $(ReadOnly) ;       
# 普通二进制文件。
SEC_CONFIG    = $(Dynamic) ;        
# 经常进行读操作,写操作进行的少的文件。
SEC_LOG       = $(Growing) ;        
# 经常写的文件,但是属性一般固定,较多见于日志文件。
SEC_INVARIANT = +tpug ;             
# 很重要而且一定不能改变属性的文件
SIG_LOW       = 33 ;                 
# 安全等级为低级的文件
SIG_MED       = 66 ;                 
# 安全等级为中级的文件
SIG_HI         = 100 ;                
# 安全等级为高级的文件
这些文件的定义都是默认的,也可以根据自己需求进行定义。
某一条规则:
等保2.0测评深入理解—Linux操作系统(十)
策略解读:

(

  rulename = "Tripwire Binaries",  

#这是规则名称。

  severity = $(SIG_HI)            

#这里是安全级别。

)

{                              

#这一部分写的是具体策略。

  $(TWBIN)/siggen                   -> $(SEC_BIN) ; 

#下边是文件和对应的级别。

  $(TWBIN)/tripwire                  -> $(SEC_BIN) ;

  $(TWBIN)/twadmin                 -> $(SEC_BIN) ;

  $(TWBIN)/twprint                  -> $(SEC_BIN) ;

}
注意除了最后一个其余每个()内容后都有一个逗号。

在实际应用中,我们往往要添加新的策略来满足要求。可以通过修改twpol.txt文件来实现。需要定义规则名称,严重程度,也就是级别,要监控的目录和文件类型。在这里,我创建一个新的规则叫web,严重程度为100(SIG_HI),文件类型为 SEC_CRIT,即重要文件,不能被修改。

(

        rulename = "web",

        severity= $(SIG_HI)

)

{

        /var/www        ->$(SEC_CRIT);

}
等保2.0测评深入理解—Linux操作系统(十)
重新生成twpol.txt文件。
twadmin -m P /etc/tripwire/twpol.txt
重新初始化数据库
tripwire --init
在 /var/www/html 目录下创建1.html
等保2.0测评深入理解—Linux操作系统(十)
Tripwire检测后生成的报告放在/var/lib/tripwire/report 中,文件是加密的。如果要查看的话,需要用到Tripwire的解密工具:twprint,进入到/var/lib/tripwire/report 目录中,执行以下命令:
等保2.0测评深入理解—Linux操作系统(十)
twprint --print-report --twrfile  AY16-20221110-143654.twr > /root/test.txt
等保2.0测评深入理解—Linux操作系统(十)

八、数据保密性

a)应采用密码技术保证重要数据在传输过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等

针对于操作系统,数据保密性这里我们需要考虑的主要是鉴别数据。我们使用netstat -tuanp 查看监听端口中是否有telnet(一般没人这么干)等。 

Linux默认采用SSH 协议进行管理,传输过程中的保密性能得到保障。可以参考上文等保2.0测评深入理解—Linux操作系统(九)

b)应采用密码技术保证重要数据在存储过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等

Linux 口令存储在 /etc/shadow 文件中,我们查看该文件

等保2.0测评深入理解—Linux操作系统(十)
第二列:加密后的password字段,$6代表采用SHA-512($1代表MD5,$2代表SHA-256),$ASdUaZ2O代表盐,$OynRX1SkB···加盐后哈希值”;普通用户未设置密码时为!!,代表禁止登录
也可使用命令 passwd -S username 来查看当前用户使用哪种算法存储口令
等保2.0测评深入理解—Linux操作系统(十)

使用SHA512对密码进行存储时,实际上是将密码的哈希值存储在系统中。当用户输入密码时,系统会将输入的密码再次转换为哈希值,然后与存储的哈希值进行比较来验证密码的正确性。虽然SHA512算法本身是公开的,但通过使用哈希函数和“盐值”(salt)来增加密码的复杂性,可以提高密码的安全性"盐值"是在计算哈希值时与密码结合使用的随机值,它可以防止利用预先计算的哈希值进行彩虹表攻击。

SHA512算法是一种哈希算法,用于存储密码的哈希值。作为密码存储算法的一种实现,它被广泛用于将密码转换为安全的存储形式。
哈希算法本身并不直接属于密码算法。密码算法通常是指用于加密和解密数据的算法,如对称加密(AES、DES)、非对称加密(RSA、ECC)和散列算法(MD5、SHA1)。这些算法用于保护数据的机密性和完整性。
在密码学中,密码存储算法是一种用于存储用户密码的方式,其目标是保护用户密码的安全性。哈希算法在其中扮演了重要角色,通过将密码转换为哈希值来存储,以防止明文密码被泄露。
因此,尽管SHA512算法本身不是密码算法,但它是一种用于密码存储的安全哈希算法。通过合理的使用和管理(如添加“盐值”),可以增加密码的安全性,从而达到一定程度上的保密性。

原文始发于微信公众号(等保不好做啊):等保2.0测评深入理解—Linux操作系统(十)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月15日19:57:33
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   等保2.0测评深入理解—Linux操作系统(十)https://cn-sec.com/archives/2172642.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息