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

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

文章来源: 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)使用无显示界面的树莓派

相关推荐
知白守黑26722 分钟前
Linux磁盘阵列
linux·运维·服务器
维尔切2 小时前
Linux中基于Centos7使用lamp架构搭建个人论坛(wordpress)
linux·运维·架构
tan77º2 小时前
【项目】分布式Json-RPC框架 - 项目介绍与前置知识准备
linux·网络·分布式·网络协议·tcp/ip·rpc·json
正在努力的小河5 小时前
Linux设备树简介
linux·运维·服务器
荣光波比5 小时前
Linux(十一)——LVM磁盘配额整理
linux·运维·云计算
LLLLYYYRRRRRTT5 小时前
WordPress (LNMP 架构) 一键部署 Playbook
linux·架构·ansible·mariadb
轻松Ai享生活6 小时前
crash 进程分析流程图
linux
没有不重的名么6 小时前
Tmux Xftp及Xshell的服务器使用方法
服务器·人工智能·深度学习·机器学习·ssh
大路谈数字化7 小时前
Centos中内存CPU硬盘的查询
linux·运维·centos
luoqice8 小时前
linux下查看 UDP Server 端口的启用情况
linux