SSH广泛用于安全访问Linux服务器。大多数用户使用默认设置的SSH联接来联接到远程服务器。但是android linux,不安全的默认配置也会带来各类安全风险。
具有开放SSH访问的服务器的root账户可能会面临风险。非常是假如您使用公共IP地址,破解root密码就更容易。为此,了解SSH安全是必要的。
以下是怎样在Linux上构建SSH安全联接的方式。
1、禁用root用户登入
首先,禁用root用户的SSH访问并创建具有root特权的新用户。关掉root用户的服务器访问是一种防御策略,可避免功击者达到入侵系统的目的。诸如linux rar,您可以创建名为exampleroot的用户,如下所示:
useradd-mexampleroot
passwdexampleroot
usermod-aGsudoexampleroot
以下是上述命令的简略解释:
useradd命令用于创建新用户,-m参数会在home目录下为所创建的用户创建一个文件夹。
passwd命令用于给新用户分配密码。请记住,分配给用户的密码应当是复杂的、难以推测的密码。
usermod-aGsudo将新创建的用户添加到管理员组。
在创建用户后,须要对sshd_config文件进行一些修改。您可以在/etc/ssh/sshd_config找到此文件。使用任何文本编辑器打开该文件并进行以下修改:
#Authentication:
#LoginGraceTime2m
PermitRootLoginno
AllowUsersexampleroot
PermitRootLogin参数可以避免root用户使用SSH获得远程访问权限。将exampleroot包含在AllowUsers列表中授予用户必要的权限。
最后,使用以下命令重启SSH服务:
sudosystemctlrestartssh
假如失败并收到错误消息,请尝试下边的命令。这可能因您使用的Linux发行版而异。
sudosystemctlrestartsshd
2、更改默认SSH端口
默认的SSH联接端口是22。其实,所有功击者都晓得这一点,因而须要修改默认端标语以确保SSH安全性。其实功击者可以使用Nmap扫描轻松找到新端标语,但这儿的目标是使功击者的工作愈加困难。
要修改端标语,请打开/etc/ssh/sshd_config并对文件进行以下修改:
Include/etc/ssh/sshd_config.d/*.conf
Port5922
完成此步骤后,再度使用sudosystemctlrestartssh命令重启SSH服务。如今,您可以使用刚定义的端口访问服务器。
倘若您正在使用防火墙,则必须在哪里进行必要的规则修改。运行netstat-tlpn命令,您可以看见SSH的端标语已修改。
3、禁止使用空密码登入
在您的系统上可能存在没有密码的用户,这可能是您不留神创建的。为了避免这样的用户访问服务器,您可以将sshd_config文件中的PermitEmptyPasswords行值设置为no。
PermitEmptyPasswordsno
4、限制登陆/访问尝试次数
默认情况下,您可以使用任意多的密码尝试来访问服务器。并且,功击者可以借助此漏洞对服务器进行暴力破解。
您可以通过在sshd_config文件手指定容许的密码尝试次数来手动中止SSH联接。
因此,请修改MaxAuthTries值。
MaxAuthTries3
5、使用SSHVersion2
SSHVersion2的发布是由于第一版存在许多漏洞。默认情况下,您可以通过将Protocol参数添加到您的sshd_config文件中来启用使用SSHVersion2。
这样,您所有未来的联接都将使用SSH2。
Include/etc/ssh/sshd_config.d/*.conf
Protocol2
6、关闭TCP端口转发和X11转发
功击者可以通过SSH联接进行端口转发,尝试获取访问您其他系统的权限。为了避免这些情况发生,您可以在sshd_config文件中关掉AllowTcpForwarding和X1111Forwarding功能。
X11Forwardingno
AllowTcpForwardingno
7、使用SSH秘钥联接
联接到服务器最安全的方式之一是使用SSH秘钥。使用SSH秘钥,您可以无需密码访问服务器。据悉,您可以通过修改sshd_config文件中的与密码相关的参数来完全关掉服务器的密码访问。
创建SSH秘钥时fedora 禁止root登录,有两个秘钥:私钥和公钥。私钥上传到您要联接的服务器,公钥存贮在使用该秘钥进行联接的计算机上。
在计算机上使用ssh-keygen命令创建SSH秘钥。不要留空Passphrase数组,并记住您在此输入的密码。
倘若您留空该数组,则只能通过SSH秘钥文件进行访问。并且,假如设置了密码,您可以避免拥有秘钥文件的功击者访问它。
比如,您可以使用以下命令创建SSH秘钥:
ssh-keygen
8、SSH联接的IP限制
大多数情况下,防火墙使用其标准框架制止访问并致力保护服务器。并且,这并不总是足够的,您须要降低此安全性潜力。
要做到这一点,请打开/etc/hosts.allow文件。通过在此文件中进行添加,您可以限制SSH权限,准许特定IP块或输入单个IP并使用拒绝命令制止所有其余IP地址。
下边是一些示例设置。完成这种操作后,像往常一样重新启动SSH服务以保存修改。
IP-Restriction-for-SSH-Connection-1
9、有选择地容许用户和组访问
您可以配置sshd配置文件以有选择地准许或严禁用户和组从SSH登入到您的服务器。默认情况下,所有用户和组都容许访问。当您管理不应由除这些具有适当权限的人以外的任何人访问的生产服务器时,这是一种安全风险。
以下是您须要添加以容许/拒绝用户和组访问SSH的行:
AllowUsers:usernamesshuser@ip:port
AllowGroups:groupname
DenyUsers:username1username2sshuser@ip:port
DenyGroups:groupname
10、设置空闲超时时间间隔
假如一个受信任的用户离开她们的桌面未经注销,这么拥有她们笔记本访问权限的对手可以借助这一点,在缺席或不活动的受信任用户的情况下对服务器进行恶意操作。
抵挡这些情况的最简单方式是设置一个空闲超时时间间隔。在定义的一段不活动时间后,服务器将中止与用户的SSH联接,以避免在缺席或不活动的情况下未经授权的访问。
以下是您须要添加到ssh配置文件中以开启此设置的行:
ClientAliveInterval120
按照配置文件中发出的命令,经过120秒的不活动时间后,联接将被中止。您可以修改数字以适应自己的喜好。
12、添加Banner警告语言
其实这不是一种主动的安全举措,但添加Banner警告语言可以是一种有用的心理策略,用于避免不受欢迎的访客,并在她们企图以恶意意图联接到您的服务器时使对手处于不利位置。
要添加自定义Banner警告语言,请首先仔细打算条幅的文本或从互联网上抓取一个通用的文本文件fedora 禁止root登录,之后将以下行添加到您的配置文件中:
Banner/path/to/banner/banner.txt
12、强制使用强悍的MAC算法
在SSH的上下文中,MAC代表消息认证码。MAC是一种加密算法,用于验证和确认顾客端与服务器之间的数据传输。
设置强悍的MAC算法十分重要,以确保数据的完整性和保密性,这是网路安全的两个关键支柱。以下是您须要在配置文件中添加的行:
Banner/path/to/banner/banner.txt
13、将LogLevel设置为监视SSH活动
您可以监视SSH活动的不同详尽程度。默认情况下,此功能可能已关掉。建议您打开此功能,并将其设置为基本日志记录级别-INFO,该级别仅记录用户的错误、消息、密钥验证、登录和注销活动。
倘若您乐意,可以将其修改为更详尽的级别,比如VERBOSE或DEBUG。以下是您须要在sshd配置文件中添加的行:
LogLevelINFO
如今,您的SSH服务器将生成基本日志数据,您可以通过导航到并读取基于Debian/Ubuntu的机器上的/var/log/auth.log*文件和基于RHEL/CentOS/Fedora的机器上的/var/log/secure文件来阅读此日志数据。
您可以查看整个日志文件并导航到带有sshd的部份,或则使用grep命令过滤内容并仅阅读sshd日志。
Linux服务器安全的重要性
数据和数据安全问题十分详尽,所有服务器管理员都应考虑。服务器安全是十分敏感的问题,由于功击的主要焦点是Web服务器,它们包含有关系统的几乎所有信息。
因为大多数服务器运行在Linux基础构架上,因而熟悉Linux系统和服务器管理极其重要。
SSH安全仅是保护服务器的一种形式。您可以通过停止、阻止或延缓功击来将所遭遇的损害最小化。除提供SSH安全外,还可以施行许多不同的方式来保护您的Linux服务器。
谢谢Linux迷的精彩分享。
须要Linux精致艺术墙纸的同学请加小编陌陌linuxgs(口令墙纸)。
来自:Linux迷