从零开始渗透测试学习(八)

linux 的服务

SSH

SSH(Secure Shell)是一种网络协议,用于在网络上安全地进行远程登录和执行命令。它提供了对网络中的远程计算机进行安全访问和数据传输的加密功能。下面是关于Linux SSH服务的详细解释:

  1. SSH服务的作用:

    • 远程登录:通过SSH,用户可以从本地计算机远程登录到远程计算机,执行命令和操作远程计算机。

    • 文件传输:SSH还提供了安全的文件传输机制,可以通过SCP(Secure Copy)或SFTP(SSH File Transfer Protocol)协议传输文件。

    • 远程管理:管理员可以使用SSH连接到远程服务器,进行配置、管理和维护操作。

  2. SSH服务的工作原理:

    • 客户端和服务器:SSH由客户端和服务器组成。客户端是用于远程访问的本地计算机,而服务器是受控的远程计算机。客户端和服务器之间建立一个安全的连接。

    • 加密和身份验证:SSH使用加密算法来保护数据传输的隐私和完整性。它还支持多种身份验证方法,如基于密码、公钥和证书的身份验证。

    • 端口和配置:SSH默认使用22号端口进行通信。通过在SSH服务器上进行适当的配置,可以控制访问权限、身份验证方法和其他安全设置。

  3. 配置SSH服务:

    • 安装SSH服务器:在大多数Linux发行版中,默认安装了SSH服务器软件包。如果没有安装,可以使用包管理工具(如apt、yum或zypper)安装相应的软件包。

    • 配置文件:SSH服务器的配置文件通常位于/etc/ssh/sshd_config。你可以编辑该文件来修改服务器的行为,如更改监听端口、启用/禁用密码身份验证、配置密钥认证等。

    • 重启SSH服务:在修改配置文件后,通常需要重新启动SSH服务以使更改生效。可以使用命令systemctl restart sshd(基于systemd)或service ssh restart(基于SysV init)来重新启动SSH服务。

  4. SSH客户端和工具:

    • OpenSSH:OpenSSH是使用最广泛的SSH实现,包括SSH客户端和服务器组件,可以在大多数Linux发行版中找到。

    • SSH命令行工具:SSH客户端可以使用ssh命令在终端中与远程服务器进行交互。例如,ssh username@remotehost将使用用户名和远程主机地址建立SSH连接。

    • SCP和SFTP:SCP和SFTP是用于在SSH连接上安全传输文件的命令行工具。可以使用scpsftp命令进行文件传输操作,如复制文件、上传和下载文件等。

通过配置和使用SSH服务,用户可以方便地进行远程管理、远程访问和文件传输,并且得到了数据传输的安全保障。SSH在保护数据安全、远程管理和协作中发挥着重要的作用,是Linux系统的关键服务之一。

SSH远程连接

运行SSH命令:在终端中运行SSH命令以建立连接。SSH命令的基本语法是:

ssh <username>@<host>

其中<username>是目标主机的用户名,<host>是目标主机的IP地址或主机名。

例如,连接到远程主机example.com,用户名为user的帐户:

ssh user@example.com

如果使用非标准的SSH端口(默认为22),可以使用-p选项指定端口号:

ssh -p <port> <username>@<host>

例如,使用SSH连接到端口号为2222的远程主机:

ssh -p 2222 user@example.com

传输文件命令

SCP(Secure Copy)是一种基于SSH协议的安全文件传输工具。它允许用户在本地和远程系统之间进行文件传输,提供了加密和身份验证机制以确保数据传输的安全性。

使用SCP进行文件传输非常简单,以下是一些常用的SCP命令示例:

从本地系统发送文件到远程系统:

scp <本地文件目录> <username>@<主机ip>:<目标目录>

例如,将本地文件file.txt发送到远程主机example.com/home/user目录下:

scp file.txt user@example.com:/home/user

从远程系统复制文件到本地系统:

