标签 签名 下的文章

漏洞赏金计划吸引了更多道德黑客,但有 2/3 是为了好玩

漏洞赏金计划的目标是为道德黑客提供一种手段,在网络犯罪分子利用这些漏洞之前发现并披露这些漏洞。漏洞赏金平台 HackerOne 的《2021 年黑客报告》显示,发现安全漏洞并提交给漏洞赏金项目的道德黑客数量在去年增加了近三分之二。仅在去年,道德黑客就通过向 HackerOne 漏洞赏金计划披露漏洞获得了 4000 万美元的收入,而 2019 年则为 1900 万美元。

虽然发现漏洞在道德黑客行为中起到的经济激励作用:76% 接受调查的人表示他们是为了赚钱,但 85% 参与漏洞赏金计划的人表示他们是为了学习,而三分之二的人是为了好玩。

Linux 基金会推出 sigstore 软件真实性验证服务

这项服务使得软件开发者能够轻松地对各种软件工件进行签名,比如发行文件、容器镜像以及二进制文件。通过将签名材料存储在防篡改的公共日志中,Linux 基金会希望 sigstore 签名服务能够在开源软件开发领域普及开来。

此前很少有开源项目使用加密签名手段,主要原因是软件维护人员在密钥管理、撤销和公钥分配等工作方面遇到了一定的挑战。通常他们将公钥存储在易受黑客攻击的网站上,甚至放置在公共 git 存储库的 README 文件中。但随着 sigstore 公共服务的推出,我们可以使用临时密钥和信任根来规避上述问题(后者源于开放且可审核的公共透明日志)。

公钥是需要公开的,但是确保公开的公钥是可信的才是安全和信任的基石,这项服务可以有效而便捷地为开源软件分发提供安全保障。

世界上最强大的超算“富岳”即将全面投入运行

经过 7 年研制,世界上最快的超级计算机“富岳”在日本正式建成,现在已经可以供研究人员开始使用。其交付工作已于 2020 年 5 月完成,其后一直在对其进行试用。目前,该计算机已全面开放共享使用,日本信息科学与技术研究机构已选定 74 个研究项目,将于下月起实施。

“富岳”已经连续两届蝉联 Top500 榜首,其性能为 442 petaflops,遥遥领先于竞争对手,是榜单上第二名 IBM 的 Summit 的 3 倍,后者的性能为 148.8 petaflops。

超算竞赛极大的推高了计算力对世界的影响,在重要领域极有价值。不过,更重要的是,研发出来的超算能有合适的应用发挥其能力。

当你从网上下载一个文件后(比如:安装程序、ISO镜像或者一个压缩包),文件可能在不同的情况下发生了损坏,比如:由于线路传输错误、中断的下载、存储硬件错误、文件系统错误等等。除了这些错误,文件还可能在下载前或者下载中的攻击而被有意地篡改了。比如,一个攻破证书颁发机构的攻击者可以实施一个MITM攻击(中间人攻击),欺骗你从HTTPS网站上下载隐藏恶意软件的文件。

要保护你自己免受这些问题的困扰,建议你去验证从网上下载的文件的可靠性和完整性。特别是你下载了一个非常敏感的文件的时候)(比如:操作系统镜像、二进制应用程序、可执行安装包等等),盲目地相信下载的文件不是一个好习惯。

一个快速和简单地验证下载文件的完整性的方法是使用不同的校验工具(比如:md5sum、sha356sum、cksum)来计算和比较校验码(比如:MD5、SHA、CRC)。然而,然而校验容易受到碰撞攻击,而且同样不能用于验证文件的可靠性(比如:拥有者)。

如果你想要同时验证下载文件的可靠性(拥有者)和完整性(内容),你需要依赖于加密签名。本教程中,我会描述如何使用GnuPG(GNU Privacy Guard)来检查文件的可靠性和完整性。

本例中我会验证一个从 https://onionshare.org 上下载的磁盘镜像。这个网站中,发行商会提供他们的公钥,还有它用于密钥验证的指纹。

至于下载的文件,发行商也会提供它相关的PGP签名。

安装 GnuPG 并且生成一个键对

让我们首先在你的Linux系统上安装GnuPG。

