いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.087 / 読者数:964名

あけましておめでとうございます、うすだです。

年末年始の暴飲暴食がたたって、体重が指数関数的に…いやいや、 それは言いすぎですが…かなり太ってしまいました。

毎年毎年、年末に親戚との旅行で飲み食いして、大晦日に家族で飲み食いして、 年始に実家で飲み食いする、という悪循環では、体重が増加しないはずないですよね。

この調子でいくと、 中年的肥満体系になるのは必至…いやもうなっているといっても過言ではないかも…ですので、 次なる年末年始の暴飲暴食への対策として、これから1年かけて痩せようと思います。

それでは、今年も、はりきってまいりましょう!

今週のお題 - ファイルを暗号化する

もしもっていうときのために、遠隔にあるサーバや、 リムーバブルな記憶装置にバックアップをとっておくことは、大事なことだと思います。

しかし、中には、他の組織のひとに見られるとまずいようなファイルも、 それなりに含まれているのではないかと思います。
そんなファイルを、メモリカードや、公共性のやや高い所にバックアップするのは、 非常にデンジャラスです。

かといって、バックアップしないのもリスクが高いですし、 リムーバブルなメディアを厳重に管理するのも、手間やお金がかかってしまいます。

じゃあ、そんなときには、バックアップファイルを、 自分しかわからない形式にしてしまえば、万が一、誰かに見られても、 やや安心ですよね。

というわけで今週は、ファイルを暗号化したり復号化したりする方法を、 ご紹介したいと思います。


今回使用するツールは、GnuPG (GNU Privacy Guard)です。
GnuPG は、暗号化やデジタル署名などを行うための GNU のツールです。
RFC2440 で規定されている OpenPGP という規格に準拠しています。
公開鍵暗号を使用しますので、 公開鍵を相手に知らせてデータの受け渡しなどを行うことができます。 (厳密には、共通鍵暗号も使います。)

詳細につきましては、検索などでお勉強していただくとして、当メルマガでは、 実際に使うところをご紹介したいと思います。
しかも、相手も自分ですので、気軽に試せます。 GnuPG や PGP を使ったことのない貴兄は、迷わず実践してみてください。

ちなみに、使用するのは、gpg というコマンドだけです。
大抵のディストリビューションには、gnupg パッケージが入っているはずですが、 もしないようでしたら、yum や apt などで入手してください。


それでは、まずはじめに、鍵を作成しましょう。
gpg コマンドを、--gen-key オプションつきで起動します。
(以下、いろいろ入力する必要があり、ご紹介が長くなります。)

  % gpg --gen-key
  ...中略...
  gpg: directory `/home/usu/.gnupg' created
  gpg: 新しい構成ファイル`/home/usu/.gnupg/gpg.conf'ができました
  ...中略...
  すきな鍵の種類を選択してください:
     (1) DSAとElGamal (既定)
     (2) DSA (署名のみ)
     (5) RSA (署名のみ)
  どれにしますか? 

最初に、鍵の種類を聞かれます。
暗号化が主たる目的ですので、1 を選択しておきます。

  どれにしますか? 1
  DSA鍵対は1024ビットになります。
  ELG-E keys may be between 1024 and 4096 bits long.
  どの鍵長にしますか? (2048) 

次に、鍵の長さを聞かれます。長いほど安全ですが、処理に時間がかかります。 今のところは、2048 ビット以上が無難なようです。
2048 でよければ改行を、そうでなければビット数を入力しましょう。

  鍵の有効期限を決めてください。
           0 = 無期限
          = 有効期限 n 日間
        w = 有効期限 n 週間
        m = 有効期限 n か月間
        y = 有効期限 n 年間
  鍵の有効期間は? (0)

そして次に、鍵の有効期限を聞かれます。無制限でよければ改行を、 そうでなければ、期限を指定します。

  あなたの鍵を同定するためにユーザIDが必要です。
  このソフトは本名、コメント、電子メール・アドレスから
  次の書式でユーザIDを構成します:
      "Heinrich Heine (Der Dichter) "

