我正在编写一个网页监控程序,该程序每小时使用 Selenium 登录一个网站,并在页面以特定方式发生更改时通知我。例如,该程序可以监控我的手机数据使用情况,并在我的使用量激增时向我发出警告。但是,我担心我的明文密码仅位于永久连接到互联网的计算机上。
问:自动化定期网站登录的可靠方法是什么?
我考虑了以下预防措施,按照偏执程度的顺序排列:
“强化”Linux 发行版——关闭 ping 响应、CUPS、Java、SSH、Samba 和其他未使用的服务。
对磁盘上的密码进行加密,并将密钥硬编码到程序中(例如,使用 XOR 稍微混淆密码)。
密码仅存储在RAM中;也就是启动程序时输入密码。 (所以程序一直在运行;不能使用
cron
)当程序未运行时,使用
ifdown
和关闭计算机的网络ifup
。使用定时电源插座 - 每小时一次 - 给机器物理通电,让它运行几分钟,然后关闭它(例如,使用这个Art控制器继电器板)。
(顺便说一句,我有一个使用 Python 和 pyvirtualdisplay 在 Raspberry Pi 上运行的基本程序,如上所述这里,我正在使用 Selenium,因为一些感兴趣的网站需要 JavaScript。)
答案1
安全是一种权衡。举一个极端的例子,关闭、断开连接并封装在混凝土块中的系统非常安全,但完全无用。通过分析违规发生的可能性以及成本,您可以决定愿意为哪些安全措施付费(降低可用性、实际花费的美元等)。
由于这显然是一台专用于该任务的机器,所以我个人只是将其粘贴在一个文本文件中(或者,仅存储在内存中的是这些更有价值的密码,例如银行帐户)并执行步骤 1 [您几乎总是应该这样做;关闭未使用的服务基本上是免费的]。
如果可以驱动一个以不同用户身份运行的网络浏览器,我会这样做——网络浏览器有一个巨大的攻击面。当然,请确保应用浏览器安全更新。
顺便说一句:您错过了一些强化步骤,例如iptables
.此外,在我看来,关闭 ICMP echo 并不能真正为您提供任何安全性,反而会使网络故障排除变得烦人。 (防火墙后面任何能够 ping 到它的东西也可以执行 ARP ping,它必须响应该 ARP ping 才能使以太网正常工作。或者任何数量的其他协议 ping 来查看它是否正常工作。)