当前位置: 首页 > news >正文

树莓派超全系列教程文档--(24)本地化设置、SSH及配置防火墙

本地化设置、SSH及配置防火墙

    • 本地化您的 Raspberry Pi
    • 保护您的树莓派
      • 更改用户密码
      • 更新树莓派操作系统
      • 自动更新 SSH 服务器
      • 提高SSH安全性
        • 启用和禁用 SSH 用户
      • 安装防火墙
      • 安装 `fail2ban`

文章来源: http://raspberry.dns8844.cn/documentation

原文网址

本地化您的 Raspberry Pi

您可以使用 xref:configuration.adoc#raspi-config[raspi-config] 工具配置 Raspberry Pi 操作系统的用户界面语言、键盘布局和时区。

保护您的树莓派

在这里,我们介绍了一些提高Raspberry Pi安全性的常用方法。

更改用户密码

sudo 为前缀的命令以超级用户身份运行。默认情况下,超级用户不需要密码。不过,您可以要求所有以 sudo 运行的命令都输入密码,从而提高 Raspberry Pi 的安全性。

要设置 sudo 需要密码,请为您的用户帐户编辑 nopasswd sudoers文件,将文件名中的 <username> 占位符替换为您的用户名:

$ sudo visudo /etc/sudoers.d/010_<username>-nopasswd

<username> 行更改为以下内容,并将 <username> 替换为您的用户名:

<username> ALL=(ALL) PASSWD: ALL

保存文件。您的新配置应立即生效。

更新树莓派操作系统

只有最新的操作系统发行版才包含所有最新的安全修复。请及时将您的设备 xref:os.adoc#update-software[更新到] Raspberry Pi OS 的最新版本。

自动更新 SSH 服务器

如果您使用SSH连接到Raspberry Pi,则值得添加专门更新SSH服务器的 cron 作业。以下命令可能作为每日 cron 任务运行,可确保您立即获得最新关于SSH安全修复,独立于正常的更新过程。

$ apt install openssh-server

提高SSH安全性

SSH 是远程访问 Raspberry Pi 的常用方法。默认情况下,SSH 需要用户名和密码。要使 SSH 更加安全,请使用 xref:remote-access.adoc#configure-ssh-without-a-password[基于密钥的身份验证]。

启用和禁用 SSH 用户

通过更改 sshd 配置,你还可以 允许拒绝 特定用户。

$ sudo nano /etc/ssh/sshd_config

在文件末尾添加、编辑或附加以下行,其中包含您希望允许登录的用户名:

AllowUsers alice bob

您还可以使用 DenyUsers 来专门禁止某些用户名登录:

DenyUsers jane john

更改后,使用以下命令重启 sshd 服务,使更改生效:

$ sudo systemctl restart ssh

安装防火墙

有许多防火墙解决方案可供Linux使用。大多数使用底层 http://www.netfilter.org/projects/iptables/index.html[iptables] 项目来提供数据包过滤。该项目位于Linux网络过滤系统之上。默认情况下, iptables 安装在树莓派操作系统上,但没有设置。设置它可能是一项复杂的任务,一个提供比 iptables 更简单界面的项目是 https://www.linux.com/learn/introduction-uncomplicated-firewall-ufw[防火墙(UFW)]。这是Ubuntu中的默认防火墙工具,可以安装在您的树莓派上:

$ sudo apt install ufw

ufw 是一个命令行工具,不过也有一些图形用户界面可供使用。请注意,ufw 需要以超级用户权限运行,因此所有命令前都要加上 sudo。也可以使用选项 --dry-run 来运行任何 ufw 命令,它可以显示命令的结果,而不做任何实际修改。

要启用防火墙,这也将确保它在启动时启动,请使用:

$ sudo ufw enable

要禁用防火墙并在启动时禁用启动,请使用:

$ sudo ufw disable

允许特定端口具有访问权限(我们在示例中使用了端口22):

$ sudo ufw allow 22

拒绝访问端口也很简单(同样,我们以端口22为例):

$ sudo ufw deny 22

您还可以指定在端口上允许或拒绝哪个服务。在此示例中,我们在端口22上拒绝tcp:

$ sudo ufw deny 22/tcp

即使您不知道它使用哪个端口,您也可以指定该服务。此示例允许ssh服务通过防火墙访问:

