编译openssh
❶ linux-SSL和SSH和OpenSSH,OpenSSL有什么区别
ssl是通讯链路的附加层。可以包含很多协议。https, ftps, .....
ssh只是加密的shell,最初是用来替代telnet的。通过port forward,也可以让其他协议通过ssh的隧道而起到加密的效果。
SSL是一种国际标准的加密及身份认证通信协议,您用的浏览器就支持此协议。SSL(Secure Sockets Layer)最初是由美国Netscape公司研究出来的,后来成为了Internet网上安全通讯与交易的标准。SSL协议使用通讯双方的客户证书以及CA根证书,允许客户/服务器应用以一种不能被偷听的方式通讯,在通讯双方间建立起了一条安全的、可信任的通讯通道。它具备以下基本特征:信息保密性、信息完整性、相互鉴定。 主要用于提高应用程序之间数据的安全系数。SSL协议的整个概念可以被总结为:一个保证任何安装了安全套接字的客户和服务器间事务安全的协议,它涉及所有TC/IP应用程序。
SSH的英文全称是Secure SHell。通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的“通道”。SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。OpenSSH 2.x同时支持SSH 1.x和2.x。SSH的安全验证是如何工作的从客户端来看,SSH提供两种级别的安全验证。第一种级别(基于口令的安全验证)只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。第二种级别(基于密匙的安全验证)需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在你在该服务器的家目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒。
OpenSSL------一个C语言函数库,是对SSL协议的实现。
OpenSSH-----是对SSH协议的实现。
ssh 利用 openssl 提供的库。openssl 中也有个叫做 openssl 的工具,是 openssl 中的库的命令行接口。
从编译依赖上看:
openssh依赖于openssl,没有openssl的话openssh就编译不过去,也运行不了。
HTTPS可以使用TLS或者SSL协议,而openssl是TLS、SSL协议的开源实现,提供开发库和命令行程序。openssl很优秀,所以很多涉及到数据加密、传输加密的地方都会使用openssl的库来做。
可以理解成所有的HTTPS都使用了openssl。以root身份执行命令:grep -l 'libssl.*deleted' /proc/*/maps | tr -cd 0-9\\n | xargs -r ps u,可以看到哪些进程加载了老版本的openssl库。
❷ 为什么在linux环境下安装openssh时make不成功
make是linux下编译安装软件的三个步骤 ./configure、make、make
install中的第2步。这种安装,三个步骤是相关的。第一步不成功,第二步是不能进行的。操作不成功,看看前一步有没有error或者是错误。如果没
有,再看看make 这一步执行后,屏幕显示上有没有error或者是错误。
根据屏幕上的error提示网络一下具体解决方案。
❸ openssh漏洞
为了系统的安全加固,一般都会将openssh服务升级到最新版本,其中包括ssh、scp、sftp等服务。
笔者在升级的时候遇到了好多坑,现做一下整理。网上有好多关于升级openssh服务的介绍,大都不是很全,或多或少有问题,或是系统版本不同,或是安装方式不同,或是服务版本不同。在这里,笔者主要针对编译安装的方式来介绍。
基础环境准备:
首先打开两个或以上的shell连接,因为在升级过程中如果升级失败会导致不发新建shell连接;
官方网站下载最新版*.tar.gz安装包:https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-7.7p1.tar.gz
注意:要下载p1版,此版为编译安装包。
在安装之前先记下sshd.pid路径,因为在启动文件sshd中要更改此路径。
将安装包先传入服务器中;
卸载现有版本openssh:rpm -e `rpm -qa |grep openssh`
删除/etc/ssh/下所有文件,在卸载完openssh后此路径下文件不会删除,需手动删除;
安装依赖:zlib-devel、openssl-devel、gcc、gcc-c++、make等
编译安装openssh:
./configure --prefix=/usr/ --sysconfdir=/etc/ssh/ --with-ssl --with-md5-passwords mandir=/usr/share/man/
make && make install
删除/etc/ssh/下的密钥对,rm -f /etc/ssh/ssh_host_* (只删除密钥对即可,在重启的时候会重新生成)
复制启动文件至/etc/init.d/
cp contrib/redhat/sshd.init /etc/init.d/sshd
修改启动文件:vim /etc/init.d/sshd,将PID_FILE路径改为原来的sshd.pid的路径
重启sshd服务即可。
至此openssh服务升级完成,将sshd服务添加到开机启动即可。
此版本openssh的配置文件默认是没有开启root登录权限的,想要开启权限可以修改配置文件/etc/ssh/sshd_config
注:在解压目录~/openssh-7.7p1/contrib中有多个系统版本的启动文件,
如:aix、cygwin、hpux、redhat、suse等,如果此处没有你所安装的系统版本可以根据redhat版本的启动文件来修改相关内容,前文讲到的记录sshd.pid路径的原因就在此。
另外,安装目录为/usr/,因为在启动文件中有关于SSHD的路径,此安装目录默认为redhat启动文件的路径
如果变更了安装路径,启动文件的此路径也要变更。
❹ Openssh升级漏洞修复
0.前言
公司采用三方漏洞扫描时发现大量openssh漏洞,最终修复漏洞方案为将openssh升级到官方最新版本。
操作系统: Centos7.2
网络状况: 可以访问外网
Openssh版厅燃本: OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013
修改配置文件/etc/xinetd.d/telnet 将里面的”disable= yes”改成” disable=no” ,修改后结果
在/etc/securetty文件末尾增加一些pts终端,直接加在末尾就可以了
防火墙开启23号端口,好世当然也可以直接关闭防友伏肢火墙 ,这里选择关闭防火墙
或修改配置文件,永久生效。
(4)安装依赖包
4.2 换成telnet登录服务器
其换成telnet登录服务器,更新过程ssh连接会断,导致无法连接
4.3 安装Openssl步骤
(1)替换会被备份的文件
(2)解压软件包并且进入目录进行编译
(3)创建软连接
(4)验证文件
(5)修改配置文件
5.2 安装步骤
(1)解压压缩包
(2)修改目录权限
(3)备份会替换的文件
(4)执行编译安装
(5)修改配置文件
(6)文件替换
(7)添加开机自启动
(8)重启ssh
注意:在运行这个脚本的时候备份文件必须要是/back_up/backup.tgz,如果备份的时候叫其他名称,请自行修改脚本。还有脚本不能运行为前台且跟终端相关进程,因为经测试发现在还原的时候ip会被冲掉。所以远程连接会断掉
最后需要注意的是执行脚本会重启机器
❺ linux ssh 鍗囩骇瀹夎呮柟娉
涓銆佸畨瑁 Zlib
1銆佷笅杞芥渶鏂扮増链 Zlib
Zlib 瀹樻柟缃戠珯锛http://www.zlib.net/
# cd /usr/local/src
# wget -c http://www.zlib.net/zlib-1.2.3.tar.gz
2銆佺紪璇戝畨瑁 Zlib
# tar xzvf zlib-1.2.3.tar.gz
# cd zlib-1.2.3
# ./configure --prefix=/usr/local/zlib
# make
# make install
杩欐牱锛屽氨鎶 zlib 缂栬疟瀹夎呭湪
/usr/local/zilib 涓浜嗐
浜屻佸畨瑁 OpenSSL
1銆佷笅杞芥渶鏂扮増链 OpenSSL
OpenSSL 镄勫畼鏂圭绣绔欙细http://www.openssl.org
# cd /usr/local/src
# wget -c http://www.openssl.org/source/openssl-0.9.8d.tar.gz
2銆佺紪璇戝畨瑁 OpenSSL
# tar xzvf openssl-0.9.8d.tar.gz
# cd openssl-0.9.8d
# ./Configure --prefix=/usr/local/openssl
# make
# make test(杩欎竴姝ュ緢閲嶈佸摝锛佹槸杩涜 SSL锷犲瘑鍗忚镄勫畬鏁存祴璇曪纴濡傛灉鍑虹幇阌栾灏辫佷竴瀹氩厛镓惧嚭鍝閲岀殑铡熷洜锛屽惁鍒欎竴锻崇户缁鍙鑳藉艰嚧链缁 SSH 涓嶈兘浣跨敤锛屽悗鏋滃緢涓ラ吨鍝!)
# make install
涓夈佸畨瑁 OpenSSH
1銆佷笅杞芥渶鏂扮増链 OpenSSH
OpenSSH 镄勫畼鏂圭绣绔欙细http://www.openssh.com
# cd /usr/local/src
# wget -c ftp://ftp.it.net.au/mirrors/OpenBSD/OpenSSH/portable/openssh-4.5p1.tar.gz
2銆佺紪璇戝畨瑁 OpenSSH
# tar xzvf openssh-4.5p1.tar.gz
# cd openssh-4.5p1
# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/openssl --with-md5-passwords
(娉ㄦ剰锛屽傛灉 configure 镞舵彁绀 PAM 链夐敊璇锛岄偅涓鑸鏄锲犱负绯荤粺涓娌℃湁瀹夎 pam-devel RPM 鍖咃纴镓惧埌瀹夎呭厜鐩桡纴瀹夎 pam-devel 灏卞彲浠ヨВ鍐冲暒)
# make
# make install
杩欐牱灏卞畬鎴愪简鏁翠釜瀹夎 SSH 镄勫伐浣滐纴鍦ㄥ畨瑁呭畬鎴愬悗锛屾垜浠杩橀渶瑕佷慨鏀逛竴涓 OpenSSH 镄勯厤缃鏂囦欢杩涗竴姝ユ彁鍗囧畨鍏ㄦс傞氲繃浠ヤ笂姝ラゅ畬鎴愮殑瀹夎呭伐浣滐纴OpenSSH 镄勯厤缃鏂囦欢鍦 /etc/ssh 涓嬶纴鍏朵腑 SSH Server 镄勯厤缃鏂囦欢鏄 sshd_config銆
# vi /etc/ssh/sshd_config
镓惧埌锛
CODE:
#Protocol 2,1淇鏀逛负锛
Protocol 2杩欐牱灏辩佺敤浜 ssh v1 鍗忚锛屽彧浣跨敤镟村畨鍏ㄧ殑 ssh v2 鍗忚銆
X11Forwarding yes淇鏀逛负锛
X11Forwarding no绂佺敤 X11 杞鍙戙
淇鏀瑰悗淇濆瓨阃鍑恒
鈼 鐢熸垚ssh链嶅姟绠$悊鑴氭湰
杩涘叆ssh瑙e帇鐩褰
#cd /contrib/redhat
#cp sshd.init /etc/init.d/sshd
#chmod +x /etc/init.d/sshd
#chkconfig --add sshd
链钖庯纴钖锷 SSH 链嶅姟浣夸慨鏀圭敓鏁堬细
# /etc/init.d/sshd restart
閲嶅惎钖庣‘璁や竴涓嫔綋鍓岖殑 OpenSSH 鍜 OpenSSL鏄钖︽g‘锛
# ssh -v
濡傛灉鐪嫔埌浜嗘柊镄勭増链鍙峰氨娌¢梾棰桦暒锛
镫镊绛夊緟琛ュ厖锛
鍦ㄥ疄璺佃繃绋嬩腑锛屽彂鐜颁简濡备笅闂棰桡细
1銆佹彁绀篠tarting sshd:WARNING: initlog is deprecated and will be removed in a future release
镙规嵁锲藉栫殑缃戠珯涓婇溃寰楀埌镄勪俊鎭鏄镟存敼 initlog -c "$SNMPD $OPTIONS" success || failure
涓"$SNMPD $OPTIONS" success || failure 涔熷氨鏄铡绘帀鍓嶉溃镄刬nitlog -c 缁撴灉杩樻槸瑙e喅涓崭简闂棰樸
鍐嶆煡璧勬枡鍙戠幇缂栬疟瀹夎呯殑ssh鍦ㄥ惎锷ㄦ湇锷$殑镞跺 闇瑕佹洿鏀规枃浠惰矾寰勮屼笖涓瀹氭敞镒忎慨鏀硅矾寰勶纴涓岖劧鎶ラ敊銆
#[ -f /etc/sysconfig/sshd ] . /etc/sysconfig/sshd
KEYGEN=/usr/local/bin/ssh-keygen
SSHD=/usr/local/sbin/sshd
RSA1_KEY=/usr/local/etc/ssh_host_key
RSA_KEY=/usr/local/etc/ssh_host_rsa_key
DSA_KEY=/usr/local/etc/ssh_host_dsa_key
璇峰ぇ瀹舵牴鎹镊宸辩殑瀹为檯𨱍呭喌镟存敼锛侊紒
❻ centos7 编译安装完openssh 7.5,连接出现异常
selinux 端口允许了吗?
yum install policycoreutils-python
semanage port -l |grep ssh
semanage port -a -t ssh_port_t -p tcp 端口号
systemctl restart sshd.service