カテゴリー
SugiBlog ホームページ制作・システム開発|大阪

SSLでパスフレーズの入力を省略する

apacheにSSLを導入した場合、apacheの起動時にパスフレーズの入力を求められます。
サーバーの再起動時や、プログラム等でのapacheの自動起動でパスフレーズの入力で止まったまま起動しない、という問題が発生します。

[Apache+SSL環境の構築]の最後でも紹介したように、秘密鍵を復号化しておけばパスフレーズの入力を省略できますが、セキュリティ上良くありません。
そこで秘密鍵を復号化することなく、パスフレーズの入力を省略する方法をご紹介します。

apacheのhttpd.confの<ifModule ssl_module>ディレクティブを修正します。

<ifModule ssl_module>
...
    SSLPassPhraseDialog exec:{プログラムの絶対パス}
</ifModule>

通常、SSLPassPhraseDialogの記述はないかと思いますが、
デフォルトはbuiltinとなっており、対話形式でパスフレーズを入力する設定になっています。
続きを読む…»

1,630 views

Apache+SSL環境の構築

Googleが常時SSL接続になり、SEOでもそれが加味されるようになってきました。

また、Google検索からの流入を解析するためにも、自身側のSSL化が必要になってきます。
というのも、HTTPSからHTTPではリファラーが取得できないのです。
自身のサーバーをHTTPSにすればHTTPSからのリファラーを取得することができます。
HTTPSならHTTPからのリファラーも取得することができます。

それに当たって、今回はopensslの導入部分を解説させていただきます。

【バージョンについて】
apache2.2.31
openssl-0.9.8zg
※opensslのインストールディレクトリは/usr/local/sslとします。

【鍵のペア作成と証明書の作成】
SSL通信を利用するには次の3つが必要です。
1.秘密鍵
2.公開鍵+証明書申請情報
3.デジタル証明書

WEBサーバーの秘密鍵の作成

opensslのディレクトリに移動します。

cd /usr/local/ssl/private

秘密鍵作成のための疑似乱数を生成します。
例としてmd5ダイジェスト値を疑似乱数として使用します。

../bin/openssl md5 * > rand.dat

秘密鍵を作成します。

../bin/openssl genrsa -rand rand.dat -des3 1024 > server.key

コマンドを実行すると秘密鍵のパスフレーズを求められますので、
任意のパスフレーズを入力してください。
続きを読む…»

981 views

SPFレコード”~all”と”-all”の違い

末尾の「~all」と「-all」の違い。

~all

設定以外のアドレスは当該ドメインのメールサーバとして認証しないが、
正当なメールであっても認証失敗する可能性もある

-all

設定以外のアドレスは当該ドメインのメールサーバとして認証しない

「~all」としておくと、認証に失敗した場合でもはっきり認証失敗として扱って
ほしくないという意味になるため、「-all」で問題がなければ、できる限り避けるべきである、
とされている。

SPFレコードが正しく設定されているか確認できるサイトがあります。
http://www.sendmail.co.jp/sa/spfcheck.html

6,360 views

rndcコマンド

rndcコマンドは、namedをコントロールするユーティリティです。
使用方法の抜粋。

reload named.confとシリアル番号が増えているゾーン情報をリロード。
stats サーバーの統計情報をnamed.statsファイルに書き出す。
status サーバーのステータス情報を表示する。
dumpdb キャッシュデータをnamed_dump.dbファイルにダンプする。
flush サーバーのキャッシュをすべて消去する。

statsやdumpdbで生成されるファイルはnamed.confで設定されている[options]-[directory]に設定されているディレクトリ配下に保存されます。

1,318 views

パケット受信制限 iptables

iptablesのlimitモジュールを使用してパケット受信に制限を持たせる。

モジュールがインストールされているかどうかは、/lib/iptables以下に「libipt_limit.so」があるかを確認してください。

例)新規接続のパケットに対して、10回までは無制限、それ以降は1分に1回ずつ応答する

iptables -A INPUT -p udp --dport 53 -m state --state NEW \
-m limit --limit 1/m --limit-burst 10 \
-j ACCEPT

オプションの説明

-A INPUT INPUTチェインに追加
-p udp プロトコルをudpに指定
–dport 53 ポートを指定
-m state –state NEW stateモジュールで新規接続を指定
-m limit limitモジュールを有効化
–limit 1/m limitを1分に1回に指定
–limit-burst 10 最初の10回までは無制限
-j ACCEPT ターゲットをACCEPTに
1,328 views

BINDのバージョンを隠ぺい

BINDが稼働しているサーバーに、以下のようなコマンドを実行するとBINDのバージョンが分かってしまいます。

