Linux服务器安全最佳实践(linux服务器基础知识)

Linux服务器安全最佳实践(linux服务器基础知识)

浏览次数: 次
信息来源: 用户投稿
更新日期: 2026-09-21
文章简介

创建Linux?云服务器后的第一步是为其设置安全性。您应该在每台服务器上执行此关键步骤,以防止不良行为者获得不需要的访问权限。此操作会产生一个更安全的环境,有助于防止您和您的企业受到损害。执行这些基本

2025阿里云双十一服务器活动

创建Linux?云服务器后的第一步是为其设置安全性。您应该在每台服务器上执行此关键步骤,以防止不良行为者获得不需要的访问权限。此操作会产生一个更安全的环境,有助于防止您和您的企业受到损害。执行这些基本步骤并加强服务器上的安全性可以阻止不良行为者,并使他们转向新目标。

用户管理

默认情况下,root用户被创建为每个Linux系统上的第一个用户。您应该通过SecureShell(SSH)禁用它。通过SSH禁用此root用户会使不良行为者更难访问系统。因为root用户是在每台Linux服务器上默认创建的,所以如果root用户通过SSH启用,不良行为者已经拥有登录到您的服务器所需的一半信息。这种情况允许暴力破解SSH攻击,直到密码散列中断。

为避免这种情况,您应该在需要登录和管理系统时创建辅助用户。系统上的每个最终用户都应该有自己的登录凭据以用于记录目的。根据最终用户需要执行的操作,他们可能需要sudo权限才能完成管理操作。本节提供有关如何在基于Debian?和RedHat?EnterpriseLinux的系统上添加具有sudo权限的用户的示例。

密码强度准则