scp <远程用户名>@<ip>:<远程目录> <本地目录>

例如,从远程主机example.com复制文件remote_file.txt到本地目录/path/to/local

scp user@example.com:/path/to/remote_file.txt /path/to/local

从远程系统复制整个目录到本地系统:

scp -r <remote_user>@<ip>:<remote_directory> <local_directory>

例如,从远程主机example.com复制目录/home/user/files到本地目录/path/to/local

scp -r user@example.com:/home/user/files /path/to/local

指定不同端口号:

scp -P <port> <source> <destination>

例如,使用SCP通过SSH协议的端口2222传输文件:

scp -P 2222 file.txt user@example.com:/home/user

安装openssh

centOS kali 默认安装了ssh,可以通过以下命令查询

dpkg -l | grep openssh

使用公私钥登录

使用公钥/私钥对进行SSH登录可以实现更安全的身份验证,而不需要每次输入密码。下面是配置公钥/私钥登录的一般步骤:

 


ssh服务 通过 密码登录 流程

 

SSH通过公私钥登录流程

 

  1. 生成密钥对: 在本地计算机上生成公钥/私钥对。可以使用SSH客户端工具(如OpenSSH或PuTTY)来生成密钥对。使用以下命令生成OpenSSH密钥对:

    ssh-keygen -t rsa -b 2048
    ssh-keygen

    这将生成一个2048位的RSA密钥对,默认情况下将在~/.ssh目录下创建id_rsaid_rsa.pub文件。id_rsa是私钥,而id_rsa.pub是公钥。

  2. 在服务器中 修改配置

/etc/ssh/sshd_config

将内容修改为:

 

 

  1. 将公钥复制到目标服务器: 将您生成的公钥复制到目标服务器上的~/.ssh/authorized_keys文件中。可以使用以下命令将公钥复制到服务器:

    ssh-copy-id <username>@<ip>

    或者,如果您无法使用ssh-copy-id命令,可以手动将公钥复制到服务器上的authorized_keys文件。

  2. 设置正确的权限: 在目标服务器上,确保设置了正确的权限。运行以下命令可以确保权限设置正确:

    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
  3. 配置SSH客户端连接: 在本地计算机上,使用SSH客户端连接到目标服务器时,指定私钥文件的路径。例如:

    ssh -i /path/to/private_key <username>@<ip>

    这将使用指定的私钥进行身份验证,而无需输入密码。

通过配置公钥/私钥登录,您可以实现更便捷和安全的SSH连接,而无需每次输入密码。确保妥善保管私钥,并将公钥仅复制到受信任的服务器上以确保安全性。

openSSH加固

要加固 OpenSSH 的配置文件,可以采取一些安全措施来增加系统的安全性。下面是一些常见的措施:

关闭不必要的功能:配置SSH日志

在 OpenSSH 的配置文件 /etc/ssh/sshd_config 中,检查以下选项并将其设置为安全的值:

  • PermitRootLogin:禁止 root 用户直接远程登录。

    PermitRootLogin no
  • PasswordAuthentication:禁用密码身份验证,仅允许公钥身份验证。

    PasswordAuthentication no
  • PubkeyAuthentication:确保启用公钥身份验证。

    PubkeyAuthentication yes
  • PermitEmptyPasswords:禁止空密码登录。

    PermitEmptyPasswords no

在对这些选项进行更改之后,使用以下命令重新加载 SSH 配置:

sudo service ssh restart

使用限制: 使用 AllowUsersAllowGroupsDenyUsersDenyGroups 选项,仅允许特定用户或组进行远程登录。

例如,可以将 AllowUsers 选项设置为只允许特定用户登录:

AllowUsers user1 user2

vim /etc/ssh/sshd_config

 

重启

可进行调整

这个选项决定了我们在使用ssh连接 登录的时间

/etc/profile

在文件末尾添加

export TMOUT =10

