如何保护Raspberry Pi?


82

数以万计的Raspberry Pi连接到互联网最终将吸引一些人的兴趣,这些人希望对小型计算机做一些不好的事情,特别是当许多人使用他们的Pi来做网络服务器时。Linux是开箱即用的可靠操作系统,但除了更改密码之外,如果我打算在设备上托管面向Internet的服务,还应该怎么做才能“加固” Raspberry Pi?

仅仅为了支持我的“成千上万”的玩笑,Eben Upton表示:“ Raspberry Pi已售出200,000多个基本计算机模块,目前每天出货4,000台”。可以安全地假设其中200,000个中的成千上万个已连接到Internet。假设连接互联网的Raspberry Pis中有成千上万的人正在托管面向公众的Web服务是不太安全的,但是黑客热情仍然存在。


3
请记住,尽管可能有“成千上万”的连接,但是(目前)有3个独立的Linux发行版(我知道),而且我认为甚至还有一些非基于Linux的项目。这影响了黑客的观点。不过,如果安全性很重要,请保持发行版的更新,并在必要时将设备保留在防火墙后面。
RLH 2012年

切入点RLH我将在该问题上添加一些其他信息,以支持野外Raspberry Pi的数量,以更好地了解他在回答中提到的Raspberry Pi的攻击面。
Dan B

@DanB攻击面不是Pi数量的函数,而是可用于攻击的系统和服务的数量。zh.wikipedia.org/wiki/Attack_surface
史蒂夫·罗比拉德

@SteveRobillard对不起,如果我在评论中不清楚,但是在我对问题进行的编辑中,我试图以定性的方式归结为托管面向公众的服务的Pi的数量,因此会提出可供攻击的服务。
Dan B

我发现了一个简短的教程,讲解如何在使用SSH时保护树莓派的安全。->教程
多米尼克

Answers:


54

保护计算机安全不是一个简单的过程,整本书都围绕该主题编写。Pi的大小不会减少对潜在攻击者的安全威胁或攻击面。因此,我将描述涉及的步骤,并提供指向更详细的说明和教程的链接。

由于您没有提到正在使用的发行版,因此我假设使用推荐的Raspbian发行版。

  1. 更改默认密码。Raspbian发行版将此选项作为初始启动脚本中的一个选项。如果尚未执行此操作,则可以使用passwd命令进行更改。确保选择一个强密码
  2. 禁用未使用的服务我看到推荐的Raspbian发行版包括Apache Web服务器,并在启动时启用了它(有人可以确认这一点)。您真的需要运行Web服务器吗?如果没有禁用它。如果您确实需要运行Apache,请确保将其安全,并对其他服务(例如FTP,NGINX,MySQL等)也进行同样的操作,那么Google搜索应该会打开一些资源。
  3. 安装和配置iptables
  4. 使您的系统保持最新。您可以使用croncron-apt将其自动化。
  5. 配置日志记录以监视登录和失败的登录尝试。如果可能,请使用外部硬盘驱动器来托管/ var分区,这将为您提供更多空间,避免日志文件填满SD卡并延长SD卡的使用寿命。

您可能需要考虑的一些其他事项:

您还应该阅读此相关问题,在将其连接到Internet(尤其是在公共IP地址上)之前,如何防止入侵和恶意软件?

这只是保护Pi的最低限度的步骤。有关更多信息,您可能需要阅读《安全Debian手册》


6
确保生成您自己的ssh密钥。我认为其中一些图像已经有键。
约翰·拉鲁伊

2
默认情况下,未在raspbian中安装Apache(用户安装了类似php5-mysql IIRC之类的东西)。对于比裸iptables更友好的数据包过滤器,也许我们应该推荐ufw,甚至是GUI前端gufw?
elmicha

1
即使您在路由器后面,安装iptables也有意义吗?
凯基

2
@ otakun85是的,它被称为深度防御。如果完全依赖您的路由器,那么有人应该越过拥有iptables并运行的路由器,这会使进一步的利用变得更加困难。
史蒂夫·罗比拉德

2
禁用未使用的服务还有助于缩短启动时间,并节省(少量)的内存和CPU。
TomG 2015年

11

看完RPi后,只要您做几件事,它似乎是一种相当安全的设备。

默认的用户/通行证需求已更改。至少要更改密码。为了再次提高安全性,请同时更改用户名。(添加一个新用户,然后禁用PI。请检查ROOT是否也通过SSH登录禁用,尽管我仍然认为默认情况下是这样。)

扫描RPi只会返回一个开放端口22(即SSH连接),即使在显示之前,也必须将其打开(尽管我希望大多数人会使用它而不是显示器,键盘和鼠标,尤其是在{web}服务器)

您可以更改SSH端口号,但这不会做太多,因为可以对端口进行足够容易的扫描。而是启用SSH密钥身份验证。

现在,如果没有正确的SSH密钥,用户名和密码,任何人都无法进入您的计算机。

接下来,设置您的网络服务器。Apache几乎就是它的所在。它将坐下来并默认监视端口80,并自动响应浏览器的连接并为您的网页提供服务。

如果您有防火墙或路由器,则可以更改RPi端口,并使路由器将流量从一个端口定向到另一个端口。例如,进入路由器的端口80流量重定向到RPi上的端口75,而SSH 22上的SSH重定向到端口72。这将增加另一层保护,但是稍微复杂一点。

显然,请保持所有内容的更新和修补。

这不会保护您免受可能在以后添加的利用Java,Flash,SQL Server等的攻击,但这实际上只是基础知识。

您还可以添加防火墙,如果安装了新服务的人进入系统,它们进入其他端口的速度将减慢。您的路由器应该对此进行处理,但是如果直接连接路由器,则进行设置,并且花费多长时间,无论如何都要运行它-它不会增加系统资源。

您可能要添加的另一件事是fail2ban(http://www.fail2ban.org/wiki/index.php/Main_Page),它添加了防火墙规则来阻止多次登录尝试,从而防止字典攻击。如果按照上述步骤进行操作,这些命令将无法在您的系统上运行,但是如果出于某种原因您只需要保留SSH身份验证密码(例如,从许多不同的计算机进行远程登录),则可以防止字典攻击从工作。在指定尝试次数之后,它将阻止该IP地址再进行一次尝试。(请注意不要看到任何路由器/本地IP地址,并禁止太早或太长时间禁止!)

编辑添加:一切都设置好后,请使用dd或Win32DiskImager之类的工具对SD卡进行完整的按位备份。这样,如果出现任何问题,您可以将其还原到同一张卡或将其写入新卡,然后继续进行。(但是,如果遭到黑客入侵,您可能想找出所发现的漏洞并可能首先将其关闭!)


1
您能否解释一下如何更改路由器上的RPi端口来增加另一层保护?
Andrei


-1

除了强化操作系统之外,您还可以考虑使用基于云的安全监视服务来监视设备上/设备上的活动,并在检测到任何不良情况时接收警报。如今,有几种基于云的SIEM工具可用,有些(如siemless)运行免费增值模式,因此家庭用户不必花一分钱。要使用这种服务,您需要熟悉rsyslog / syslog之类的东西,这是所有Linux OS发行版的标准部分。


1
云工具增加了攻击面,本地安全监控(logwarn / check)是很好的工具,但是这个答案是不完整的,更多是评论。
user1133275 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.