在创建任何用户之前,请确保使用需要最小字符长度(甚至可能包括到期日期)的强密码。以下是软件系统安全支持者提倡的共同准则:

  • 如果允许,请使用12到14个字符的最小密码长度。
  • 如果允许,包括小写和大写字母、数字和符号。
  • 在可行的情况下随机生成密码。
  • 避免对多个用户、帐户或软件系统使用相同的密码。
  • 避免字符重复、键盘模式、字典单词、字母或数字序列、用户名、亲戚或宠物名、浪漫链接(当前或过去)或个人信息(例如,身份证号、祖先的姓名或日期)。
  • 避免使用已公开或可能公开与用户或帐户关联的信息。
  • 避免使用用户的同事或熟人可能知道与用户相关的信息。
  • 不要使用由弱组件组成的密码。
  • 添加用户(Debian和Ubuntu操作系统)

    对于Debian和Ubuntu?操作系统,请按照以下步骤添加用户:

  • 创建一个新用户并设置他们的密码:

    useradd{用户名}passwd{用户名}

  • 授予新用户sudo对系统特权操作的权限。此用户是远程登录和更改服务器的主要用户。

    使用以下方法之一sudo为用户实现权限。

    一个。运行以下命令将用户添加到admin用户组。

    usermod-aGadmin{username}

    或者,您可以修改sudoers文件以授予用户sudo权限。

    一个。以root身份运行以下命令以编辑用户权限列表:

    注意:在某些发行版中,系统将vi文本编辑器用于?visudo.?因为vi它不是一个用户友好的编辑器,您可能需要参考vi教程来寻求帮助。

    湾。在包含的行之后直接添加以下行rootALL=(ALL:ALL)ALL:

    {username}ALL=(ALL:ALL)ALL

  • 切换到新用户并通过使用sudo运行需要root访问权限的命令来测试他们的权限,例如以下命令:

    在执行命令之前,系统会提示您输入新用户的密码以进行验证。

  • root您还可以通过运行以下命令来验证您的用户是否可以提升到该帐户:

    如果您正确执行这些步骤,您的用户现在可以sudo访问并且可以提升权限。如果没有正确执行,当您尝试进行身份验证时,您会收到一条消息,指出用户不在sudoers文件中。

    添加用户(RedHat和CentOS)

    对于RedHat和CentOS?操作系统,请按照以下步骤添加用户:

  • 使用以下命令创建新用户adduser并设置用户密码passwd:

  • 授予新用户sudo对系统特权操作的权限。此用户是远程登录和更改服务器的主要用户。

    使用以下方法之一sudo为用户实现权限。

    一个。运行以下命令将用户添加到wheel组

    usermod-aGwheel{username}

    或者,您可以修改sudoers文件以授予用户sudo权限。

    注意:在某些发行版上,系统使用的文本编辑器?visudo是vi.?因为vi它不是一个用户友好的编辑器,您可能需要参考vi教程来寻求帮助。

    湾。在包含的行之后直接添加以下行?rootALL=(ALL:ALL)ALL:

  • 切换到新用户并使用sudo运行需要root访问权限的命令来测试他们的权限:

    在执行命令之前,系统会提示您输入新用户的密码以进行验证。

  • root您还可以通过运行以下命令来验证您的用户是否可以提升到该帐户:

    如果您正确执行了这些步骤,您的用户现在可以sudo访问并且可以提升权限。如果没有正确执行,当您尝试进行身份验证时,您会收到一条消息,指出用户不在sudoers文件中。

    生成SSH密钥对

    对于比使用密码更安全的登录方法,请创建一个SSH密钥对以与您之前创建的用户一起使用。这些说明适用于任何Linux发行版。

    注意:这些说明适用于Linux和macOS?桌面。如果您从Windows?桌面连接,请按照?使用SSHPUTTYgen生成RSA密钥?和?在Windows上使用SSH私钥登录中的说明生成和添加SSH密钥对。

  • 运行以下命令在本地Linux或Mac?计算机上生成密钥对:

    当询问将密钥保存在哪里时,请使用默认位置。添加密码是可选的并且更安全,但可能不方便。

    此操作创建两个文件。默认名称id_rsa用于您的私钥和id_rsa.pub公钥。

  • 在本地计算机上创建密钥对后,将公钥上传到您之前创建的用户的远程服务器。

    警告:请务必上传公钥,而不是私钥。

    ssh-copy-id-i~/.ssh/id_rsa.pub{username}@{remotePublicIPAddress}

  • 使用?ssh{username}@{remotePublicIPAddress}并运行以下命令连接到远程服务器,以验证没有添加您不期望的额外密钥:

    至此,您已经ssh-key为用户添加了密码验证。下一节将介绍有关如何禁用密码身份验证的可选步骤。

    LinuxSSH守护进程配置

    现在您有了一个具有sudo权限的新用户和一个SSH密钥对,您可以使用SSH守护程序(服务器)配置来提高安全性。

    注意:?仅适用于托管操作和RackConnect客户:为确保我们的自动化系统在需要时可以访问您的服务器,我们要求您不要更改SSH配置并跳到下一部分。当连接到您的服务器时,Rackspace支持团队以用户rack身份登录并在端口22上使用密码验证。此外,重建现有服务器或从快照构建新服务器需要您通过将PermitRootLogin选项设置为来启用root登录yes。如果您需要更改这些值,请与您的Rackspace支持团队成员交谈,以便以不影响我们为您提供FanaticalExperience?的能力的方式进行更改。

    本文其余部分的示例命令假定您以新用户身份登录,sudo用于执行特权操作。

    SSH配置选项

    本节介绍SSH配置文件中有助于提高安全性的常用选项。此信息用于稍后配置您的防火墙。本节仅概述了几个要更改的选项并描述了它们的作用。

  • PortXX:此选项是SSH守护程序侦听的端口(默认为22端口)。
  • PermitRootLogin:此标志启用(是)或禁用(否)通过SSH的root登录。默认情况下,此行被注释并允许root登录。
  • PubkeyAuthentication:此标志启用(是)或禁用(否)用于身份验证的SSH密钥。默认情况下,此行被注释并允许?ssh-key?访问。
  • PasswordAuthentication:此标志启用(是)或禁用(否)密码验证。默认情况下,启用此选项。
  • SSH默认使用端口22进行通信。root不良行为者在他们攻击的每台服务器上使用用户名尝试端口22。因此,通过SSH禁用root用户并将SSH更改为侦听非标准端口有助于防止违规。

    更改端口不会阻止确定的入侵者,但它确实会导致大多数SSH连接机会的表面扫描忽略您的服务器。同样,删除root用户的SSH访问权限会干扰通过SSH进行的随意暴力攻击。

    您还应该考虑在登录时使用哪种身份验证方法。默认情况下,所有Linux系统都使用密码身份验证。存在多种在服务器上执行身份验证的方法,但主要的两种方法是使用密码和SSH密钥。

    SSH密钥是成对生成的,一个是公共的,另一个是私有的,您只能将它们组合使用。您应该将私钥存储在您连接的计算机上的安全位置,并且永远不要将其泄露。您可以提供公钥,它是您放置在要连接的服务器上的密钥。当您建立连接时,本地计算机上的私钥通过算法运行,如果密钥对哈希与公钥匹配,则授予访问权限。

    修改sshd_config

    至此,您已经添加了一个具有sudo权限的新用户,创建了一个SSH密钥对,并上传了您的公共SSH密钥。您现在可以更改SSH配置文件以提高安全性。为此,您可以使用以下步骤将SSH更改为侦听自定义端口、限制通过SSH的root登录、启用公钥身份验证和禁用密码身份验证:

  • 打开SSH守护程序配置文件进行编辑:

    sudovim/etc/ssh/sshd_config

    注意:默认情况下,Port和PermitRootLogin行被注释掉,如开头的符号来取消注释关联行。此外,在禁用之前PasswordAuthentication,请确保您已配置SSH密钥,否则您将无法连接到服务器。

    PasswordAuthenticationyes

    PasswordAuthenticationno

    将2222替换为您要使用的端口。使用netstat确保新端口尚未被其他程序使用。

    重要提示:如前所述,?sshd_config如果您的服务器具有托管操作服务级别,则不应对文件进行此更改。这些更改可能会拒绝Rackspace访问您的服务器。

  • 通过运行以下命令来测试更改后的SSH配置是否存在错误:

    如果您没有收到错误,则SSH现在已配置为在自定义端口上运行,并且仅接受传递有效SSH密钥的非root用户。要应用和保留这些设置,您必须重新启动SSH服务。请不要重新启动服务。现在重新启动SSH可能会将您锁定在服务器之外,需要您使用救援模式或Web控制台来恢复配置。您必须在重新启动服务器之前配置防火墙。我们将在下一节讨论防火墙。

    修改软件防火墙并重启SSH

    注意:?RackConnect客户:要管理防火墙规则,请使用RackConnect管理而不是iptables在服务器上。如果您使用RackConnect,则不应更改SSH端口。有关防火墙和RackConnect的更多信息,请参阅?管理RackConnectv2.0网络策略。

    每个Linux发行版都使用不同的软件防火墙解决方案。在RedHatEnterpriseLinux(RHEL)和CentOS7中,默认防火墙是firewalld.?在基于Debian和Ubuntu的发行版上,默认的防火墙解决方案是简单防火墙(UFW)。对于RHEL和CentOS6,默认解决方案是iptables.?有关您服务器的操作系统,请参阅以下部分。

    Linux服务器安全最佳实践,linux服务器基础知识

  • 通过运行以下命令打开新的SSH端口:

    sudofirewall-cmd--permanent--remove-service=ssh

    sudofirewall-cmd--permanent--add-port=2222/tcp

    sudofirewall-cmd--reload

    替换2222为您用于SSH守护程序的端口。

  • sshd通过运行以下命令重新启动服务:

    sudosystemctlrestartsshd

  • 验证您的自定义SSH端口是否在服务器上打开:

    如果您按照这些步骤操作,您应该会看到类似于以下输出的内容:

    tcp000.0.0.0:22220.0.0.0:*LISTEN1341/sshd

    tcp600:::2222:::*LISTEN1341/sshd

    UBUNTU、DEBIAN和UFW

  • 通过运行以下命令打开新的SSH端口:

    替换2222为您用于SSH守护程序的端口。

  • sshd通过运行以下命令重新启动服务:

    sudosystemctlrestartsshd

  • 通过运行以下命令验证您的自定义SSH端口是否在服务器上打开:

    如果您按照这些步骤操作,您应该会看到类似于以下输出的内容:

    tcp000.0.0.0:22220.0.0.0:*LISTEN1341/sshd

    tcp600:::2222:::*LISTEN1341/sshd

    CENTOS6和IPTABLES

    注意:RHEL和CentOS6将于2020年11月被标记为生命周期结束。为了获得最佳安全实践,我们强烈建议您考虑使用更新的操作系统版本来托管您的应用程序或网站。

  • 通过运行以下命令打开新的SSH端口:

    sudoiptables-IINPUT-mstate--stateNEW-mtcp-ptcp--dport2222-jACCEPT

    sudoserviceiptables-save

    替换2222为您用于SSH守护程序的端口。

  • 运行以下命令重新启动SSH守护程序,以便守护程序应用您设置的新配置:

  • 通过运行以下命令验证您的自定义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?,请使用以下步骤:

  • 要fail2ban在您的服务器上安装,请运行以下命令之一。

    sudoapt-getinstallfail2ban

  • 使用以下命令复制您的默认fail2ban配置。新创建的文件会覆盖默认配置并允许您安全地修改文件。

    sudocp-pf/etc/fail2ban/jail.conf/etc/fail2ban/jail.local

  • 修改您的文件以在fail2ban.

    vim/etc/fail2ban/jail.local

    在此文件中,您可以设置以下选项:

  • ignoreip:此参数允许您指定不应禁止的任何IP地址。
  • bantime:此参数允许您指定禁止IP地址的秒数。
  • findtime:此参数检查maxretry指定时间内的触发器指示。
  • maxretry:此参数设置IP地址被禁止之前允许的重试次数。
  • 为SSH登录尝试创建一个jail文件。

    vim/etc/fail2ban/jail.d/sshd.local

  • 在创建的文件中,复制并粘贴以下文本:

    #action=firewallcmd-ipset

    这些选项会在24小时内通过SSH连接三次失败后禁止IP地址。如果您知道您的本地IP地址,我们强烈建议您在上一节中添加此IP地址作为ignoreip参数。

  • fail2ban使用以下命令在您的服务器上启动和启用:

    RHEL和CentOS7或Debian和Ubuntu:

    sudosystemctlstartfail2ban

    sudosystemctlenablefail2ban

    sudoservicefail2banstart

    入侵检测

    入侵检测系统(IDS)可以帮助管理员监控系统中的可疑活动和可能的漏洞。IDS比预防工具更强大,fail2ban但设置和维护起来可能更复杂。

    一个流行的开源IDS是OSSEC。OSSEC在多个系统上维护向主服务器报告的代理,即使该服务器已关闭,也允许调查来自潜在受损服务器的日志和警报。

    如果您怀疑系统已经受到威胁,您可以通过检查后门和入侵者?以及救援模式调查等程序进行调查。

    使您的操作系统保持最新(修补)

    使您的内核、包和依赖项保持最新非常重要,尤其是对于与安全相关的模块和包。某些更新(例如内核更新)需要您重新启动服务器。您应该将维护安排在对用户影响最小的时间进行,因为这些维护会导致短暂的停机时间。

    重要提示:虽然保持系统处于最新状态至关重要,但请确保您应用的更新不会对您的生产环境产生负面影响。

    要在Ubuntu操作系统和Debian上检查并安装更新,请运行以下命令:

    要在CentOS、RedHat和Fedora系统上检查和安装更新,请运行以下命令:

    操作系统报废

    了解您在服务器上运行的Linux发行版何时达到其生命周期结束(EOL)。当一个版本达到其EOL时,发行版的维护者不再支持它或通过他们的官方存储库提供包更新。您应该在当前版本达到其EOL之前计划好迁移到较新版本。

    使用以下链接了解您的Linux发行版何时设置为EOL:

  • Ubuntu操作系统:https://wiki.ubuntu.com/Releases
  • 红帽企业Linux(RHEL):https://access.redhat.com/support/policy/updates/errata/
  • CentOS:和红帽一样
  • Fedora:https://fedoraproject.org/wiki/End_of_life
  • Debian:https://wiki.debian.org/DebianReleases
  • 账户级安全

    尽管保护您的服务器是Internet操作的重要组成部分,但保护您的帐户也是必要的。您的帐户名、密码和API密钥是您与Rackspace云产品交互方式的重要组成部分。就像任何其他密码或访问凭据一样,您希望确保它们的安全。您还需要允许您的团队采取行动并执行必要的任务。

    通过使用?基于角色的访问控制(RBAC),您可以创建用户并向负责使用各种Rackspace服务的个人或应用程序授予权限。通过利用RBAC,您可以让您的团队和承包商仅访问他们需要的实用程序,并在必要时撤销访问权限。

  • 允许承包商设置您雇用他们创建的环境,但限制他们查看或更改任何信用卡信息或删除您的帐户的能力。
  • 允许您的会计师查看账单,但不要删除您的服务器。
  • 聘请数据库管理员(DBA)并授予DBA访问您的DBaaS实例的权限。
  • 允许客户将文件直接上传到您的CloudFiles帐户。
  • 配置您的服务器以注册和使用与您的管理员帐户分开的监控和备份代理的特定用户。
  • 标签:
    在领取和使用代金券时(使用代金券怎么做账)
    « 上一篇
    返回列表
    下一篇 »

    如本文对您有帮助,就请抽根烟吧!