使配置文件生效 soure /etc/proile

开启空口令登录

  1. 打开 SSH 配置文件 /etc/ssh/sshd_config

    sudo nano /etc/ssh/sshd_config

  2. 在配置文件中找到以下选项:

    #PermitEmptyPasswords no

    将该行取消注释(删除前面的 # 符号)并将其设置为 yes

    PermitEmptyPasswords yes

    这会允许用户使用空口令进行 SSH 登录。

  3. 保存并关闭文件。

  4. 重新加载 SSH 配置:

    sudo systemctl restart sshd

调式访问速度

SSH启动密码策略

/etc/login.defs 文件中,你可以进行一些密码策略相关的配置。虽然这个文件主要用于系统登录的设置,但其中包含了一些密码策略的配置选项。以下是一些常见的密码策略相关配置选项:

  1. 密码最小长度(PASS_MIN_LEN): 找到 PASS_MIN_LEN 配置项,并设置为所需的密码最小长度。示例:

    PASS_MIN_LEN 8

    以上示例将密码最小长度设置为 8 个字符。你可以根据需求设置不同的值。

  2. 密码过期时间(PASS_MAX_DAYS): 找到 PASS_MAX_DAYS 配置项,并设置为用户密码的最大使用天数。示例:

    PASS_MAX_DAYS 30

    以上示例将用户密码的最大使用期限设置为 30 天。密码将在达到该期限后过期。

  3. 密码更改提前通知(PASS_WARN_AGE): 找到 PASS_WARN_AGE 配置项,并设置为在密码过期之前多少天提供警告通知。示例:

    PASS_WARN_AGE 7

    以上示例将在密码过期前 7 天提供警告通知。

    4.PASS_MIN_DAYS 修改密码最小时间间隔

另一个文件

/etc/security/pwquality.conf 文件是一个配置文件,它用于定义密码策略的要求和限制。在这个文件中,你可以设置密码的复杂性要求,例如密码长度、字符类型、重复字符等。以下是一些常见的配置选项和其解释:

  1. minlenminlen 选项定义密码的最小长度。例如:

    minlen = 8

    以上示例将密码的最小长度设置为 8 个字符。

  2. dcreditdcredit 选项指定了使用数字(digits)的影响力,数字代表密码中的数字字符数量。该选项允许给予数字字符较高的权重。

    dcredit = -1

    以上示例将数字字符的影响力设置为 -1。

  3. ucreditucredit 选项指定了使用大写字母(uppercase)的影响力,即密码中的大写字母数量。同样,该选项允许给予大写字母较高的权重。

    ucredit = -1

    以上示例将大写字母的影响力设置为 -1。

  4. lcreditlcredit 选项指定了使用小写字母(lowercase)的影响力,即密码中的小写字母数量。同样,该选项允许给予小写字母较高的权重。

    lcredit = -1

    以上示例将小写字母的影响力设置为 -1。

  5. ocreditocredit 选项指定了使用其他字符(other)的影响力,即密码中的其他字符数量,如特殊字符。同样,该选项允许给予其他字符较高的权重。

    ocredit = -1

    以上示例将其他字符的影响力设置为 -1。

  6. maxrepeatmaxrepeat 选项定义了允许的最大字符重复次数。例如:

    maxrepeat = 3

    以上示例将允许的最大字符重复次数设置为 3 次。

  7. minclass= 定义密码必须满足同时有几何种字符

查看ssh日志

  1. Ubuntu/Debian

    • SSH 认证日志位于

      /var/log/auth.log

      文件中。您可以使用以下命令查看 SSH 日志:

      sudo cat /var/log/auth.log | grep ssh

      这将显示包含 “ssh” 关键词的所有日志条目。

  2. CentOS/RHEL

    • SSH 日志通常位于

      /var/log/secure

      文件中。您可以使用以下命令查看 SSH 日志:

      sudo cat /var/log/secure | grep ssh
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值