Security

unbound之DNSSEC缓存服务器作弊条

| Security | #unbound | #DNSSEC | #DNS | #security | #sysadmin | #tutorial

DNSSEC 是一种验证域名信息真实性的协议扩展。个人之前一直觉得这事相当的蛋疼:DNS协议本身是不安全的,而DNSSEC无非是增加了数字签名验证,而这验证还依赖于相当复杂的密钥更新和分发机制,这一切都给它的推广带来了困难。

阅读全文…( 本文约 1060 字,阅读大致需要 3 分钟 )

配合sudo使用 Google Authenticator

📜 历史文件已不具备现实意义

基于 TOTP 的做法不易备份,此外无法防止钓鱼。新部署时应考虑 FIDO 2 等更为现代化的解决方案。

Google Authenticator 是一个 TOTP(基于时间的一次性口令)实现,它采用了 RFC 4226 算法。

阅读全文…( 本文约 629 字,阅读大致需要 2 分钟 )

W^X (可写与可执行互斥)

Von Neumann体系结构的计算机系统的一项特点是使用内存来保存程序和数据。这种设计减少了制造计算机的成本,但是也带来了一个弱点:因为事实上程序也是一种数据,如果这些"数据"在运行时可写,程序便有可能修改其本身,而如果这一特性被误用,例如由于程序本身的设计缺陷,攻击者便可以利用它来执行攻击者希望的任何事情。

阅读全文…( 本文约 685 字,阅读大致需要 2 分钟 )

备忘:OpenSSL valgrind报"Conditional jump or move depends on uninitialised value(s)"的解决

最近改一个用到 OpenSSL 的程序,顺手用 valgrind 抓了一下,发现很多「Conditional jump or move depends on uninitialised value(s)」的错误。发现 OpenSSL 的 FAQ 提到,在生成随机数时会将输入缓冲区(未初始化)的内容直接混入 entropy pool,使用 valgrind 时便会导致警告。

阅读全文…( 本文约 396 字,阅读大致需要 1 分钟 )

廉价GPU时代的密码策略

很久以前我曾经建议过别人使用足够长的一大串英文单词作为密码,现时这样做已经完全不能保障安全了。

Colin Percival最近在 一篇文章 中提到了这样的数据:使用价值 $10k 的 GPU 破解使用MD5的34位英文密码(例如"You will never guess this password")所需要的时间仅为两小时(如果使用专用的硬件,以$1M投资的ASIC可以在一秒之内完成破解)。如果密码长度不够长的话,采用了特殊符号的帮助也不大。足够复杂的8位密码,例如"6,uh3y[a"使用 $10k 的 GPU 破解只需10个小时。

阅读全文…( 本文约 457 字,阅读大致需要 1 分钟 )

BIND安全漏洞 CVE-2011-1910

这次休假前头一天晚上收到了 ISC 发来的安全公告 CVE-2011-1910。我起草完 FreeBSD 安全公告 FreeBSD-SA-11:02.bind.asc 之后就去休假了,这里补上这个漏洞的说明。

无论你是否使用 DNSsec,只要用 BIND 9.x 来做 DNS 缓存解析服务(而不仅仅做Authoritive DNS服务),就有可能受到这个漏洞的影响。而攻击的方法也相当简单,攻击者只要建立一个 DNS 域,令在回应域名不存在的同时发回一个大的 RRSIG RRset,即可触发 BIND 的某处断言令其退出。

阅读全文…( 本文约 294 字,阅读大致需要 1 分钟 )

奇怪的钓鱼信

今天收到一封奇怪的钓鱼信,它声称来自 Domain Registration of America,准确地说出了我的名字和拥有的域名中的两个,并建议我立即把域名转移到他们那里。

开价是……一年$30。

阅读全文…( 本文约 350 字,阅读大致需要 1 分钟 )

tarsnap修正了一个重大安全漏洞

今天 Colin 在blog上介绍说 他刚刚修正了一个 TarSnap 重大安全漏洞。简单地说,用来加密密钥文件的AES-CTR实现时,计数器没有增加(正确的实现中计数器应该每次递增),导致在已知明文时能够通过加密块推算出一块数据使用的密钥,并用它来解密余下的数据。

阅读全文…( 本文约 272 字,阅读大致需要 1 分钟 )

在服务器上用gpg-agent

上回书说到通道服务器的问题。在 /etc/csh.cshrc 中添加下列内容,可令系统同时启动 gpg-agentssh-agent

1
2
3
4
5
6
7
setenv SSH_AUTH_SOCK    /dev/null/nonexistent
if ("${TERM}" != "su") then
        [ -e ~/.gpg-agent.csh ] && source ~/.gpg-agent.csh >& /dev/null
        echo UPDATESTARTUPTTY | /usr/local/bin/gpg-connect-agent >& /dev/null || /usr/local/bin/gpg-agent --daemon --ignore-cache-for-signing >& ~/.gpg-agent.csh && source ~/.gpg-agent.csh >& /dev/null
        [ -e ~/.ssh-agent.csh ] && source ~/.ssh-agent.csh >& /dev/null
        [ -e ${SSH_AUTH_SOCK} ] || ssh-agent -c -t 20m >& ~/.ssh-agent.csh && source ~/.ssh-agent.csh >& /dev/null
endif

启动 gpg-agent 的作用是在一段时间内不用重新输入 gpg 的密码。

阅读全文…( 本文约 412 字,阅读大致需要 1 分钟 )

为什么在酒店要拨VPN回家/公司而不是直接访问Internet?

这其实是一个很严肃的话题。

我在酒店或者提供免费wireless访问的地方一般都会拨VPN回家/公司,然后通过那里的路由访问Internet。这个习惯不能完全消除运营商进行的攻击,但能减少能够实施这种攻击的人的范围。

阅读全文…( 本文约 568 字,阅读大致需要 2 分钟 )