Linux软件安装(6)之检验软件正确性

Linux软件安装(6)之检验软件正确性

微信搜索 zze_coding 或扫描 👉 二维码关注我的微信公众号获取更多资源推送:

前面提到很多升级与安装需要注意的事项,因为我们需要克服很多的程序漏洞,所以需要前往 Linux distribution 或者是某些软件开发商的网站,下载最新并且较安全的软件文件来安装才行。好了,那么有没有可能我们下载的文件本身就有问题?是可能的!因为 cracker 无所不在,很多的软件开发商已经公布过他们的网页所放置的文件曾经被窜改过!那怎么办?连下载原版的数据都可能有问题了?难道没有办法判断文件的正确性吗?
这个时候我们就要通过每个文件独特的指纹验证数据了!因为每个文件的内容与文件大小都不相同,所以如果一个文件被修改之后,必然会有部分的信息不一样!利用这个特性,我们可以使用 MD5/sha1 或更严密的 sha256 等指纹验证机制来判断该文件有没有被更动过!举个例子来说,在每个 CentOS 7.x 原版光盘的下载点都会有提供几个特别的文件,你可以先到下面的链接看看:

仔细看,上述 URL 里面除了有所有光盘的下载点之外,还有提供刚刚说到的 md5、sha1、sha256 等指纹验证机制!透过这个编码的比对,我们就可以知道下载的文件是否有问题。那么万一 CentOS 提供的光盘映象文件被下载之后,让有心人士偷偷修改过,再转到 Internet 上面流传, 那么你下载的这个文件偏偏不是原厂提供的,你能保证该文件的内容完全没有问题吗?当然不能对不对?是的,这个时候就有 md5sum, sha1sum, sha256sum 各文件指纹的出现了~下面说说他的用法吧。

md5sum / shalsum / sha256sum

目前有多种机制可以计算文件的指纹码,我们选择使用较为广泛的 MD5、SHA1 或 SHA256 加密机制来处理,例如上面链接中 CentOS 7.x 的相关指纹确认。对于这几个类型的加密机制 Linux 也提供了相应的命令,分别为 md5sumsha1sumsha256sum。使用也非常简单,以 md5sum 为例,要获取一个文件的 MD5 校验码,只需要执行 md5sum filename
下面我们来试着使用以下,因 CentOS 7 的 ISO 文件实在太大了,下载来确认实在很浪费带宽。所以我们拿前一个小节谈到的 NTP 软件来检查看看好了。这次我们下载的 NTP 软件版本为 4.2.8p13 这一版,在官网下载页面提供的 MD5 数据为:

ea040ab9b4ca656b5229b89d6b822f13  ntp-4.2.8p13.tar.gz

如何确认我们下载的文件是正确没问题的呢?这样处理一下:

[root@localhost test]# md5sum ntp-4.2.8p13.tar.gz 
ea040ab9b4ca656b5229b89d6b822f13  ntp-4.2.8p13.tar.gz

看!显示的字符串是否与上面相同呢?赶紧测试看看!
一般而言,每个系统里面的文件内容大概都不相同,如你的系统中的 /etc/passwd 这个登入信息文件与我的一定不一样,因为我们的用户与密码、Shell 及家目录等大概都不相同,所以由 md5sum 这个文件指纹分析程序所自行计算出来的指纹当然就不相同!
好了,那么如何应用这个东西呢?你可以在你的Linux 系统上为你的这些重要的文件进行指纹数据库的建立(好像在做户口调查!),例如将下面这些文件建立指纹数据库:

  • /etc/passwd
  • /etc/shadow (假如你不让用户改密码了);
  • /etc/group
  • /usr/bin/passwd
  • /sbin/rpcbind
  • /bin/login (这个也很容易被骇! );
  • /bin/ls
  • /bin/ps
  • /bin/top

这几个文件最容易被修改了!因为很多木马程序执行的时候,还是会有所谓的执行序, PID 为了怕被 root 追查出来,所以他们都会修改这些检查进程的文件,如果你可以替这些文件建立指纹数据库(就是使用 md5sum 检查一次,将该文件指纹记录下来,然后常常以 shell script 的方式由程序自行来检查指纹表是否不同了),那么对于文件系统会比较安全啦!

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://www.zze.xyz/archives/linux-software-install6.html

Buy me a cup of coffee ☕.