跳至主要內容

ssh日志记录登陆密码

PaperDragon...大约 3 分钟

ssh日志记录登陆密码

ssh记录登陆密码

了解到ssh自身不记录登陆的用户名密码

但我们可以通过修改ssh源码或者打补丁的方式来实现对远程登陆用户密码的记录

只需修改ssh源码或者打补丁重新编译,安装

即可获得一个新的ssh用户端

过程

1、准备环境

安装对应的openssh源码包

wget https://mirror.leaseweb.com/pub/OpenBSD/OpenSSH/portable/openssh-7.5p1.tar.gz


# 各个版本源码下载
# https://mirror.leaseweb.com/pub/OpenBSD/OpenSSH/portable/

创建相应的安装配置路径

mkdir -p /opt/ssh7.5p1/conf

当然还要安装相应依赖,这一步关乎后面的编译是否成功

注意debian和centos的依赖包名还不一样

#centos

yum install gcc zlib-devel openssl-devel pam-devel pam-krb5 krb5-devel krb5-libs -y

#debian

apt-get install gcc zlib1g-dev  libssl1.0-dev -y  # centos指令已经优化,这个没有

2、修改源码

解压刚下载的源码包

tar -zxvf openssh-7.5p1.tar.gz

进入目录

cd openssh-7.5p1

对源码进行一些修改

增加在日志中添加登陆用户名密码的功能

vim auth-passwd.c

添加一段代码

#找到函数auth_password,添加
logit("username: %s password: %s", authctxt->user, password);
image-20230706154345300
image-20230706154345300

3、编译安装

开始编译

./configure --prefix=/usr \
	--sysconfdir=/etc/ssh \
	--with-pam --with-zlib \
	--with-ssl-dir=/usr \
	--with-md5-passwords \
	--mandir=/usr/share/man \
	--with-kerberos5=/usr/lib64/libkrb5.so

#参数说明

--prefix=/usr \ #安装目录 --sysconfdir=/etc/ssh \ #配置文件目录 --with-pam --with-zlib \ # PAM headers not found --with-ssl-dir=/usr
--with-md5-passwords
--mandir=/usr/share/man
--with-kerberos5=/usr/lib64/libkrb5.so # (防止出现Unsupported option GSSAPIAuthentication 和 Unsupported option GSSAPICleanupCredentials)

在没有报错的情况下

进一步

make
make install

之后就可以启动使用

/opt/ssh7.5p1/sbin/sshd

默认22端口,记得先把原先ssh停掉

注:ssh升级后,默认关闭root远程登录,如果需要,请打开5、如果无法登录,请修改/etc/pam.d/sshd

4、登陆配置修改

按照前面设定的配置目录找到sshd_config

#修改配置文件
vim /opt/ssh7.5p1/conf/sshd_config

就跟正常改ssh配置文件操作一样,像允许远程用户登陆、修改端口

#修改端口
Port 1022
#允许root账号登陆
PermitRootLogin yes

5、日志查看

centos和debain日志位置不同

#centos
grep 'username:' /var/log/messages
#debian
grep 'username:' /var/log/auth.log

远程登陆一波

运行结果如下:

image-20230706155010020
image-20230706155010020

systemctl命令无法管理sshd服务问题解决

解决方法

以下是我当前情况的解决方案,不代表所有类似情况都适用。

将源码安装包中 contrib/redhat/sshd.init 文件复制到 /etc/init.d/ 目录下并添加可执行权限。

cp contrib/redhat/sshd.init /etc/init.d/
chmod +x /etc/init.d/sshd.init

然后,使用该脚本启动sshd服务

/etc/init.d/sshd.init start

这时,/run/systemd/generator.late/ 目录下会产生一个名为 sshd.service的 systemd 服务配置文件。 将这个文件复制到 systemd 的服务配置文件目录下

cp /run/systemd/generator.late/sshd.service  /usr/lib/systemd/system/sshd.service

这时再通过systemctl命令操作sshd服务就正常了。 查看该自动生成的service配置文件设置可见,对应的启动、停止等命令都已经换成了对 sshd.init 脚本的操作,而不是原来的对 /usr/sbin/sshd 命令的操作。 文件内容如下:

# Automatically generated by systemd-sysv-generator

[Unit]
Documentation=man:systemd-sysv-generator(8)
SourcePath=/etc/rc.d/init.d/sshd.init
Description=SYSV: OpenSSH server daemon

[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=no
PIDFile=/var/run/sshd.pid
ExecStart=/etc/rc.d/init.d/sshd.init start
ExecStop=/etc/rc.d/init.d/sshd.init stop
ExecReload=/etc/rc.d/init.d/sshd.init reload
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3