その後、念をおされてから、ユーザIDとメールアドレス等を聞かれます。
ご自身の名前とメールアドレスなどを、指定してください。
わたしの場合の入力例を、以下に示します。

  本名: USUDA Hisashi
  電子メール・アドレス: usu@usupi.org
  コメント: 
  次のユーザIDを選択しました:
      "USUDA Hisashi "

  名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)?

念をおされますので、問題なければ O と入力してください。

  秘密鍵を保護するためにパスフレーズがいります。

  パスフレーズを入力: 

そしていよいよ、パスフレーズ(パスワードの長いやつ)を聞かれます。
覚えやすく、かつ推測されにくいものを入力してください。
文章になっていると、覚えやすいかもしれません。

  今から長い乱数を生成します。キーボードを打つとか、マウスを動かす
  とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で
  乱雑さの大きないい乱数を生成しやすくなるので、お勧めします。
  ...中略...
  gpg: /home/usu/.gnupg/trustdb.gpg: 信用データベースができました
  gpg: key 77777777 marked as ultimately trusted
  公開鍵と秘密鍵を作り、署名しました。
  ...後略...

パスフレーズを2回入力すると、乱数を生成して鍵を作成します。
その間、上記にもあるように、 乱数のもとになるアクションを実行した方がよいようです。 試しに、なにもしないでいたら、以下のように言われてしまいました。

  十分な長さの乱数が得られません。OSがもっと乱雑さを収集
  できるよう、何かしてください! (あとxxバイトいります)

で、特にエラーっぽいことを言われなければ、成功だと思います。
念のため、以下のように、公開鍵の一覧を出力してみましょう。

  % gpg --list-keys
  /home/usu/.gnupg/pubring.gpg
  ------------------------------
  pub   1024D/77777777 2007-01-03
  uid                  USUDA Hisashi 
  sub   2048g/12345678 2007-01-03

こんな感じで、鍵らしきものが出力されれば、大丈夫でしょう。


鍵ができましたので、早速、暗号化してみましょう。
ファイルを暗号化するには、gpg コマンドに -e オプションをつけて実行します。

  % gpg -r ユーザID -e ファイル名

-r オプションで、ユーザID を指定します。
ユーザID を指定しなければ、インタラクティブに聞かれます。
これを実行すると、.gpg のついたファイルが生成されます。
この .gpg つきのファイルが、暗号化されたファイルです。

ちなみに、わたしの場合の暗号化の実行例を、以下に示します。

  % gpg -r "USUDA Hisashi" -e secret_data.txt
  % ls secret_data.txt*
  secret_data.txt   secret_data.txt.gpg

この .gpg つきのファイルをバックアップすればいいわけですね。


暗号化ができたら、試しに、復号化してもとに戻してみましょう。
ファイルを復号化するには、gpg コマンドに -d オプションをつけて実行します。

  % gpg -o ファイル -d ファイル.gpg

-o オプションで、復号化したモノの出力ファイル先を指定できます。
これを指定しない場合、結果は標準出力に出力されます。

実行すると、パスフレーズを聞かれますので、正しく入力しましょう。
ちなみに、わたしの場合の復号化の実行例を、以下に示します。

  % gpg -o secret_data.txt.new -d secret_data.txt.gpg
  You need a passphrase to unlock the secret key for
  user: "USUDA Hisashi "
  2048-bit ELG-E key, ID 12345678, created 2007-01-03 (main key \
  ID 77777777)

  パスフレーズを入力: 

  gpg: 2048-ビットELG-E鍵, ID 12345678で暗号化2007-01-03にできました
      "USUDA Hisashi "

念のため、cmp や md5sum コマンドなどで、 オリジナルのファイルと寸分違わないことを確認しておきましょう。

  % cmp secret_data.txt secret_data.txt.new

以上、GnuPG の簡単な使い方を、ご紹介しました。
新年一発目ですし、明日もお休みですので、軽めな内容にしてみました。
長いわりにはたいしたことないはずですので、実行してみてくださいね。

