安全检查点 (Ānquán jiǎnchá diǎn)
引言
这个检查点旨在帮助您评估您从我们的安全入门文章中所学到的内容,我们在这些文章中介绍了推荐的安全实践和常用的安全工具。您可以使用这个检查点来评估自己在这些主题上的知识,回顾关键术语和命令,并找到继续学习的资源。
为了高效地运行云应用程序,配置服务器时应采用行业推荐的安全实践。保护服务器的安全对于保护用户和个人信息至关重要。您可以为云服务器本身和您的网络应用程序建立有效的安全措施。
该检查点将专注于保护您的服务器。您将找到两个部分,综合了介绍性文章的核心理念:对关键安全术语和实践的简要概述,以及关于使用命令行的部分,其中包括与特定安全工具相关的子部分。每个部分都有互动组件,可以帮助您测试自己的知识。在该检查点结束时,您将有机会继续学习有关容器的知识。
资源
- Recommended Security Measures to Protect Your Servers
- How To Set Up a Firewall with UFW on Ubuntu 22.04
- How To Set Up WireGuard on Ubuntu 22.04
- How To Set Up and Configure an OpenVPN Server on Ubuntu 22.04
- How to Keep Ubuntu 22.04 Servers Updated
- How To Install Suricata on Ubuntu 20.04
什么是安全?
当您保护好您的云服务器之后,您可以管理基础设施中的漏洞,并保护自己免受潜在的损害和恶意攻击者的侵害。
了解几个关键术语对于理解云计算的安全实践非常重要。
Info
请为以下术语进行定义,然后使用下拉菜单来核对您的答案。
加密
加密是指通过算法转换对信息进行编码的过程,然后可用于安全传输或存储。
您可以根据需要使用对称或非对称加密来实现您的目标。
SSH
SSH指的是安全外壳协议,它使您能够通过加密安全连接安全地管理远程服务器。
若要了解有关SSH的工作原理,请查阅了解SSH加密和连接过程。
防火墙
防火墙以两种主要方式控制服务器的连接:详细说明可以将什么类型的流量路由到服务器和从服务器路由出;以及定义哪些服务器向网络公开。
在处理服务器时,您应该知道您是否正在使用其IPv4(32位数字)或IPv6(128位字母数字)IP地址。 IPv4和IPv6都可以使用,但我们建议转向IPv6。
一旦您的服务器设置完成,它将参与公钥基础设施(PKI)进行证书管理、身份识别和通信加密。TLS/SSL加密通常用于提供额外的安全级别,最常见的方法是通过合法证书颁发机构(CA)提供证书,以将HTTP服务器更新为HTTPS服务器。
Info
使用下拉功能获取答案。
什么是TLS握手?
TLS是一种用于网络流量加密的传输层安全协议。在TLS握手中,客户端和服务器交换信息,验证消息来源的真实性,并确定一个加密方法(密码套件),以确保安全传输信息。
TLS握手与共享密钥加密有何不同?
TLS协议使用称为非对称加密的公钥和私钥加密方法。在这个过程中,存在一个密钥对。
共享密钥加密中,发送方和接收方将使用相同的密钥密码来解密消息。这个过程被称为对称加密,并使用单个密钥。
您可以使用Let’s Encrypt作为证书颁发机构来获取免费的TLS/SSL证书。您也可以生成自签名证书。然而,自签名证书无法验证您的服务器给用户,所以您可以尝试从商业证书颁发机构安装一个SSL证书。
在接下来的章节中,您将回顾通过SSH连接到服务器的核心原则,运行VPN、使用防火墙以及监控您的网络安全。
使用SSH进行连接
在我们的云服务器入门系列中的SSH Essentials文章中,您生成了一个SSH密钥对。该密钥对使用了一种非对称加密方法,生成了一个私钥和一个公钥。您使用该密钥对作为非root用户在初始服务器设置中访问了您的服务器。
Info
使用下拉功能获取答案。
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)时,安全地访问互联网。
Info
自查
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作为网络监控系统,为该服务定义规则集来代替你进行管理。
通常,您可以通过命令行连接和管理服务器,这是您在这些安全文章中使用的方式。
使用命令行
你开始使用Linux命令行,通过我们的云服务器入门文章,配置了一个网页服务器,通过网页服务器解决方案文章管理了你的数据库,通过容器文章配置了一个容器解决方案。
在安全实践介绍中,你通过命令行继续熟悉了一些命令,比如:
- add-apt-repository as your sudo-enabled user to add software repository information to your server.
- cat to output a file’s content to the terminal.
- chmod to change file permissions.
- cp to copy files on one server and scp to copy files between servers.
- cut to remove a section of a file, using the -c option to cut the specified string).
- date to output a timestamp, using the +%s%N options to output seconds (%s) and minutes (%N).
- grep to search text and strings in a specified file.
- jq to read and filter entries as specified by the command syntax.
- kill as your sudo-enabled user to specify a signal by which a service should be stopped.
- ln with the -s option to create a symlink between files.
- printf to display a given string.
- sha1sum to print and check a checksum.
- ss to list all TCP/UDP ports in use, paired with the -plunt options for additional information.
- sysctl as your sudo-user to configure kernel parameters and load new values for your terminal session.
- systemctl to manage services, including OpenVPN as a systemd service and Suricata as a networking monitoring package.
- resolvectl dns to identify the DNS resolvers used by your server.
- tail to output lines from a file specified with the -f option.
- tee as your sudo-user to redirect an output into a new file.
你使用了ip命令和其关联的子命令来配置你的网络接口。
- ip addr to look up your network interfaces. You then used the output with the ufw allow command to enable incoming traffic via the selected network interface.
- ip address show to find the public IP address for the system.
- ip route to find the public network interface.
如果您选择为Ubuntu服务器运行一个实时修补服务,您可以使用sudo权限的用户运行canonical-livepatch服务的子命令。
- canonical-livepatch enable your-key to enable the tool.
- canonical-livepatch status to check the status of the background service.
你还使用了管道操作符(|)来连接多个命令。
使用命令行运行 UFW
在我们的初次服务器设置中,您使用了简化防火墙(Uncomplicated Firewall)来设置一个基本防火墙。然后,您使用sudo权限在《如何在Ubuntu 22.04上设置UFW防火墙》中使用了不同的子命令来修改您的防火墙。
- ufw default deny incoming to deny all incoming connections (this is the default state).
- ufw default allow outgoing to allow all outgoing connections (this is the default state).
- ufw allow ssh to allow incoming SSH connections on port 22, such as when you wish to manage a remote server.
- ufw allow port_number to specify a port for incoming connections.
- ufw enable to make the firewall active.
- ufw status to check the status of your firewall and ufw status verbose to see all the rules that are set.
- ufw allow http or ufw allow 80 to allow incoming connections from unencrypted web servers over HTTP.
- ufw allow https or ufw allow 443 to allow incoming connections from unencrypted web servers over HTTPs.
- ufw allow port_number:port_number/tcp and ufw allow port_number:port_number/udp to allow a range of ports, specifying the TCP/UDP protocols.
- ufw allow from your_ip_address to allow connects from a specific IP address. You can add to any port port_number to direct the IP address to a specific port.
- subnets
- ufw deny http to deny HTTP connections and ufw deny from your_ip_address to deny all connections from a specific IP address.
- ufw status numbered to generate a numbered list of firewall rules.
- ufw delete to delete rules, using a list number or using the allow rule (such as ufw delete allow http).
- ufw disable to deactivate all rules you have created.
- ufw reset to disable UFW and delete any rules you created.
你可以继续根据我们提供的《UFW Essentials:常见防火墙规则和命令》文章来完善你的UFW设置。
用命令行运行VPN
除了配置防火墙之外,您还管理着两种不同的VPN工具——WireGuard和OpenVPN。
当设置您的WireGuard VPN时,您在WireGuard服务器和其Peer服务器上运行了以下WireGuard命令:
- wg to manage your WireGuard server.
- wg genkey and wg pubkey to create a private and public key pair for a WireGuard server.
- wg set with an allowed-ips settings and a list of specific IP addresses to manage access to your WireGuard VPN.
- wg-quick establish your VPN connection manually with the up argument to start the tunnel and the down argument to disconnect from the VPN.
在设置您的OpenVPN服务器时,您在OpenVPN服务器和验证证书的CA服务器上运行了一系列修改过的脚本,设置了诸如tls-crypt指令等配置指令,以改进加密通信。
通过这些文章和最佳实践,你现在已经了解了保护你的云服务器的基础知识。
接下来是什么?
在这些介绍云服务器安全实践的文章中,你已经学到了云服务器建立健壮安全措施的最佳实践和常用工具。为了确保你的基础架构从安全的基本配置开始,你可以继续遵循行业的最佳实践,包括加密、私有网络、安全监控和服务审计。
为了继续加强服务器安全性,请尝试下列教程:
- How To Set Up a Firewall Using firewalld on Rocky Linux 9
- How to Configure a vServer as a VPC Gateway
- How To Set Up and Configure a Certificate Authority (CA)
- How To Harden OpenSSH Client on Ubuntu 20.04
通过这些教程,您可以在您的系统之间传输文件。
- How To Use SFTP to Securely Transfer Files with a Remote Server
- How To Use Rsync to Sync Local and Remote Directories
如果您想为您的Silicon Cloud Kubernetes集群实施安全实践,请尝试下列教程:
- Recommended Steps to Secure a Silicon Cloud Kubernetes Cluster
- How To Set Up an Nginx Ingress on Silicon Cloud Kubernetes Using Helm
- How To Secure Your Site in Kubernetes with cert-manager, Traefik, and Let’s Encrypt
如果你还没有安装,你也可以从商业证书颁发机构为与你的服务器关联的域名安装SSL证书。
凭借您对安全的新知识,您已经可以继续进行云端之旅了。如果您还没有阅读过我们关于云服务器、网页服务器、数据库和容器的入门文章,请务必查看。