仅仅为了支持我的“成千上万”的玩笑,Eben Upton表示:“ Raspberry Pi已经售出了200,000多个基本计算机模块,目前每天出货4,000台”。可以安全地假设其中200,000个中的成千上万个已连接到Internet。假设数以万计的这些Internet连接的Raspberry Pi正在托管面向公众的Web服务是不太安全的,但是黑客热情仍然存在。
#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=Raspbian
和origin=Raspberry Pi Foundation
的配置文件中,但我不这样做不知道如何准确地验证设置。起源(似乎需要手动调整)太糟糕了。还请考虑:
设置
mailx
并取消对Unattended-Upgrade::Mail
和Unattended-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
评论
请记住,尽管可能有“成千上万”的连接,但是(目前)有3个独立的Linux发行版(我知道),而且我认为甚至还有一些非基于Linux的项目。这影响了黑客的观点。尽管如此,如果安全性很重要,请保持发行版的更新,并在必要时将设备保留在防火墙后面。RLH好点了,我将在问题中添加一些其他信息,以支持野外Raspberry Pi的数量,以更好地了解Steve在其回答中提到的Raspberry Pi的攻击面。
@DanB攻击面不是Pi数量的函数,而是可用于攻击的系统和服务的数量。 zh.wikipedia.org/wiki/Attack_surface
@SteveRobillard对不起,如果我在评论中不清楚,但是在我对问题进行的编辑中,我试图以定性的方式归结为托管面向公众的服务的Pi的数量,因此会提出可供攻击的服务。
我发现了一个简短的教程,讲解如何在使用SSH时保护树莓派,这看起来很简洁。 ->教程