あ、そもそも、登録した鍵自体が失われたらアウトなのでは、 ということに気づかれた貴兄は、スルドイです。はい、まったくその通りです。
バックアップを必要とする非常事態に遭遇する前に、$HOME/.gnupg/ 以下を、 別のマシンにコピーしておきましょう。
$HOME/.gnupg/ 以下が同じであれば、別のマシンでも復号化できます。
(ひょっとすると、GnuPG のバージョンが違い過ぎると、 うまくいかないかもしれません。実運用の前に、必ず確認しておいてください。)

宿題の答え

先週の宿題は、

  Logwatch を使って、Quota の状態をメールで通知してみましょう。

でした。

ようするに、Quota のサービス・フィルタを作ればよいということです。
それでは、有無を言わさず、作ってみましょう。

まずは、設定ファイルを作成しましょう。/etc/log.d/conf/services/ か /usr/share/logwatch/default.conf/services/ の下に、 quota.conf という名のファイルを作成します。
さっぱりし過ぎな感もある中身の例を、以下に示します。

  Title = "Quota Status"
  LogFile = NONE

ログファイルを参照しませんので、LogFile に NONE を指定します。 ですので、他の設定も、特に必要としません。
そして、サービス・フィルタを作ります。/etc/log.d/scripts/services/ か /usr/share/logwatch/scripts/services/ の下に、 quota という名のファイルを、実行可能な状態で作成します。
これまたさっぱりな中身の例を、以下に示します。

  #!/bin/sh
  /sbin/quotaon -pa
  echo
  /usr/sbin/repquota -a

単純に、今の Quota の状態を知らせてくれるコマンドを呼び出しているだけです。

あとは、以下のようにお試し実行して、問題ないことを確認し、 実運用に踏み切ればよろしいのではないかと思います。

  # logwatch -service quota -print
  ...結果は略...

Logwatch に関しては、以下を参考にしていただけますと、幸いです。

Vol.075 - Logwatch にサ−ビス・フィルタを追加する
http://www.usupi.org/sysad/075.html
Vol.074 - Logwatch をカスタマイズする
http://www.usupi.org/sysad/074.html

今週の宿題

今週の宿題は、

  GnuPG の鍵を作成する際、パスフレーズなしにできるでしょうか。

です。

…試してみればすぐわかりますよね。
ふと疑問に思ったので、宿題にしてみました。

あとがき

年末は、今までにないくらい熱心に、大掃除をしました。
今のマンションに引っ越してから4年になりますので、ぼちぼちきれいにしたかった、 というのが最大の理由です。

きっかけはなんであれ、きれいにするという行為は、やってみると気持ちがよいです。 ここまで熱心にやれたのは、だんだんと、 ランナーズハイ的に熱中していったからなのかもしれません。

さて、掃除をがんがんやって、気づいたことがあります。
それは、ものすごく当たり前なことですが、掃除しやすいモノとしにくいモノがある、 ということでした。

トイレの便器などは、ことごとくばらせるような構造になっているため、 細かいところまできれいに掃除できます。
これはきっと、設計者が掃除することを想定して設計したからではないかと思います。

かと思えば、風呂の湯舟やサッシなどは、ブラシのとどかない箇所があるため、 掃除が非常に面倒です。これらを設計したひとは、きっと、掃除をしたことがないか、 掃除を想定して設計してないだろう、と推測します。
一度、一般のご家庭の掃除を見学させてもらうべきだ、と思いました。

 

…なんて、エラソーに書いてしまいましたが、ひとのことをとやかく言う権利は、 あまりない気がしてきました。
はたして、お客様がどう使うのかということを考えて作っただろうか、と思うと、 そうでなかったように思えてくるからです。
一度、じぶんの作ったモノを、お客様がどのように使っているか、 観察をさせてもらったほうがよいかもしれない、と思いました。

そんな微妙な反省をしつつ、新しい年を迎えました。
今年は、去年までの惰性的思考停止的な生活でなく、 ちゃんと考えていくようにしよう、なんて思っています。
というわけで、今年もよろしくお願いいたします。

 

今週も、ここまで読んでいただき、ありがとうございました。
それでは、また来週に、お会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」−6年目に突入!! 毎日栗の絵を描いています。変ですね。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://www.fumido.co.jp/kuriniki/ (栗日記ぎゃらりー)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本