在Debian、Ubuntu和其他Debian衍生版上:

$ sudo apt-get install gnupg 

在Fedora、CentOS或者RHEL上:

$ sudo yum install gnupg

完成安装后,生成一个本篇中会使用到的键对。

$ gpg --gen-key 

在生成键对期间,你会被要求提供你的姓名和email,还有保护你私钥的密码。你同样也可以选择键对何时过期(默认不会过期)。依赖于你选择的key的大小(在1024和4096位之间),key生成会花上几分钟或者更多,同时它要求收集来自你桌面活动的大量的随机数据。(比如键盘输入、鼠标移动、磁盘访问等等,所以这个时候随便动动鼠标键盘什么的)。

一旦key生成完毕后,公钥和私钥会存储在~/.gnupg目录。

与某个文件和拥有者建立信任

验证下载文件的第一步是与任何提供文件下载的人建立信任。出于此,我们下载了这个文件的公钥,并且验证公钥的拥有者是否是他或者她自称的。

在下载完文件拥有者的公钥后:

$ wget https://onionshare.org/signing-key.asc 

使用gpg命令导入公钥到你的keyring中

$ gpg --import signing-key.asc 

一旦拥有者的公钥导入后,他会像下面那样打印出一个key ID(比如:"EBA34B1C")。记住这个key ID。

现在,运行下面的命令检查导入的公钥的指纹:

$ gpg --fingerprint EBA34B1C 

你会看到key的指纹字符串。把这个和网站上显示的指纹做对比。如果匹配,你可以选择信任这个文件拥有者的公钥。

一旦你决定相信这个公钥,你可以通过编辑key来设置信任级别:

$ gpg --edit-key EBA34B1C

这个命令会显示GPG提示符:

在GPG提示符中输入“trust”,它会让你从1-5之间选择这个key的信任等级。

本例中,我决定分配给它“4”,在这之后,输入“sign”用你自己的私钥签名,接着输入在GPG提示符中输入“save”来完成操作。

要注意的是不需要这样明确地给一个公钥指派信任,通过key的导入隐式地信任往往就够了。

给一个key隐式地分配给“完全”的信任就是任何其他由这个完全信任签名的key X都会被认为是对你有效的。通常上,key验证依赖于一个称之为“信任网”的复杂机制。

回到教程,现在让我们检查导入的key列表。

 $ gpg --list-keys 

你至少会看到两个key:一个带 depth 0和终极信任("1u"),这就是你自己的key,另外一个带depth 1和完全信任("1f"),这是你之前签名的key。

验证文件的可靠性/完整性

一旦你建立了与文件拥有者和他的/她的公钥之间的信任关系,我们需要验证你从拥有者那边下载的文件的可靠性和完整性了。

本例中,文件拥有者分别公布了一个文件和它相关的PGP签名(.asc)。签名所起的作用就是认证(文件)并且在其中加入一个时间戳。

一个典型的签名(*.asc)看上去像这样。

-----BEGIN PGP SIGNATURE-----

iQIcBAABCgAGBQJUJGhsAAoJEP1yCtnro0sc1jUP/ixNY/lKdrcMIAUoqlWKNE8f
sj4SFiwREMew76w66GASDF03fa5zPX6EsS2kucgx8ZsfEiSmN5T0y2P/aSaXwZqF
kywZVEzirKtca5AJ4DBzu6qrt9GgSw6JBJVv1oBJCMNyO+eAj341paR3MudvnyQz
H/N5tc4Qcilzy6M184opGIzy4ipEmMXfLHsd7WJpAyn+tO/z3uhh9NkNuygZpaFr
olpSWPE8revdDJyfMfSmb3ZrFmhLn7FCEltOi+a7SluvrMclizfnbec9rgLJtjo0
CPDZY7tsWmmL0DA3VvpMVqGvkg/Dyhpn2IIDrNaLAlvGQ5aovf+4tjad5IHvyaWx
4Gds93G6Hqvv5RwGx7OR3hgt2o0Y+qFsVDxVnPxerGhXeJXHzSDwLQMpdj9IoSU
Ae/53XXnxqSN6POZcwHiHvbsv0pdlg0Ea0dDAAN0ZeINNyZf1R0tLjWkcgpvGCtv
qkJuYFF9W9cWHraPY2ov5Hs/JZzPcG0eVpnDdzfOOH1gDKADq9A5D2X5QJCulsh9
WwU3X+E43OqIsoRzBucItD9HhZbEH7t8Q0xAqnAkgU3hriZp3dN4cnMfhM6I9hli
EmpSpLKCceMexu2o9QgzGXVm+AGZJe4QkuwAhRIccp5JDMVny61UlKTasjy6co8h
5GBhhYybPEFM+G1BODMd
=c9wo
-----END PGP SIGNATURE-----

