创建Linux?云服务器后的第一步是为其设置安全性。您应该在每台服务器上执行此关键步骤,以防止不良行为者获得不需要的访问权限。此操作会产生一个更安全的环境,有助于防止您和您的企业受到损害。执行这些基本步骤并加强服务器上的安全性可以阻止不良行为者,并使他们转向新目标。
默认情况下,root用户被创建为每个Linux系统上的第一个用户。您应该通过SecureShell(SSH)禁用它。通过SSH禁用此root用户会使不良行为者更难访问系统。因为root用户是在每台Linux服务器上默认创建的,所以如果root用户通过SSH启用,不良行为者已经拥有登录到您的服务器所需的一半信息。这种情况允许暴力破解SSH攻击,直到密码散列中断。
为避免这种情况,您应该在需要登录和管理系统时创建辅助用户。系统上的每个最终用户都应该有自己的登录凭据以用于记录目的。根据最终用户需要执行的操作,他们可能需要sudo权限才能完成管理操作。本节提供有关如何在基于Debian?和RedHat?EnterpriseLinux的系统上添加具有sudo权限的用户的示例。
在创建任何用户之前,请确保使用需要最小字符长度(甚至可能包括到期日期)的强密码。以下是软件系统安全支持者提倡的共同准则:
对于Debian和Ubuntu?操作系统,请按照以下步骤添加用户:
useradd{用户名}passwd{用户名}
使用以下方法之一sudo为用户实现权限。
一个。运行以下命令将用户添加到admin用户组。
usermod-aGadmin{username}
或者,您可以修改sudoers文件以授予用户sudo权限。
一个。以root身份运行以下命令以编辑用户权限列表:
注意:在某些发行版中,系统将vi文本编辑器用于?visudo.?因为vi它不是一个用户友好的编辑器,您可能需要参考vi教程来寻求帮助。
湾。在包含的行之后直接添加以下行rootALL=(ALL:ALL)ALL:
{username}ALL=(ALL:ALL)ALL
在执行命令之前,系统会提示您输入新用户的密码以进行验证。
如果您正确执行这些步骤,您的用户现在可以sudo访问并且可以提升权限。如果没有正确执行,当您尝试进行身份验证时,您会收到一条消息,指出用户不在sudoers文件中。
对于RedHat和CentOS?操作系统,请按照以下步骤添加用户:
使用以下方法之一sudo为用户实现权限。
一个。运行以下命令将用户添加到wheel组
usermod-aGwheel{username}
或者,您可以修改sudoers文件以授予用户sudo权限。
注意:在某些发行版上,系统使用的文本编辑器?visudo是vi.?因为vi它不是一个用户友好的编辑器,您可能需要参考vi教程来寻求帮助。
湾。在包含的行之后直接添加以下行?rootALL=(ALL:ALL)ALL:
在执行命令之前,系统会提示您输入新用户的密码以进行验证。
如果您正确执行了这些步骤,您的用户现在可以sudo访问并且可以提升权限。如果没有正确执行,当您尝试进行身份验证时,您会收到一条消息,指出用户不在sudoers文件中。
对于比使用密码更安全的登录方法,请创建一个SSH密钥对以与您之前创建的用户一起使用。这些说明适用于任何Linux发行版。
注意:这些说明适用于Linux和macOS?桌面。如果您从Windows?桌面连接,请按照?使用SSHPUTTYgen生成RSA密钥?和?在Windows上使用SSH私钥登录中的说明生成和添加SSH密钥对。
当询问将密钥保存在哪里时,请使用默认位置。添加密码是可选的并且更安全,但可能不方便。
此操作创建两个文件。默认名称id_rsa用于您的私钥和id_rsa.pub公钥。
警告:请务必上传公钥,而不是私钥。
ssh-copy-id-i~/.ssh/id_rsa.pub{username}@{remotePublicIPAddress}
至此,您已经ssh-key为用户添加了密码验证。下一节将介绍有关如何禁用密码身份验证的可选步骤。
现在您有了一个具有sudo权限的新用户和一个SSH密钥对,您可以使用SSH守护程序(服务器)配置来提高安全性。
注意:?仅适用于托管操作和RackConnect客户:为确保我们的自动化系统在需要时可以访问您的服务器,我们要求您不要更改SSH配置并跳到下一部分。当连接到您的服务器时,Rackspace支持团队以用户rack身份登录并在端口22上使用密码验证。此外,重建现有服务器或从快照构建新服务器需要您通过将PermitRootLogin选项设置为来启用root登录yes。如果您需要更改这些值,请与您的Rackspace支持团队成员交谈,以便以不影响我们为您提供FanaticalExperience?的能力的方式进行更改。
本文其余部分的示例命令假定您以新用户身份登录,sudo用于执行特权操作。
本节介绍SSH配置文件中有助于提高安全性的常用选项。此信息用于稍后配置您的防火墙。本节仅概述了几个要更改的选项并描述了它们的作用。
SSH默认使用端口22进行通信。root不良行为者在他们攻击的每台服务器上使用用户名尝试端口22。因此,通过SSH禁用root用户并将SSH更改为侦听非标准端口有助于防止违规。
更改端口不会阻止确定的入侵者,但它确实会导致大多数SSH连接机会的表面扫描忽略您的服务器。同样,删除root用户的SSH访问权限会干扰通过SSH进行的随意暴力攻击。
您还应该考虑在登录时使用哪种身份验证方法。默认情况下,所有Linux系统都使用密码身份验证。存在多种在服务器上执行身份验证的方法,但主要的两种方法是使用密码和SSH密钥。
SSH密钥是成对生成的,一个是公共的,另一个是私有的,您只能将它们组合使用。您应该将私钥存储在您连接的计算机上的安全位置,并且永远不要将其泄露。您可以提供公钥,它是您放置在要连接的服务器上的密钥。当您建立连接时,本地计算机上的私钥通过算法运行,如果密钥对哈希与公钥匹配,则授予访问权限。
至此,您已经添加了一个具有sudo权限的新用户,创建了一个SSH密钥对,并上传了您的公共SSH密钥。您现在可以更改SSH配置文件以提高安全性。为此,您可以使用以下步骤将SSH更改为侦听自定义端口、限制通过SSH的root登录、启用公钥身份验证和禁用密码身份验证:
sudovim/etc/ssh/sshd_config
注意:默认情况下,Port和PermitRootLogin行被注释掉,如开头的符号来取消注释关联行。此外,在禁用之前PasswordAuthentication,请确保您已配置SSH密钥,否则您将无法连接到服务器。
PasswordAuthenticationyes
PasswordAuthenticationno
将2222替换为您要使用的端口。使用netstat确保新端口尚未被其他程序使用。
重要提示:如前所述,?sshd_config如果您的服务器具有托管操作服务级别,则不应对文件进行此更改。这些更改可能会拒绝Rackspace访问您的服务器。
如果您没有收到错误,则SSH现在已配置为在自定义端口上运行,并且仅接受传递有效SSH密钥的非root用户。要应用和保留这些设置,您必须重新启动SSH服务。请不要重新启动服务。现在重新启动SSH可能会将您锁定在服务器之外,需要您使用救援模式或Web控制台来恢复配置。您必须在重新启动服务器之前配置防火墙。我们将在下一节讨论防火墙。
注意:?RackConnect客户:要管理防火墙规则,请使用RackConnect管理而不是iptables在服务器上。如果您使用RackConnect,则不应更改SSH端口。有关防火墙和RackConnect的更多信息,请参阅?管理RackConnectv2.0网络策略。
每个Linux发行版都使用不同的软件防火墙解决方案。在RedHatEnterpriseLinux(RHEL)和CentOS7中,默认防火墙是firewalld.?在基于Debian和Ubuntu的发行版上,默认的防火墙解决方案是简单防火墙(UFW)。对于RHEL和CentOS6,默认解决方案是iptables.?有关您服务器的操作系统,请参阅以下部分。

