Chinaunix首页 | 论坛 | 博客
  • 博客访问: 116180
  • 博文数量: 46
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 490
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-26 18:48
个人简介

在生存面前,那纯洁的理想,原来是那么脆弱不堪!

文章分类

全部博文(46)

文章存档

2018年(3)

2017年(6)

2016年(15)

2015年(10)

2014年(11)

2013年(1)

我的朋友

分类: 系统运维

2018-07-02 19:21:46

  某盟的漏扫工具,按照软件版本匹配漏洞规则,即使你使劲的apt upgrade/ yum update,最后还是会在报告中说存在漏洞,例如:
经过最新update,线上版本已经是

然而漏扫报告依然显示:
以前的所有版本被一棍子打死了,懒得去扯皮,直接升了吧

1,准备步骤:(简略)
  1. #安装openssl 库
  2. apt-get install libssl-dev

  3. #安装zlib库
  4. apt-get install libz-dev

  5. #下载openssh源码
  6. wget https://cloudflare.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.7p1.tar.gz

  7. #解压
  8. tar xfz openssh-7.7p1.tar.gz

  9. # 进入目录
  10. cd openssh-7.7p1

  11. #配置安装路径,并生成makefile文件
  12. ./configure --prefix=/usr/local/openssh/

2,安装出错:
    如果使用默认的源码,make install 安装到Ubuntu16.04,在使用systemd管理sshd时,你会发现,启动命令会卡起,稍后用systemctl 查看status发现卡在正在启动的阶段,如:
检查后台日志会发现下面两行
  1. -- Unit ssh.service has begun shutting down.
  2. Jul 02 18:20:04 TMgmt-comm-075 sshd[31018]: Received signal 15; terminating.
  3. Jul 02 18:20:04 TMgmt-comm-075 systemd[1]: Stopped OpenBSD Secure Shell server.
然而,你去查看进程,却发现进程已经启动,并且已经监听22端口,且能正常连接;

解释: 出现命令挂起的原因就是 sshd在启动完成后,没有给systemd发消息,systemd就一直在那傻等,所以下面我们就修改源码,添加消息;

3,源码修改:
  在openssh-7.7p1目录下,找sshd.c这个主函数文件,找到调用server_accept_loop 这个函数的行,注意这个函数的定义也在这个文件,不要找错了!
加一行代码,效果如下:
  1.                 /* Signal systemd that we are ready to accept connections */
  2.                 sd_notify(0, "READY=1");

  3.                 /* Accept a connection and return in a forked child */
  4.                 server_accept_loop(&sock_in, &sock_out,
  5.                     &newsock, config_s);
  6.         }
  相应的,在源文件开头几行添加引用头文件:
  1. #include <systemd/sd-daemon.h>

4,编译,安装
由于默认的依赖中,不包含sd_notify 这个函数,所以还需要安装依赖的包
  1. apt-get install libsystemd-dev
编译时还需要在makefile中指明,编辑文件:Makefile ,找到变量 LIBS,修改如下:
  1. LIBS=-lcrypto -ldl -lutil -lz -lcrypt -lresolv -lsystemd
下面就可以直接编译,安装
  1. make -j4 & make install

5,用systemd管理:
在ubuntu16.04 下,你需要修改systemd服务配置文件:/etc/systemd/system/sshd.service
修改如下:
  1. ExecStart=/usr/local/openssh/sbin/sshd -D $SSHD_OPTS
  2. #ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
重新加载,并启动:
  1. systemctl daemon-reload
  2. systemctl start ssh

参考链接:
https://unix.stackexchange.com/questions/313080/infinite-activating-state-for-custom-build-openssh-hpn-sshd-on-ubuntu-16
https://stackoverflow.com/questions/38302883/c-undefined-reference-to-sd-notify
https://salsa.debian.org/ssh-team/openssh/commit/fe97848e044743f0bac019a491ddf0138f84e14a




阅读(90) | 评论(0) | 转发(0) |
0

上一篇:Ldap命令行管理用户

下一篇:没有了

给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册