现在让我们同时下载它的文件和签名:

$ wget https://onionshare.org/files/0.6/OnionShare.dmg
$ wget https://onionshare.org/files/0.6/OnionShare.dmg.asc

现在验证下载文件的PGP签名。

$ gpg --verify OnionShare.dmg.asc OnionShare.dmg 

如果命令的输出包含了“Good signature from <文件所属者>”,那么下载的.dmg文件就被成功地认证和核实了。如果下载的文件的任何地方在签名后被篡改了,那么验证就会失败。

这时你就可以放心地信任你下载的文件了。


via: http://xmodulo.com/verify-authenticity-integrity-downloaded-file.html

作者:Dan Nanni 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

问题:每当Apache2网站服务器返回错误页时(如,404 页面无法找到,403 禁止访问页面),它会在页面底部显示网站服务器签名(如,Apache版本号和操作系统信息)。同时,当Apache2网站服务器为PHP页面服务时,它也会显示PHP的版本信息。我如何在Apache2网站服务器上关闭这些网站服务器签名呢?

透露网站服务器带有服务器/PHP版本信息的签名会带来安全隐患,因为你基本上将你系统上的已知漏洞告诉给了攻击者。因此,作为服务器加固的一个部分,强烈推荐你禁用所有网站服务器签名。

禁用Apache网站服务器签名

禁用Apache网站服务器签名可以通过编辑Apache配置文件来实现。

在Debian,Ubunt或者Linux Mint上:

$ sudo vi /etc/apache2/apache2.conf

在CentOS,Fedora,RHEL或者Arch Linux上:

$ sudo vi /etc/httpd/conf/httpd.conf

将下面两行添加到Apache配置文件底部。

ServerSignature Off

ServerTokens Prod

然后重启网站服务器以使修改生效:

$ sudo service apache2 restart (Debian, Ubuntu or Linux Mint)
$ sudo service httpd restart (CentOS/RHEL 6)
$ sudo systemctl restart httpd.service (Fedora, CentOS/RHEL 7, Arch Linux)

第一行‘ServerSignature Off’使得Apache2网站服务器在所有错误页面上隐藏Apache版本信息。

然而,若没有第二行的‘ServerTokens Prod’,Apache服务器将仍然在HTTP回应头部包含详细的服务器标记,这会泄漏Apache的版本号。

第二行‘ServerTokens Prod’所要做的是在HTTP响应头中将服务器标记压缩到最小。

因此,同时放置两行时,Apache将不会在页面中或者HTTP响应头中泄漏版本信息。

隐藏PHP版本

另外一个潜在的安全威胁是HTTP响应头中的PHP版本信息泄漏。默认情况下,Apache网站服务器通过HTTP响应头中的“X-Powered-By”字段包含有PHP版本信息。如果你想要在HTTP头部中隐藏PHP版本,请使用文本编辑器打开php.ini文件,找到“expose\_php = On”这一行,将它改为“expose\_php = Off”即可。

在Debian,Ubunt或者Linux Mint上:

$ sudo vi /etc/php5/apache2/php.ini

在CentOS,Fedora,RHEL或者Arch Linux上:

$ sudo vi /etc/php.ini
expose\_php = Off

最后,重启Apache2网站服务器来重新加载已更新的PHP配置文件。

现在,你不会再看到带有“X-Powered-By”字段的HTTP响应头了。


via: http://ask.xmodulo.com/turn-off-server-signature-apache-web-server.html

译者:GOLinux 校对:Caroline

本文由 LCTT 原创翻译,Linux中国 荣誉推出