RedHat 5 OpenSSHサービスのアップグレード

9154 ワード

脆弱性の改善はOpenSSHサービスのアップグレードに関連し、サーバはイントラネットでyumソースを使用できないなどである.本番環境なので、気軽に試してはいけません.以下の内容は、ローカル仮想マシンのシミュレーションを何度も行った後にまとめられています.もちろん、最終的には本番環境サーバSSHもアップグレードに成功しました.踏んだ穴を一緒に目撃せよ!!! rootを使用して操作するのは懸念されていないはずです.  ソースコードを使用してインストールをコンパイルし、rpmパッケージのインストールをサボりたいのですが、適切なパッケージと適切なチュートリアルが見つかりません.
の準備を
  • OpenSSH現在の最新版7.3p1公式サイトをダウンロードします.http://www.openssh.com/英語が下手で、初めてのアクセスでソースパッケージのダウンロードアドレスが見つかりませんでした.左侧でその中のFor other OS'sを见つけてLinux时に入って更に下に引いて见つけて、1つの适切なダウンロードの空间を探して中に入って最新版をダウンロードすることができます.ここではopenssh-7.3 p 1.tar.gz
  • のバージョンのダウンロードリンクを直接提供します.
  • システムが古いため、デフォルトのパッケージの多くは更新または新規インストールが必要です.次のチュートリアルのインストールで
  • をさらに説明します.
    構成とインストール
    解凍
    tar -zxvf openssh-7.3p1.tar.gz
    cd openssh-7.3p1
    

    インストールディレクトリのコンパイル
    pwd
    

     これが私のインストールディレクトリ/root/UpdateSSH/openssh-7.3p1です.これからコンパイルするたびにこのディレクトリで完了します.次のスクリプトの./configureの前にcd /root/UpdateSSH/openssh-7.3p1が必要です.
    コンパイル
    ここでは経験に基づいてコンパイル構成を使用します
    ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --with-md5-passwords
    

    以前は--with-pamも追加されていましたが、新版ではこの構成は必要ないことがわかりました.また、対応する依存パッケージをインストールする必要がある場合は、いっそ要らないので、面倒を省くことができます.** **ログは次のとおりです(直接成功した場合は、インストール手順に直接ジャンプしておめでとうございます)
    checking for gcc... no
    checking for cc... no
    checking for cl.exe... no
    configure: error: no acceptable C compiler found in $PATH
    See 'config.log' for more details.
    

    問題は明らかで、gccはありません.ネットワークが正常であれば、すぐにyum install gccがこの問題を修復します.残念ながら、サーバーはパブリックネットワークを使用できません.最も直接的な解決策は、インストールディスクを見つけて対応するRPMインストールパッケージと依存パッケージを見つけることです(私は以下のスクリプトを使用してインストールしています.インストール順序に注意してください).
    rpm -Uvh kernel-headers-2.6.18-164.el5.i386.rpm
    rpm -Uvh glibc-headers-2.5-42.i386.rpm
    rpm -Uvh glibc-devel-2.5-42.i386.rpm
    rpm -Uvh libgomp-4.4.0-6.el5.i386.rpm
    rpm -Uvh gcc-4.1.2-46.el5.i386.rpm
    

    ここでは、上記のパッケージをインストールする必要がある理由を説明する必要があります.なぜなら、gccをインストールすることで、インストール中にエラーが発生し、エラー情報に基づいて依存関係を見つけることができるからです.インストールディスクがない場合は、他のインターネットデバイスを使用してRPMパッケージを事前にダウンロードすることができ、ミラーステーションにアクセスしてダウンロードを探すことができます.ここでは、RPMインストールパッケージを取得します.今回のテスト環境はRedHatですが、ミラーソースはありません.まずCentOSソースを使用して、システムがどのバージョンなのかを確認し、対応するバージョンに応じてインストールパッケージをダウンロードする必要があります.
    lsb_release -a
    

    ここでテスターのバージョン5.4なので、ダウンロードされたパッケージにはel5が含まれているはずです.端末でオペレーティングシステムのビット数を検索し続ける必要があります.
    getconf LONG_BIT
    

    ここで調べたシステムビット数は32ビットなので、ダウンロードしたパッケージにはi386が含まれているはずです. だからここでパッケージをダウンロードすることに対応します.このときピットが現れ、ミラーステーションは最新版5.11対応のrpmパケットしか提供していないが、私のここのシステムバージョンは5.4ダウンロードしたパケットインストールにはすべての依存関係のパケットをすべて更新する必要がある(個人的にはシステムを更新することに相当すると思う)やはり直接インストールパッケージIOSファイルの中で対応するRPMパッケージを探して比較的に実際に私のここで採用したのは直接インストールディスクで対応するrpmパッケージを見つけてインストールします.(サーバのストレージ容量が新しいマウント後にインストールディスクのすべてのrpmパケットをサーバのハードディスクに直接格納するのに十分であれば、必要に応じて直接使用できます)** **インストールディスクにRPMパッケージをインストールする方法で解決
  • マウントインストールCD
  • は、パッケージが存在するディレクトリ
  • に切り替える.
    cd /media/RHEL_5.4\ i386\ DVD/Server/
    
  • 対応するパッケージ
  • をインストールする.
    rpm -Uvh kernel-headers-2.6.18-164.el5.i386.rpm
    rpm -Uvh glibc-headers-2.5-42.i386.rpm
    rpm -Uvh glibc-devel-2.5-42.i386.rpm
    rpm -Uvh libgomp-4.4.0-6.el5.i386.rpm
    rpm -Uvh gcc-4.1.2-46.el5.i386.rpm
    
  • 間違いなく
  • にインストールされました.
    gcc -v
    
    gccのインストールに成功しました.バージョンは4.1.2です.
    再コンパイル1
    ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --with-md5-passwords
    

    ** **ログは次のとおりです(直接成功した場合は、インストール手順に直接ジャンプしておめでとうございます).
    ......(  )
    checking for zlib.h... no
    configure: error: *** zlib.h missing - please install first or check config.log ***
    

    問題は明らかで、zlibはありません.ネットワークが正常であれば、すぐにyum install zlibがこの問題を修復します.(ここではコンパイルパラメータ--with-zlibを削除してみますが、この方法では検証されていません)残念ながらサーバはパブリックネットワークを使用できません.最も直接的な解決策は、インストールディスクを見つけて対応するRPMインストールパッケージと依存パッケージを見つけることです(私は以下のスクリプトを使用してインストールしています.インストール順序に注意してください).
    rpm -Uvh zlib-1.2.3-3.i386.rpm
    rpm -Uvh zlib-devel-1.2.3-3.i386.rpm
    

    ** **ディスクをインストールしてRPMパッケージをインストールする方法は上記のようにgccをインストールする方法と一致しています.ここではこの方法を使用しません.ソースコードのコンパイルインストール(gccコンパイル環境があるので、コンパイルインストールできます)を採用してzlibサイトで最新のソースコードのインストールパッケージzlib-1.2.8.tar.gzを見つけてダウンロードします.
  • 解凍
  • tar -zxvf zlib-1.2.8.tar.gz
    cd zlib-1.2.8
    
  • コンパイル
  • ./configure
    
  • 取付
  • make && make install
    

    再コンパイル2
    ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --with-md5-passwords
    

    ** **ログは次のとおりです(直接成功した場合は、インストール手順に直接ジャンプしておめでとうございます).
    ......(  )
    checking for openssl/opensslv.h... no
    configure: error: *** OpenSSL headers missing - please install first or check config.log ***
    

    問題は明らかで、openssl-develはありません.ネットワークが正常であれば、yum install openssl-develがこの問題を修復します.** **残念ながら、サーバーはパブリックネットワークを使用できません.最も直接的な解決策は、インストールディスクを見つけて対応するRPMインストールパッケージと依存パッケージを見つけることです.ここで、システムが私のバージョンと一致しているか、それ以下のバージョンであれば、この方法を使用しないでください.最終的にはOpenSSH 7.3p1が必要とするopensslの最低需要は0.9.8fバージョンであることがわかります.もちろん、0.9.8fよりも高いバージョンであれば、直接インストールできます.ここでは、次のコンパイルインストールアップグレードopensslに直接ジャンプする解決策を解決することはできません.
    openssl version -a
    
    rpm -Uvh e2fsprogs-devel-1.39-23.el5.i386.rpm
    rpm -Uvh keyutils-libs-devel-1.2-1.el5.i386.rpm
    rpm -Uvh libsepol-devel-1.15.2-2.el5.i386.rpm
    rpm -Uvh libselinux-devel-1.33.4-5.5.el5.i386.rpm
    rpm -Uvh krb5-devel-1.6.1-36.el5.i386.rpm
    rpm -Uvh openssl-devel-0.9.8e-12.el5.i386.rpm
    

    再コンパイル3
    ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --with-md5-passwords
    

    ** **ログは次のとおりです(直接成功した場合は、インストール手順に直接ジャンプしておめでとうございます).
    ......(  )
    checking OpenSSL header version... 0090802f (OpenSSL 0.9.8e-rhel5 01 Jul 2008)
    checking OpenSSL library version... configure: error: OpenSSL >= 0.9.8f required (have "0090802f (OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008)")
    

    問題は明らかで、opensslバージョンが低すぎず、本機は0.9.8eであり、最低構成には0.9.8fが必要である.(0.9.8fを以下の方法で直接取り付けてもこの問題を修復でき、検証済み)
    ** **openssl公式サイトに最新の安定バージョンopenssl-1.0.2 h.tar.gzをダウンロード
  • 解凍
  • tar -zxvf openssl-1.0.2h.tar.gz
    cd openssl-1.0.2h
    
  • コンパイル(カスタム構成を少し追加)
  • ./config --prefix=/usr/local/ssl shared zlib-dynamic enable-camellia
    
  • 取付
  • make depend
    make && make install
    
  • 追加構成(OpenSSHアップグレードの準備)
  • mv /usr/bin/openssl /usr/bin/openssl.bak
    #mv /usr/include/openssl /usr/include/openssl.bak
    ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
    ln -s /usr/local/ssl/include/openssl /usr/include/openssl
    echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
    ldconfig -v
    
  • アップグレード成功
  • openssl version -a
    

    再コンパイル4
    構成パラメータ--with-ssl-dir=/usr/local/sslを少し追加する必要があります.この構成は、opensslのアップグレード中にカスタマイズされた構成に関連しています.
    ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --with-md5-passwords --with-ssl-dir=/usr/local/ssl
    

    とうとう成功した
    インストール
    インストール前に既存のsshプロファイルをバックアップ
    mv /etc/ssh/ssh_config /etc/ssh/ssh_config.bak
    mv /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
    make && make install
    

    ログファイルをバックアップしないと、新しいバージョンのsshのプロファイルが古いバージョンのファイルを上書きできません. 
    仕上げ作業
  • sshdサービス
  • を再起動
    service sshd restart
    
  • sshdサービス起動起動(ここでは実行しないように構成されていますが、実行に問題はありません.万全です)
  • chkconfig sshd on
    

    参考にした『巨人』
  • tuicool この文章は大まかな思想を参考にしており,実際にその方法を引用していない.
  • iteye この記事では、gccコンパイルインストール環境を構成し、オペレーティングシステムのバージョンを表示する方法を参照します.
  • baidu この記事では、OpenSSL headersに欠けているパッケージについて説明します.
  • 51cto この文章はopensslをコンパイルしてインストールした後に配置する必要がある余分なステップを理解して、しかしその中に巨大な穴がありますecho “/usr/local/ssl/lib” >> /etc/ld.so.confの中の二重引用符は時間の半分の英語を必要として、しかしその中は中国語で、これも自分に1つの危険を冒して知恵を成長させるようにしましょう、完全にCopyすることができません.
  • 163 この記事では、インストールopensslをコンパイルする際にカスタマイズする必要があるパラメータについて説明します.
  • csdn この記事では、opensslをコンパイルインストールした後、opensshをコンパイルする際にパラメータ付き--with-ssl-dir=/usr/local/opensslディレクトリをカスタマイズされた構成に基づいて変更する必要があることを知りました.
  • 2cto これはインストールディスクに基づいてRPMパッケージをインストールし、このログを書いたときに見た
  • です.
    最后にツッコミを入れてBD検索は确かにだめで、国内のフォーラムの环境も确かによくなくて、多くの问题は招待状を解决してもやめて、どうして会社の内部のネット、BDを使うしかなくて、一部の国内のフォーラムにアクセスするしかありません.