现在服务器的安全问题是越来越多,老的linux服务器系统所带的SSH存在一些漏洞,不及时更新,服务器将存在很大安全风险,刚好公司有台RHEL4的服务器需要更新下,把一些配置体会写下来。我下的几个包都比较新的,测试都能通过,但是有台机器在安装zlib的时候一直安装不上,后来换了个低版本的zlib-1.2.5.1.tar.gz顺利通过,安装过程还是比较顺利。

本次更新,操作系是Red Hat Enterprise Linux AS release 4 (Nahant)如果系统安装的时候没有安装开发包请按顺序安装以下软件包,
# rpm -ivh kernel-devel-2.6.9-5.EL.i686.rpm
# rpm –ivh cpp-3.4.3-9.EL4.i386.rpm
# rpm -ivh glibc-kernheaders-2.4-9.1.87.i386.rpm
# rpm -ivh glibc-headers-2.3.4-2.i386.rpm
# rpm -ivh glibc-devel-2.3.4-2.i386.rpm
# rpm -ivh gcc-3.4.3-9.EL4.i386.rpm
#  rpm -ivh libstdc++-devel-3.4.3-9.EL4.i386.rpm

一、安装 Zlib
1、下载最新版本 Zlib
Zlib 官方网站:http://www.zlib.net/
# cd /usr/local/src
2、编译安装 Zlib
# tar zxvf zlib-1.2.7.tar.gz
# cd zlib-1.2.7
# ./configure --prefix=/usr/local/zlib
# make
# make install
这样,就把 zlib 编译安装在 /usr/local/zilib 中了。
二、安装 OpenSSL
1、下载最新版本 OpenSSL
OpenSSL 的官方网站:http://www.openssl.org
# cd /usr/local/src
2、编译安装 OpenSSL
# tar zvxf openssl-1.0.1c.tar.gz
# cd openssl-1.0.1c
# ./config --prefix=/usr/local/openssl
# make
# make test(这一步很重要哦!是进行 SSL加密协议的完整测试,如果出现错误就要一定先找出哪里的原因,否则一味继续可能导致最终 SSH 不能使用,后果很严重哦!)
# make install
三、安装 OpenSSH
1、下载最新版本 OpenSSH
OpenSSH 的官方网站:http://www.openssh.com
# cd /usr/local/src
2、编译安装 OpenSSH
# tar -xf openssh-6.1p1.tar.gz
# cd openssh-6.1p1
# ./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解压目录
#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是否正确:
# ssh -v
如果看到了新的版本号就没问题啦!
  
在实践过程中,发现了如下问题:
1、提示Starting sshd:WARNING: initlog is deprecated and will be removed in a future release
根据国外的网站上面得到的信息是更改 initlog -c "$SNMPD $OPTIONS" && success || failure
 
为"$SNMPD $OPTIONS" && success || failure 也就是去掉前面的initlog -c 结果还是解决不了问题。
再查资料发现编译安装的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