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

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

评论

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

RLH好点了,我将在问题中添加一些其他信息,以支持野外Raspberry Pi的数量,以更好地了解Steve在其回答中提到的Raspberry Pi的攻击面。
@DanB攻击面不是Pi数量的函数,而是可用于攻击的系统和服务的数量。 zh.wikipedia.org/wiki/Attack_surface

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

我发现了一个简短的教程,讲解如何在使用SSH时保护树莓派,这看起来很简洁。 ->教程

#1 楼

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

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


更改默认密码。 Raspbian发行版将此选项作为初始启动脚本中的一个选项。如果尚未执行此操作,则可以使用passwd命令进行更改。确保选择一个强密码。

禁用未使用的服务。我看到推荐的Raspbian发行版包括Apache Web服务器,并在启动时启用了它(有人可以确认这一点)。您真的需要运行Web服务器吗?如果没有禁用它。如果您确实需要运行Apache,请确保将其安全,并对其他服务(例如FTP,NGINX,MySQL等)也进行同样的操作,那么Google搜索应该会打开一些资源。
安装和配置iptables。
使系统保持最新状态。您可以使用cron或cron-apt将其自动化。

配置日志记录以监视登录和失败的登录尝试。如果可能,请使用外部硬盘驱动器来托管/ var分区,这将为您提供更多空间,避免日志文件填满SD卡并延长SD卡的使用寿命。

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


安装病毒防护。
设置和配置SELinux。

您还应该阅读以下相关问题:在将其连接到Internet(尤其是在公共IP地址上)之前,如何保护其免受入侵和恶意软件的侵害? 。有关更多信息,您可能需要阅读《安全Debian手册》。

评论


确保生成您自己的ssh密钥。我认为某些图像中已经有键。

– John La Rooy
2012年7月24日在22:33

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

– elmicha
2012年7月26日在22:26

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

–keiki
2012年7月27日在6:16

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

–史蒂夫·罗比拉德(Steve Robillard)
2012年7月27日在6:20

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

– TomG
2015年2月5日在22:30

#2 楼

看完RPi之后,只要您做几件事,它就好像是一个相当安全的设备。

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

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

您可以更改SSH端口号,但这不会做太多,因为可以很容易地对其进行端口扫描。相反,请启用SSH密钥身份验证。

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

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

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

显然,请确保所有内容都已更新和打补丁。真的。

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

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

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

评论


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

– Andrei
16年7月3日在20:39



#3 楼

linode有一个保护Linux服务器安全的极好的指南:http://library.linode.com/securing-your-server。相同的规则可以应用于树莓派

#4 楼

几个张贴者提到了使Pi保持最新状态的重要性,但是我发现的大多数资源只是建议不时手动运行apt-get,这似乎是一种糟糕的方法。我更希望自动安装安全更新。

Debian unattended-upgrades软件包应该支持此功能,但是(在Raspbian上)设置有点麻烦。


您需要运行sudo dpkg-reconfigure -plow unattended-upgrades来实际安排更新cronjob
您可能需要为Raspbian添加origin=条目-一些帖子建议将自定义条目添加到origin=Raspbianorigin=Raspberry Pi Foundation的配置文件中,但我不这样做不知道如何准确地验证设置。起源(似乎需要手动调整)太糟糕了。
还请考虑:


设置mailx并取消对Unattended-Upgrade::MailUnattended-Upgrade::MailOnlyOnError的注释以获取有关更新的通知

Unattended-Upgrade::MinimalSteps似乎也是个好主意



运行sudo unattended-upgrade -d --dry-run可以看到它会做什么(尽管它并没有提供太多信息,因为它不会报告任何更新)最近更新的系统)。

#5 楼

您也可以考虑使用Lynis。它会扫描系统中的漏洞,并提供建议以提高Pi的安全性。它甚至为您提供有关Pi的安全性的安全评分。要安装它,请使用:

sudo apt install lynis

已过时,请先使用

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C80E383C3DE9F082E01391A0366C67DE91CA5D5F

然后再添加存储库


sudo apt install apt-transport-https

来更新lynis。和

echo "deb https://packages.cisofy.com/community/lynis/deb/ stable main" | sudo tee /etc/apt/sources.list.d/cisofy-lynis.list


最后,执行sudo apt update以更新lynis

我知道这是一个旧帖子,但我想对其进行补充。 br />希望有帮助:)

#6 楼

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

评论


云工具增加了攻击面,本地安全监视(logwarn / check)是很好的工具,但是这个答案是不完整的,更多是评论。

–user1133275
15年5月28日在15:50