sudofirewall-cmd--permanent--remove-service=ssh
sudofirewall-cmd--permanent--add-port=2222/tcp
sudofirewall-cmd--reload
替换2222为您用于SSH守护程序的端口。
sudosystemctlrestartsshd
如果您按照这些步骤操作,您应该会看到类似于以下输出的内容:
tcp000.0.0.0:22220.0.0.0:*LISTEN1341/sshd
tcp600:::2222:::*LISTEN1341/sshd
替换2222为您用于SSH守护程序的端口。
sudosystemctlrestartsshd
如果您按照这些步骤操作,您应该会看到类似于以下输出的内容:
tcp000.0.0.0:22220.0.0.0:*LISTEN1341/sshd
tcp600:::2222:::*LISTEN1341/sshd
注意:RHEL和CentOS6将于2020年11月被标记为生命周期结束。为了获得最佳安全实践,我们强烈建议您考虑使用更新的操作系统版本来托管您的应用程序或网站。
sudoiptables-IINPUT-mstate--stateNEW-mtcp-ptcp--dport2222-jACCEPT
sudoserviceiptables-save
替换2222为您用于SSH守护程序的端口。
如果您按照这些步骤操作,您应该会看到类似于以下输出的内容:
tcp000.0.0.0:22220.0.0.0:*LISTEN1341/sshd
tcp600:::2222:::*LISTEN1341/sshd
对操作系统进行更改后,在本地计算机上打开另一个终端窗口,并以您之前创建的用户身份登录服务器。请记住指定新更改的端口。保持原始连接处于活动状态,以防您需要对配置进行故障排除。
要使用新配置连接到SSH,您可能需要指定要使用的端口号和密钥。例如:
ssh-p2222-i~/.ssh/id_rsa{username}@{remotePublicIPAddress}
-p选项指定端口,选项-i指定用于连接的私钥。
如果您从Windows桌面连接,当您在PuTTY中创建连接时,您可以指定端口号和私钥。
大多数潜在的入侵者对同一个端口进行多次攻击,试图在该端口上运行的软件中找到他们可以利用的东西。幸运的是,您可以在服务器上设置像?fail2ban这样的入侵防御工具来阻止对端口的重复攻击。
注意:托管操作服务器已fail2Ban安装并默认配置为监视SSH登录尝试。如果您有任何问题或疑虑,请联系您的支持团队。
fail2ban监控日志并在短时间内发现来自同一主机的过多连接时自动阻止连接。要在您的服务器上设置和配置fail2ban?,请使用以下步骤:
sudoapt-getinstallfail2ban
sudocp-pf/etc/fail2ban/jail.conf/etc/fail2ban/jail.local
vim/etc/fail2ban/jail.local
在此文件中,您可以设置以下选项:
vim/etc/fail2ban/jail.d/sshd.local
#action=firewallcmd-ipset
这些选项会在24小时内通过SSH连接三次失败后禁止IP地址。如果您知道您的本地IP地址,我们强烈建议您在上一节中添加此IP地址作为ignoreip参数。
RHEL和CentOS7或Debian和Ubuntu:
sudosystemctlstartfail2ban
sudosystemctlenablefail2ban
sudoservicefail2banstart
入侵检测系统(IDS)可以帮助管理员监控系统中的可疑活动和可能的漏洞。IDS比预防工具更强大,fail2ban但设置和维护起来可能更复杂。
一个流行的开源IDS是OSSEC。OSSEC在多个系统上维护向主服务器报告的代理,即使该服务器已关闭,也允许调查来自潜在受损服务器的日志和警报。
如果您怀疑系统已经受到威胁,您可以通过检查后门和入侵者?以及救援模式调查等程序进行调查。
使您的内核、包和依赖项保持最新非常重要,尤其是对于与安全相关的模块和包。某些更新(例如内核更新)需要您重新启动服务器。您应该将维护安排在对用户影响最小的时间进行,因为这些维护会导致短暂的停机时间。
重要提示:虽然保持系统处于最新状态至关重要,但请确保您应用的更新不会对您的生产环境产生负面影响。
要在Ubuntu操作系统和Debian上检查并安装更新,请运行以下命令:
要在CentOS、RedHat和Fedora系统上检查和安装更新,请运行以下命令:
了解您在服务器上运行的Linux发行版何时达到其生命周期结束(EOL)。当一个版本达到其EOL时,发行版的维护者不再支持它或通过他们的官方存储库提供包更新。您应该在当前版本达到其EOL之前计划好迁移到较新版本。
使用以下链接了解您的Linux发行版何时设置为EOL:
尽管保护您的服务器是Internet操作的重要组成部分,但保护您的帐户也是必要的。您的帐户名、密码和API密钥是您与Rackspace云产品交互方式的重要组成部分。就像任何其他密码或访问凭据一样,您希望确保它们的安全。您还需要允许您的团队采取行动并执行必要的任务。
通过使用?基于角色的访问控制(RBAC),您可以创建用户并向负责使用各种Rackspace服务的个人或应用程序授予权限。通过利用RBAC,您可以让您的团队和承包商仅访问他们需要的实用程序,并在必要时撤销访问权限。
本文来源:国外服务器--Linux服务器安全最佳实践(linux服务器基础知识)
本文地址:https://www.idcbaba.com/guowai/6379.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。