$ sudo ufw allow ssh

status命令列出了防火墙的所有当前设置:

$ sudo ufw status

这些规则可能相当复杂,允许阻止特定的IP地址,指定允许哪个方向的流量,或限制尝试连接的次数(例如帮助击败DDoS攻击)。您还可以指定要应用的设备规则(例如eth0、wlan0)。请参阅 ufw 手册页( man ufw )以获取以下命令以外的完整详细信息。

使用TCP限制ssh端口上的登录尝试。如果IP地址在过去30秒内尝试连接6次或更多次,这将拒绝连接:

$ sudo ufw limit ssh/tcp

拒绝从192.168.2.1地址访问端口30

$ sudo ufw deny from 192.168.2.1 port 30

安装 fail2ban

当把 Raspberry Pi 用作服务器时,你必须设置防火墙以允许服务器流量通过。http://www.fail2ban.org[Fail2ban] 可以帮助确保服务器安全。Fail2ban 会检查日志文件并检查可疑活动,如多次暴力登录尝试。它能帮你省去手动检查日志文件,然后更新防火墙(通过 iptables )来阻止入侵尝试的麻烦。

要安装 fail2ban,请运行以下命令:

$ sudo apt install fail2ban

安装时,Fail2ban 会创建 /etc/fail2ban/jail.conf。要启用 Fail2ban,请将 jail.conf 复制到 jail.local

$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

该配置文件包含一组默认选项,以及用于检查特定服务异常的选项。要检查用于 ssh 的规则,请在编辑器中打开 jail.local

$ sudo nano /etc/fail2ban/jail.local

如果 [ssh] 部分还不存在,则创建该部分,并在该部分中添加以下行:

[ssh]
enabled  = true
port     = ssh
filter   = sshd
backend  = systemd
maxretry = 6

这将启用 Fail2ban 检查可疑的 ssh 活动,包括系统日志检查,并允许在阻止活动前重试六次。

同一文件中的 [default] 部分定义了默认禁止操作 iptables-multiport,当达到检测阈值时,该操作将运行 /etc/fail2ban/action.d/iptables-multiport.conf 文件:

# Default banning action (e.g. iptables, iptables-new,
# iptables-multiport, shorewall, etc) It is used to define
# action_* variables. Can be overridden globally or per
# section within jail.local file
banaction = iptables-multiport

多端口禁止所有端口的所有访问。action.d 文件夹包含许多可供选择的动作配置文件,您可以用它们来定制服务器对可疑活动的反应。

例如,要在尝试三次失败后永久禁止一个 IP 地址,可将 [ssh] 部分中的 maxretry 值改为 3,并将 bantime 设为负数:

[ssh]
enabled  = true
port     = ssh
filter   = sshd
backend  = systemd
maxretry = 3
bantime  = -1

上一篇 – 树莓派超全系列教程文档–(23)内核参数
下一篇 – 树莓派超全系列教程文档–(25)使用无显示界面的树莓派


http://www.mrgr.cn/news/98434.html

相关文章:

  • 机器学习 | 强化学习基本原理 | MDP | TD | PG | TRPO
  • UE5 Chaos :官方文献总结 + 渲染网格体 (Render Mesh) 和模拟网格体 是如何关联的?为什么模拟网格体 可以驱动渲染网格体?
  • 单链表各种操作实现(数据结构C语言多文件编写)
  • Cesium.js(7):地图、地形的加载
  • 双链表各种操作实现(数据结构C语言多文件编写)
  • ubuntu18.04安装miniforge3
  • Base64在线编码解码 - 加菲工具
  • 【JavaEE】SpringBoot 统一功能处理
  • 【图解】系统设计学习笔记
  • +++++背到厌倦。持续更新
  • composer报错的处理方案
  • 【VUE3】练习项目——大事件后台管理
  • Android studio消息同步机制:消息本地存储,服务器交互减压
  • Nodejs Express框架
  • linux 进程信号
  • 批处理脚本bat丨遍历一个包含项目名称的数组,并对每个文件中的项目执行 git pull 操作 (一键拉很多文件的代码)
  • C++ Json-Rpc框架-3项目实现(2)
  • hive数仓要点总结
  • Apache Hive学习教程
  • [Dify] 使用 Docker 本地部署 Dify 并集成 Ollama 模型的详细指南