安全检查点设置与管理:提升安检效率的完整指南
引言
这个检查点旨在帮助您评估您从我们的安全入门文章中所学到的内容,我们在这些文章中介绍了推荐的安全实践和常用的安全工具。您可以使用这个检查点来评估自己在这些主题上的知识,回顾关键术语和命令,并找到继续学习的资源。
为了高效地运行云应用程序,配置服务器时应采用行业推荐的安全实践。保护服务器的安全对于保护用户和个人信息至关重要。您可以为云服务器本身和您的网络应用程序建立有效的安全措施。
该检查点将专注于保护您的服务器。您将找到两个部分,综合了介绍性文章的核心理念:对关键安全术语和实践的简要概述,以及关于使用命令行的部分,其中包括与特定安全工具相关的子部分。每个部分都有互动组件,可以帮助您测试自己的知识。在该检查点结束时,您将有机会继续学习有关容器的知识。
资源
- 保护服务器的推荐安全措施
- 如何在Ubuntu 22.04上使用UFW设置防火墙
- 如何在Ubuntu 22.04上设置WireGuard
- 如何在Ubuntu 22.04上设置和配置OpenVPN服务器
- 如何保持Ubuntu 22.04服务器更新
- 如何在Ubuntu 20.04上安装Suricata
什么是安全?
当您保护好您的云服务器之后,您可以管理基础设施中的漏洞,并保护自己免受潜在的损害和恶意攻击者的侵害。
了解几个关键术语对于理解云计算的安全实践非常重要。
信息
术语解释
请为以下术语进行定义,然后使用下拉菜单来核对您的答案。
加密
加密是指通过算法转换对信息进行编码的过程,然后可用于安全传输或存储。
您可以根据需要使用对称或非对称加密来实现您的目标。
SSH
SSH指的是安全外壳协议,它使您能够通过加密安全连接安全地管理远程服务器。
若要了解有关SSH的工作原理,请查阅了解SSH加密和连接过程。
防火墙
防火墙以两种主要方式控制服务器的连接:详细说明可以将什么类型的流量路由到服务器和从服务器路由出;以及定义哪些服务器向网络公开。在处理服务器时,您应该知道您是否正在使用其IPv4(32位数字)或IPv6(128位字母数字)IP地址。 IPv4和IPv6都可以使用,但我们建议转向IPv6。
一旦您的服务器设置完成,它将参与公钥基础设施(PKI)进行证书管理、身份识别和通信加密。TLS/SSL加密通常用于提供额外的安全级别,最常见的方法是通过合法证书颁发机构(CA)提供证书,以将HTTP服务器更新为HTTPS服务器。
信息
请核实自己的答案
使用下拉功能获取答案。
什么是TLS握手?
TLS是一种用于网络流量加密的传输层安全协议。在TLS握手中,客户端和服务器交换信息,验证消息来源的真实性,并确定一个加密方法(密码套件),以确保安全传输信息。
TLS握手与共享密钥加密有何不同?
TLS协议使用称为非对称加密的公钥和私钥加密方法。在这个过程中,存在一个密钥对。
共享密钥加密中,发送方和接收方将使用相同的密钥密码来解密消息。这个过程被称为对称加密,并使用单个密钥。您可以使用Let’s Encrypt作为证书颁发机构来获取免费的TLS/SSL证书。您也可以生成自签名证书。然而,自签名证书无法验证您的服务器给用户,所以您可以尝试从商业证书颁发机构安装一个SSL证书。
在接下来的章节中,您将回顾通过SSH连接到服务器的核心原则,运行VPN、使用防火墙以及监控您的网络安全。
使用SSH进行连接
在我们的云服务器入门系列中的SSH Essentials文章中,您生成了一个SSH密钥对。该密钥对使用了一种非对称加密方法,生成了一个私钥和一个公钥。您使用该密钥对作为非root用户在初始服务器设置中访问了您的服务器。
信息
自查一下
使用下拉功能获取答案。
SSH密钥通常存储在哪里?
在 ~/.ssh/authorized_keys 文件夹中。
SSH、HTTP和HTTPS通常在哪些端口运行?
SSH通常在22号端口运行。
HTTP/HTTPS通常分别在80号和443号端口运行。
如何更改默认端口访问权限?
要更新SSH端口访问权限,请修改服务器的sshd_config文件中Port 22的规定,指定一个未使用的端口,然后重新启动SSH守护程序。
更改SSH端口后,每次想要登录远程服务器时都必须指定新端口。为了增加保护措施,您可以加固服务器端的OpenSSH和OpenSSH客户端。通过同时加固服务器端和客户端的OpenSSH,您将提高对服务器远程访问的安全性。
为了使用SSH,您需要通过防火墙配置SSH访问。
使用防火墙
防火墙控制进出您的服务器的流量,可以根据您的需求进行配置。当您选择有效的防火墙策略时,您必须考虑您希望为服务器设置的策略以及不同防火墙程序如何响应请求。
一些常用的防火墙程序包括Uncomplicated Firewall (UFW) 和firewalld,它们都作为iptables或nftables的高级接口。如果您使用的是Ubuntu或Debian发行版,您很可能会使用UFW,因为它已经预先构建在系统中。而对于CentOS或Rocky Linux,您更可能使用firewalld。想要了解更多关于iptables的信息,您可以参考我们的文章《Iptables防火墙的工作原理》和《Iptables基本要素:常见的防火墙规则和命令》。
当配置防火墙时,你可以同时使用IPv4和IPv6,但你可能需要更新防火墙以管理IPv6。例如,UFW默认只管理IPv4,需要手动配置才能编写IPv6的规则。
运行VPN
一种虚拟私人网络(VPN)提供了一个加密通道,通过它你可以连接到互联网,对开发者和消费者都有好处。对于开发者来说,VPN可以让你从不同的地方访问自己的基础设施,这样你就不必开放敏感的端口。作为消费者,VPN可以让你在连接到不可信任的网络(比如咖啡店或图书馆的WiFi)时,安全地访问互联网。
信息
自查
VPC和VPN之间有什么区别?
VPC指的是虚拟私有云网络,是为您的资源提供的私有网络接口。在VPC中,资源只能通过内部网络相互连接,除非设置了入站网关,否则无法通过公共互联网访问。VPC可以根据您的需求进行扩展,提供工作负载管理和安全连接的好处。
VPN,即虚拟私有网络,在互联网上模拟远程计算机之间的私有网络,就像它们在本地私有网络上一样。VPN提供安全的网关来共享网络信息。WireGuard和OpenVPN是两种常见的VPN解决方案。在我们的入门文章中,您将设置一个WireGuard VPN和一个OpenVPN服务器。
一旦你建立好了你的网络,无论是使用VPN还是不使用,你都会希望长期管理你的系统,以保证安全和可持续的运行。
管理网络安全
配置您的服务器设置是确保安全实践的众多步骤之一。您可以通过保持服务器更新、加固网络以及监控网络安全来维护您的服务器。
为了保持Ubuntu服务器的最新状态,您可能希望更新您的systemd配置文件或安排cron任务进行自动重启。您还可以设置软件包管理器以通过systemctl管理的unattended-upgrades服务完成自动更新。如果您更喜欢运行Rocky Linux服务器,您可以参考我们的《如何保持Rocky Linux 9服务器更新》指南。
有时候为了修复系统范围的错误和漏洞,你可能需要在内核层面运行更新。尽管你可以使用apt的无人值守更新工具,但可能会导致系统有一些停机时间。如果你需要保持持续运行时间,你可以使用负载均衡器在不同的服务器运行内核更新时重定向流量。你也可以使用类似Canonical Livepatch Service或Kernelcare的实时修补服务来在后台运行。
你可以扫描和监控网络流量,寻找漏洞或可疑数据包。你安装了Suricata作为网络监控系统,为该服务定义规则集来代替你进行管理。
通常,您可以通过命令行连接和管理服务器,这是您在这些安全文章中使用的方式。
使用命令行
这是文章《安全检查点》的第2部分(共3部分)。
您已经通过我们的云服务器入门文章开始使用Linux命令行,配置了一个网页服务器;通过网页服务器解决方案文章管理了您的数据库;通过容器文章配置了一个容器解决方案。
在安全实践介绍中,您通过命令行继续熟悉了一些命令,例如:
- 以具有sudo权限的用户身份使用add-apt-repository命令,向服务器添加软件仓库信息。
- 使用cat命令将文件内容输出到终端。
- 使用chmod命令更改文件权限。
- 使用cp命令在单个服务器上复制文件,使用scp命令在服务器之间复制文件。
- 使用cut命令删除文件的一部分,使用-c选项剪切指定的字符串。
- 使用date命令输出时间戳,使用+%s%N选项输出秒(%s)和纳秒(%N)。
- 使用grep命令在指定文件中搜索文本和字符串。
- 使用jq命令按照命令语法读取和过滤条目。
- 以具有sudo权限的用户身份使用kill命令指定服务应停止的信号。
- 使用带-s选项的ln命令在文件之间创建符号链接。
- 使用printf命令显示给定字符串。
- 使用sha1sum命令打印和检查校验和。
- 使用ss命令列出所有正在使用的TCP/UDP端口,配合-plunt选项获取更多信息。
- 以具有sudo权限的用户身份使用sysctl命令配置内核参数并为终端会话加载新值。
- 使用systemctl命令管理服务,包括将OpenVPN作为systemd服务以及将Suricata作为网络监控包。
- 使用resolvectl dns命令识别服务器使用的DNS解析器。
- 使用带-f选项的tail命令输出文件的行。
- 以具有sudo权限的用户身份使用tee命令将输出重定向到新文件。
您使用了ip命令及其关联的子命令来配置您的网络接口。
- 使用ip addr命令查找您的网络接口。然后您将输出与ufw allow命令一起使用,以通过选定的网络接口启用传入流量。
- 使用ip address show命令查找系统的公共IP地址。
- 使用ip route命令查找公共网络接口。
如果您选择为Ubuntu服务器运行实时修补服务,您可以使用具有sudo权限的用户运行canonical-livepatch服务的子命令。
- 使用canonical-livepatch enable your-key命令启用该工具。
- 使用canonical-livepatch status命令检查后台服务的状态。
您还使用了管道操作符(|)来连接多个命令。
使用命令行运行UFW
在我们的初次服务器设置中,您使用了简化防火墙(Uncomplicated Firewall)来设置一个基本防火墙。然后,您使用sudo权限在《如何在Ubuntu 22.04上设置UFW防火墙》中使用了不同的子命令来修改您的防火墙。
- 使用ufw default deny incoming命令拒绝所有传入连接(这是默认状态)。
- 使用ufw default allow outgoing命令允许所有传出连接(这是默认状态)。
- 使用ufw allow ssh命令允许端口22上的传入SSH连接,例如当您希望管理远程服务器时。
- 使用ufw allow port_number命令为传入连接指定一个端口。
- 使用ufw enable命令激活防火墙。
- 使用ufw status命令检查防火墙状态,使用ufw status verbose命令查看所有设置的规则。
- 使用ufw allow http或ufw allow 80命令允许来自通过HTTP的未加密Web服务器的传入连接。
- 使用ufw allow https或ufw allow 443命令允许来自通过HTTPS的加密Web服务器的传入连接。
- 使用ufw allow port_number:port_number/tcp和ufw allow port_number:port_number/udp命令允许一系列端口,指定TCP/UDP协议。
- 使用ufw allow from your_ip_address命令允许来自特定IP地址的连接。您可以添加任何端口号port_number将IP地址定向到特定端口。
- 子网
- 使用ufw deny http命令拒绝HTTP连接,使用ufw deny from your_ip_address命令拒绝来自特定IP地址的所有连接。
- 使用ufw status numbered命令生成防火墙规则的编号列表。
- 使用ufw delete命令删除规则,使用列表编号或使用allow规则(如ufw delete allow http)。
- 使用ufw disable命令停用您创建的所有规则。
- 使用ufw reset命令禁用UFW并删除您创建的所有规则。
您可以继续根据我们提供的《UFW Essentials:常见防火墙规则和命令》文章来完善您的UFW设置。
用命令行运行VPN
除了配置防火墙之外,您还管理着两种不同的VPN工具——WireGuard和OpenVPN。
当设置您的WireGuard VPN时,您在WireGuard服务器及其对等服务器上运行了以下WireGuard命令:
- 使用wg命令管理您的WireGuard服务器。
- 使用wg genkey和wg pubkey命令为WireGuard服务器创建私钥和公钥对。
- 使用带allowed-ips设置和特定IP地址列表的wg set命令管理对WireGuard VPN的访问。
- 使用wg-quick命令手动建立VPN连接,使用up参数启动隧道,使用down参数断开VPN连接。
在设置您的OpenVPN服务器时,您在OpenVPN服务器和验证证书的CA服务器上运行了一系列修改过的脚本,设置了诸如tls-crypt指令等配置指令,以改进加密通信。
通过这些文章和最佳实践,您现在已经了解了保护您的云服务器的基础知识。
接下来是什么?
在这些介绍云服务器安全实践的文章中,您已经学习了建立云服务器健壮安全措施的最佳实践和常用工具。为确保您的基础架构从安全的基本配置开始,您可以继续遵循行业最佳实践,包括加密、私有网络、安全监控和服务审计。
为了继续加强服务器安全性,请尝试下列教程:
- 如何在Rocky Linux 9上使用firewalld设置防火墙
- 如何将vServer配置为VPC网关
- 如何设置和配置证书颁发机构(CA)
- 如何在Ubuntu 20.04上加固OpenSSH客户端
通过以下教程,您可以学习如何在系统之间安全传输文件:
- 如何使用SFTP与远程服务器安全传输文件
- 如何使用Rsync同步本地和远程目录
如果您想为您的Silicon Cloud Kubernetes集群实施安全实践,请尝试下列教程:
- 保护Silicon Cloud Kubernetes集群的推荐步骤
- 如何使用Helm在Silicon Cloud Kubernetes上设置Nginx Ingress
- 如何使用cert-manager、Traefik和Let’s Encrypt保护Kubernetes中的站点
如果您尚未安装,也可以从商业证书颁发机构为与您的服务器关联的域名安装SSL证书。
凭借您新获得的安全知识,您已经可以继续云端之旅了。如果您尚未阅读我们关于云服务器、网页服务器、数据库和容器的入门文章,请务必查看。