Ubuntu服务器设置–安全最佳实践
成功安装Debian/Ubuntu服务器后,一些配置步骤对于增强服务器的安全性和功能至关重要。
在本教程中,我们将引导您完成Debian 9/Ubuntu 18.04服务器初始服务器设置中的基本步骤。
这些基本步骤将加强您的服务器,并允许以无缝方式执行后续操作。
以root用户身份登录
设置服务器的第一步是以root用户身份登录。
但是首先,您需要具有服务器的IP地址和密码或者用于身份验证的私钥。
要登录,请打开Linux终端并执行以下命令。
确保用您的IP地址替换服务器的IP地址。
ssh user@ip-address
在本教程中,我们使用公共IP地址为38.76.11.180的Ubuntu 18.04服务器。
要通过终端使用ssh登录,命令为
ssh [email protected]
如果您是首次登录,则将需要验证服务器的真实性。
输入"是",然后按Enter。
然后将提示您输入服务器的密码。
提供正确的密码,然后按Enter。
这将使您进入服务器的Shell提示符,如下所示
现在我们已经成功登录到服务器,让我们继续第二步
创建一个新用户
为了获得最佳安全性实践,强烈建议不要将root帐户用于管理任务。
为什么会这样?以root用户身份运行服务器会使您容易犯意外的代价高昂的错误,这可能对服务器有害。
您可以轻松地做一些对您的系统有害的事情,这可能会对您的系统造成不可挽回的损害。
因此,我们将创建一个新的非root用户,并在以后为其授予管理权限。
这样,每次尝试执行根级任务时,系统都会提示您输入密码。
如果您发现命令执行中的代价高昂的错误,这将使您有一些时间来暂停和思考执行命令的后果,并停在轨道上。
创建新用户运行
adduser user_name
我们将添加一个新用户" james"
adduser james
系统将提示您输入用户密码和一些其他问题。
提供必要的信息
完善!要验证用户的创建,请查看"/etc/passwd"并确认用户的存在。
cat /etc/passwd
上方的最后一行显示了新创建的用户的信息。
向新用户授予管理权限
到目前为止,新用户具有常规帐户特权。
我们需要为新创建的用户设置root特权,以便他们可以通过在执行任何操作之前附加sudo
来执行管理任务。
为此,我们需要将用户添加到sudo组,以避免每次执行管理任务时注销并以root用户身份登录。
实现此目的的语法是
usermod -aG sudo user_name
在这种情况下,向用户" james"授予sudo特权的命令为
usermod -aG sudo james
现在,您可以使用前面指示的命令注销并使用新用户登录
ssh [email protected]
通过验证服务器的真实性并提供正确的密码成功登录后,您现在可以通过在命令前加上sudo
来执行任何超级用户任务。
例如,要使用帐户更新系统,请执行以下命令
sudo apt update
系统将提示您输入密码,并在提供密码后开始操作。
配置基本防火墙
Debian和Ubuntu服务器使用UFW防火墙来允许或者拒绝进出服务器的流量。
要查看防火墙中的现有连接,请执行
sudo ufw app list
正如预期的那样,将显示OpenSSH,因为我们当前正在使用ssh连接到服务器
输出
要允许通过防火墙的连接,请执行以下命令。
ufw allow service_name
例如,要允许新服务器运行SSH连接:
sudo ufw allow OpenSSH
输出
要打开防火墙上的特定端口,请使用以下语法
sudo ufw allow port/protocol
例如
sudo ufw allow 80/tcp
要检查防火墙的状态,请执行
sudo ufw status
要启用防火墙,请运行以下命令。
sudo ufw enable
出现提示时,键入"是",然后按" ENTER"以启用防火墙并生效更改
要再次查看防火墙的状态以及现有的连接/打开的端口,请执行以下命令
为新用户启用无密码身份验证
目前,我们正在使用带有密码验证的SSH协议连接到我们的服务器。
为了获得最佳安全性,强烈建议您设置不使用密码身份验证的SSH密钥。
SSH密钥成对出现:公共密钥和私有密钥。
私钥驻留在客户端计算机上,而公钥驻留在我们连接的服务器上。
设置SSH密钥身份验证后,应禁用密码身份验证。
这样可以确保只有具有私钥的用户才能连接到公钥所在的服务器。
步骤1.生成公钥
要生成密钥对,请在客户端计算机上运行以下命令
ssh-keygen
您将得到如下所示的输出
按ENTER键,将密钥对保存在主目录中的.ssh /子目录中。
或者,您可以指定自己的路径。
接下来,系统将提示您输入安全密码,强烈建议您添加一个另外的保护层。
如果您希望不使用密码短语,请按Enter。
最后,您将获得以下输出
此时,您将拥有私钥和公钥。
它们已保存在主目录的.ssh目录中。
在这种情况下,路径为/root.ssh
。
cat /root/.ssh
id_rsa是私钥
id_rsa_pub是公共密钥
步骤2.复制公钥
要将公钥复制到服务器,我们将使用ssh-copy-id命令。
语法将是
ssh-copy-id user@remote-server
在这种情况下,我们将执行
ssh-copy-id [email protected]
您将获得类似于以下内容的输出
作为公共密钥的id_rsa.pub
密钥已复制到服务器。
现在,如果您尝试使用ssh user @ server-ip语法登录,将不会提示您输入密码!
禁用密码认证
如果他们掌握了密码,仍然可以登录我们的服务器。
为了消除这种风险,我们需要禁用SSH密码身份验证。
为此,我们将打开SSH的配置文件
sudo vim /etc/ssh/sshd_config
搜索指示为" PasswordAuthentication"的部分。
注释掉该行并将值设置为no
保存并退出。
要实施更改,请重新启动SSH守护程序
sudo systemctl restart ssh
现在,您可以启动新终端并尝试使用密码登录,并查看是否已禁用密码身份验证。