FC2ブログ

    nEST's SPACE-Blog

    コンピュータ、旅行などがテーマの日記帳です

    CentOS_Shellshock問題で使用したコマンド覚書

     
    先日話題になったLinux系OSのbash脆弱性(通称Shellshock)問題。
    管理人も対策のため、yumコマンド・rpmコマンドをはじめ色々と覚える必要があった。今後も使いそうなので、当時の対応を含めメモしておく。

    yumコマンドでのbashアップデート

    インターネットに接続可能な端末では下記のように、yumコマンドだけでbashのアップデートを行うことができた。yumコマンドはrpmコマンドと違い、依存関係にあるRPMパッケージを自動でDL&インストールしてくれるため非常に便利。
    ただ「# yum update」は要注意、と先輩から釘を刺された。
    「# yum update」は全パッケージのアップデートを行うため、アップデート除外対象の設定等を行わないと、カーネルとか余計な物までアップデートされ最悪カーネルパニックとか起こすのが主な理由との事。

    実行例.yumコマンドでのbashアップデート
    # yum update bash
    # /sbin/ldconfig

    下記はbashの脆弱性確認コマンドと、対応パッチが未導入の場合の結果を示したもの。
    本来はvulnerableの部分は出てはいけない。
    # env x='() { :;}; echo vulnerable'  bash -c "echo this is a test"
    vulnerable
    this is a test

    で、bashのアップデート後、確認コマンドを打って下記の結果または「this is a test」とだけ表示されるようになれば、Shellshock対応パッチ導入OKとみなしていた。
    # env x='() { :;}; echo vulnerable'  bash -c "echo this is a test"
    bash: warning: x: ignoring function definition attempt
    bash: error importing function definition for `x'
    this is a test

    また、インストール前後でインストール済みRPMパッケージのバージョンを調べるコマンド「rpm -qi [RPMパッケージ名]」を実行し、バージョン表記などが変わっている事も確認した(「# yum update bash」でもバージョンは確認できるのだが、インターネットに接続不可な状況に対応できないためrpmコマンドの方が使いやすい)。
    [root@localhost ~]# rpm -qi bash
    Name        : bash                         Relocations: (not relocatable)
    Version     : 3.2                               Vendor: CentOS
    Release     : 33.el5_11.4                   Build Date: 2014年09月26日 11時14分25秒
    (以下略)

    rpmコマンドでのbashアップデート

    しかしインターネットに繋げていない等、yumコマンドが使用できない場合がある。
    そのような場合は、yumコマンドの使用できる端末で最新RPMファイル(当時はbash-3.2-33.el5_11.4.x86_64.rpm)をダウンロード。
    それをUSBメモリ等に移し、yumコマンドの使えない端末へコピー、rpmコマンドでインストールする流れをとった。

    実行例.rpmコマンドでbashをアップデートする
    # rpm -Uvh bash-3.2-33.el5_11.4.x86_64.rpm
    # /sbin/ldconfig
    これで成功すればよかったのだが、rpmコマンドはyumと違って依存性を考慮しないため、下記の依存性エラーが出て処理が止まる場合もあった。
    この場合は依存性のあるRPMパッケージを調べて、rpmコマンドで都度インストールする必要があった。
    # rpm -Uvh bash-3.2-33.el5_11.4.x86_64.rpm
    警告: bash-3.2-33.el5_11.4.x86_64.rpm: ヘッダ V3 DSA/SHA1 Signature, key ID e8562897: NOKEY
    エラー: 依存性の欠如:
         libtermcap.so.2()(64bit)はbash-3.2-33.el5_11.4.x86_64 に必要とされています

    インストールしたいRPMパッケージの依存性を調べる

    以下はyumコマンドでアップデートできた端末で実行した、RPMパッケージの依存関係を調べるコマンド「rpm -qpR [RPMパッケージ名]」の実行結果。
    実行結果に、先のエラーメッセージにあったlibtermcap.so.2()(64bit)が含まれている事がわかった。
    # rpm -qpR 'bash-3.2-33.el5_11.4.x86_64.rpm'
    /bin/bash
    /bin/sh
    /bin/sh
    /bin/sh
    config(bash)=3.2-33.el5_11.4
    libc.so.6()(64bit)
    libc.so.6(GLIBC_2.2.5)(64bit)
    libc.so.6(GLIBC_2.3)(64bit)
    libc.so.6(GLIBC_2.3.4)(64bit)
    libc.so.6(GLIBC_2.4)(64bit)
    libdl.so.2()(64bit)
    libdl.so.2(GLIBC_2.2.5)(64bit)
    libtermcap.so.2()(64bit)
    mktemp
    rpmlib(CompressedFileNames)<=3.0.4-1
    rpmlib(PayloadFilesHavePrefix)<=4.0-1
    rtld(GNU_HASH)

    依存性エラーの原因が、どのRPMパッケージによるものか調べる

    以下は、パッケージに含まれるファイルの一覧を表示するコマンド「yum provides [RPMパッケージほか]」の実行結果。
    先に依存性エラーを起こした「libtermcap.so.2()(64bit)」は「libtermcap-2.0.8-46.1.x86_64」というRPMパッケージに含まれている事がわかった。
    # yum provides 'libtermcap.so.2()(64bit)'
    Loaded plugins: fastestmirror, security
    Repository epel is listed more than once in the configuration
    Loading mirror speeds from cached hostfile
     * base: www.ftp.ne.jp
     * extras: www.ftp.ne.jp
     * updates: www.ftp.ne.jp
    Excluding Packages from CentOS-5 - Base
    Finished
    Excluding Packages from CentOS-5 - Updates
    Finished
    libtermcap-2.0.8-46.1.x86_64 : termcap
                                 : データベースにアクセスするための基本的なシステムライブラリ
    Repo        : base
    Matched from:
    Other       : libtermcap.so.2()(64bit)


    libtermcap-2.0.8-46.1.x86_64 : termcap
                                 : データベースにアクセスするための基本的なシステムライブラリ
    Repo        : installed
    Matched from:
    Other       : Provides-match: libtermcap.so.2()(64bit)

    必要なRPMパッケージをyumコマンドで取得する

    yumコマンドでアップデートできた端末から、依存性がある物を含めてRPMパッケージをダウンロードするコマンド「yumdownloader [RPMパッケージ名] --resolve」を実行した。
    これまでの手順で揃えたRPMパッケージを使用する事で依存性の問題も解決でき、無事bashのアップデートを行う事が出来た。
    # yumdownloader libtermcap-2.0.8-46.1.x86_64 --resolve
    Loaded plugins: fastestmirror
    Repository epel is listed more than once in the configuration
    Loading mirror speeds from cached hostfile
     * base: www.ftp.ne.jp
     * extras: www.ftp.ne.jp
     * updates: www.ftp.ne.jp
    Excluding Packages from CentOS-5 - Base
    Finished
    Excluding Packages from CentOS-5 - Updates
    Finished
    --> Running transaction check
    ---> Package libtermcap.x86_64 0:2.0.8-46.1 set to be updated
    --> Finished Dependency Resolution
    libtermcap-2.0.8-46.1.x86_64.rpm  |  14 kB     00:00

    Linux関連では、まだまだ覚える事が山ほどある。もっと勉強しないとイカンね。
     
     
     
    関連記事
    スポンサーサイト
    1. 2014/11/08(土) 21:45:28|
    2. Linux
    3. | トラックバック:0
    4. | コメント:0
    <<補足:CentOS_Shellshock問題で使用したコマンド覚書 | ホーム | RAIDカード(PERC H710)でRAIDを再設定する>>

    コメント

    コメントの投稿


    管理者にだけ表示を許可する

    トラックバック

    トラックバック URL
    http://nestblog.blog.fc2.com/tb.php/91-cc5c4826
    この記事にトラックバックする(FC2ブログユーザー)

    プロフィール

    管理人NEST

    Author:管理人NEST
    nEST's SPACEへようこそ。
    書きたい事を適当に書き連ねています。
    HPもよろしく。

    最新記事

    最新コメント

    最新トラックバック

    月別アーカイブ

    カテゴリ

    未分類 (1)
    GAME (20)
    雑記 (50)
    PostgreSQL (7)
    Windows (39)
    サイト運営 (6)
    MANGA (1)
    スマートフォン (19)
    Oracle (6)
    健康 (2)
    Linux (17)
    仮想化 (3)
    車 (7)
    自転車旅行 (3)
    自転車パーツ・ウェア (2)
    自転車イベント (5)
    自転車 (15)

    ブログ用カウンター

    検索フォーム

    RSSリンクの表示

    リンク

    このブログをリンクに追加する

    Powered By FC2ブログ

    今すぐブログを作ろう!

    Powered By FC2ブログ