$ dig @ネームサーバーのアドレス chaos txt version.bind

これを隠してしまうよう設定を変更しましょう。

まず設定前の状態を確認します。

$ dig @dns.example.jp chaos txt version.bind

; <<>> DiG 9.3.6-P2 <<>> @dns.example.jp chaos txt version.bind
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37859
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;version.bind.                  CH      TXT

;; ANSWER SECTION:
version.bind.           0       CH      TXT     "9.2.4"

;; AUTHORITY SECTION:
version.bind.           0       CH      NS      version.bind.

;; Query time: 45 msec
;; SERVER: 192.168.1.0#53(192.168.1.0)
;; WHEN: Wed Dec  4 13:52:17 2013
;; MSG SIZE  rcvd: 62

ANSWER SECTIONにバージョンが返ってきてしまいます。
続きを読む…»

2,189 views

DNSサーバーをオープンリゾルバーにしない

今年に入って、DNSの再帰的な問い合わせを使ったDDos攻撃が報告されているようです。
DNSキャッシュサーバーとして運用している場合でも、制限を設けて適切に設定をしておかないと、
DDos攻撃の踏み台にされてしまいます。

詳しくはこちらのサイトを参考にしてください。
http://www.jpcert.or.jp/pr/2013/pr130002.html

管理しているサーバーがオープンリゾルバーになっていないかどうかを確認するサイトが開設されています。
http://www.openresolver.jp/

OSやBINDのバージョンによっても異なりますが、設定例をご紹介します。

まず、オープンリゾルバーになっていないかを確認します。
前述したオープンリゾルバー確認サイトも確認できますが、ここではコマンドラインで確認します。

$ wget -qO - http://www.openresolver.jp/cli/check.html

コマンドを実行すると結果が表示されます。

your remote ip: close 192.0.2.1(gw.example.com)
your use resolver: open 192.0.2.2(ns.example.com)

続きを読む…»

6,171 views

セカンダリDNSサーバーの設定

自前でセカンダリDNSサーバーを構築する際の設定例をご紹介します。

まずプライマリDNSサーバーの設定。
/etc/named.confでセカンダリを用意したいドメインのゾーン設定を修正します。

zone "example.jp" in {
    type master;
    file "example.jp";           //ゾーン設定ファイルを指定
    allow-transfer { 0.0.0.0; }; //セカンダリDNSサーバーのIPアドレス
};

allow-trasferでセカンダリDNSサーバーからのゾーン転送を許可する。※セキュリティ上必須

次にセカンダリDNSサーバーの設定をします。
/etc/named.conf

zone "example.jp" in {
    type slave;               //セカンダリなのでタイプをスレーブに指定
    file "slaves/example.jp"; //ゾーン設定ファイルを指定(省略可)
    masters { 0.0.0.0 };      //プライマリDNSサーバーのIPアドレス
};

それぞれnamedを再起動し設定完了。
ちなみに、ゾーン転送はTCP53ポートを使用するらしいのですが、UDPを解放しないとできなかった。
続きを読む…»

4,032 views

サーバーをプライベートネットワークで運用する場合の注意点

ブロードバンドルーターで静的IPマスカレードを使用し、サーバーをプライベートネットワークで運用する場合の注意点をご紹介。

サーバーをプライベートIPで運用する場合、内部での名前解決をしてあげないといけません。

内部からのドメイン名前解決は/etc/hostsファイルに以下のように記述
※ドメインがexample.jp、ルーターが192.168.100.1、サーバーがホストwwwの192.168.100.2とします。

192.168.100.2   www.example.jp

これを書いておかないとサーバー自身でも自サイトを見ることができません。
更に自サイト内でフルパス参照ができません。
※リンクでページを移動するだけなら可能(クライアントの名前解決によるため)

特に複数のウェブサーバーがあり、別のウェブサーバーからデータを
PHP等のプログラムを使って読み出そうとすると、名前解決できずにエラーになります。

他の事例としては、メールサーバーとウェブサーバーが同ネットワーク内に
別に存在する場合で、ウェブサーバーからフォーム等でメールを同ネットワーク内の
メールサーバーで受けているアドレスに送る場合にも注意が必要です。
続きを読む…»

2,895 views

vpopmal 転送設定

vpopmailのaliasを使ってメールを転送する方法

例)
vpopmailのインストール先:/home/vpopmail
転送元アドレス:moto@example.jp
転送先アドレス:saki@example.net

# 転送設定
/home/vpopmail/bin/valias -i saki@example.net moto@example.jp

# 転送設定の確認
/home/vpopmail/bin/valias -s example.jp

# 転送設定の解除
/home/vpopmail/bin/valias -d moto@example.jp
1,064 views