DTIサーバー構築19「タダほど怖い物はないぞ」

どうしてSSLで接続するのか?
暗号化して、途中経路での盗聴を防ぐため。
通信相手を確認するため。
自分で認証した証明書でも盗聴は防げるが、自分であることの証明はできない。
それに、SSLに使う証明書が公的に証明されていないと、GMailさんに拒否られたりする。
Unable to establish secure SSL connection to mail.yourdomain.com [ Help ]
Server returned error: “SSL error: self signed certificate”
対処法は、、、SSLなしでユーザー認証するしかないのか?

否!

CAsertで、無料でサーバー証明書をゲットだぜ!!
http://www.cacert.org/
とりあえず、上記URLへ行く。

CAcert
CAcert

まずは、コミュニティに参加するために、赤枠部分をクリック!
だがしかし、、、

このサイトのセキュリティ証明書は信頼できません
このサイトのセキュリティ証明書は信頼できません

え?
CAcert自身の証明書がブラウザに登録されてない。
無料とはいえ、いちいち証明書を登録なんか一度もしたことない承認局の承認を受けても、、、

需要があるかどうか分からないけど、続ける。

まずは、入力。

詳細情報
詳細情報

しかし、「 5つの質問と答え」を入力しないといけないとは。

登録後、しばらくすると確認のメールが届くので、URLをクリックして確認。

送信済み
送信済み

ログインして次の作業に進みましょう。

ログイン
ログイン

ログインができたら、サーバ証明書を作っていきましょう。

まずはメニューから「ドメイン」-「追加」を選びます。
ドメインの所有者だという確認を行うために、ドメインを入力します。
ドメイン
ドメイン

ドメイン管理者として有効なメールアドレスを選択してメールを待ちます。

メールアドレス選択
メールアドレス選択
送信済み
送信済み
送られたメールのアドレスをブラウザで開くと選択画面が開きます。
(Google Appsでのメールを利用している場合、postmasterはデフォルトで受信できません。
Verify
Verify
Verifyを選択すると確認完了です。
ドメイン確認完了
ドメイン確認完了
次にメニューから「サーバ証明書」-「新規作成」を選びます。
サーバ証明書 - 新規作成
サーバ証明書 – 新規作成

CAcert 証明書の利用規定(Acceptable Use Policy)を読んで、サーバーで作成したCSRを貼り付けましょう。

CSR(Certificate Signing Request)
CSR(Certificate Signing Request)

送信すると確認画面。

CommonName確認
CommonName確認

確認して送信すると、いきなり証明書が現れます。

サーバ証明書
サーバ証明書

さてと、使いますかね。使えますかね?

DTIサーバー構築18 「ここと〜、ここに、ご記入お願いします。」

証明書を認証局に頼んで作ってもらうために、申請用のファイル(CSR)を作ります。
とりあえず、申請書用のフォルダを作りましょうかね。

$ sudo mkdir /etc/pki/tls/csr
$ sudo chmod 700 /etc/pki/tls/csr
さて、申請書を作ります。

$ sudo openssl req -new -key /etc/pki/tls/private/domain.pem -out /etc/pki/tls/csr/domain.csr
Enter pass phrase for /etc/pki/tls/private/neo.sin-cos.com.pem: ←ここで秘密鍵を作るときに利用したパスワードを入力You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:都道府県
Locality Name (eg, city) [Default City]:市町村
Organization Name (eg, company) [Default Company Ltd]:会社名
Organizational Unit Name (eg, section) []:部署名
Common Name (eg, your name or your server’s hostname) []:yourdomain.com
Email Address []:
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

ちなみに、CAcertだと、Common Nameしか利用されません。
さて、生成したファイルを表示して、コピーしたりして使いましょう。

$ sudo cat /etc/pki/tls/csr/domain.csr

DTIサーバー構築17「人に見せるもんじゃないだろ!」

SSL証明書を作る前に、秘密鍵(domain.pem)を作りましょう。
さらに鍵を作る前に、乱数の種(seed.dat)を作りましょう。
さらにさらに乱数の種を作る前に、、、いや、もうありません。

$ sudo openssl md5 /var/log/* > seed.dat
ログフォルダのハッシュ値を種として使います。

次のコマンドで秘密鍵が生成されます。とても大事な誰にも見せてはいけない物です。

$ sudo openssl genrsa -rand seed.dat -des3 -out /etc/pki/tls/private/domain.pem 2048
1492 semi-random bytes loaded
Generating RSA private key, 2048 bit long modulus
……………………………..+++
……………………………………………………………….+++
e is 65537 (0x10001)
Enter pass phrase for /etc/pki/tls/private/domain.pem: ←ここで秘密鍵自体を暗号化するためのパスワードを入力
Verifying – Enter pass phrase for /etc/pki/tls/private/domain.pem: ←更に同じパスワードを入力(忘れるとどうにもなりません。)

さらに、rootしか見れないように、権限も厳しくしておきます。

$ sudo chmod 600 /etc/pki/tls/private/domain.pem

さて、秘密鍵の作成は完了です。
次はこれを元に証明書作成のためのファイルを作りましょうか。

DTIサーバー構築16 「報告します!」

ビッグデータが流行っているが、サーバー内にもそれは眠っている。
ログファイルがそれである。
そのままエディターで調べるなんて、ほぼ不可能。
なので、お手軽にLogWatchを使う。

まずは、インストール

$ sudo yum install logwatch
 :(なんだかんだ表示されて)
Installed size: 11 M
Is this ok [y/N]: y
 :(なんだかんだ表示されて)
Installed:
  logwatch.noarch 0:7.3.6-49.el6
Dependency Installed:
  perl-Date-Manip.noarch 0:6.24-1.el6                 perl-YAML-Syck.x86_64 0:1.07-4.el6
Complete!
設定ファイルがそのままでも、root宛に1日1通メールでまとめを送ってくれます。
でも、念の為、見ておきましょう。

$ sudo vi /usr/share/logwatch/default.conf/logwatch.conf
メールが来るのが待てないので、強制的に実行

$ sudo logwatch

こんな感じのメールが来ます。

 ################### Logwatch 7.3.6 (05/19/07) ####################
        Processing Initiated: Fri Aug 23 19:50:43 2013
        Date Range Processed: yesterday
                              ( 2013-Aug-22 )
                              Period is day.
      Detail Level of Output: 0
              Type of Output: unformatted
           Logfiles for Host: yourdomain.com
  ##################################################################
 ——————— Disk Space Begin ————————
 Filesystem            Size  Used Avail Use% Mounted on
 /dev/d1             50G  50G   50G   99% /

 ———————- Disk Space End ————————-

 ###################### Logwatch End #########################
 さて、この情報を基に、どうするか?
それは、あなた次第です。

DTIサーバー構築15 「俺だ!俺だよ!」

Linuxのユーザー管理には、グループと言う概念がありまして。
CentOSでは、ユーザー名と同じ名前のグループ名が自動的に作成されるそうです。
セキュリティを向上させるために、こちらで色々やりまして、自分の一般ユーザーでしかログインできなくし、sudoで管理者権限が必要なコマンドを実行するという一般的な形にしていたのですが、、、やってしまいました。

sudoersから自分を消してしまいました。。。

あ〜〜

さて、リセット!!