ウェブサーバ
一般的には、Apacheの名称で有名
実際のLinuxの内部デーモン名は、httpd
Apacheでウェブサーバを運用していると、様々なトラブルに遭遇することがあります。
出きるだけそれらトラブルに遭遇しないようにするためにも、サーバからの情報を
極力出さないようにする必要があります。
vi /etc/httpd/conf.d/security.conf
#システム全体のアクセス制御
# -Indexes ディレクトリ一覧表示を禁止する
<Directory />
Options -Indexes
Options None
AllowOverride None
Order allow,deny
Deny from all
</Directory>
#クライアントに送るサーバーの情報を最小限に抑える
ServerTokens ProductOnly
#フッターおよび mailto: 参照を作成しない
ServerSignature Off
#HTTP ヘッダーからphpバージョンを消す
Header unset X-Powered-By
#TRACEメソッドの無効化
TraceEnable Off
#ドメイン名の逆引きなどのDNS問い合わせ処理をしない
HostnameLookups Off
Alias /kasoudir /var/data
<Directory "/var/data">
</Directory>
Directoryディレクティブの中に、各種設定内容を記述します。
SSLモジュールのインストール
ApacheのSSLモジュールがインストールされているか確認します。
ls /etc/httpd/modules
このディレクトリに、mod_sslモジュールが存在し無い場合、下記コマンドでモジュールを追加します。
yum install mod_ssl
秘密鍵のパスフレーズ作成
openssl genrsa -des3 1024 > server.key
Generating RSA private key, 1024 bit long modulus
................++++++
.........++++++
e is 65537 (0x10001)
Enter pass phrase:
Verifying - Enter pass phrase:
パスフレーズを2回聞いてきます。
同じパスフレーズを入力してください。
秘密鍵のパスフレーズの解除
動作テストなどの場合、Apacheを起動する度に、 SSLのパスフレーズを聞いてくるのは非常に手間です。
パスフレーズを解除する手順です。
mv server.key server.key.org
openssl rsa -in server.key.org > server.key
公開鍵の作成
openssl req -new -key server.key > server.csr
Enter pass phrase for server.key:
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) []:Nagasaki
Locality Name (eg, city) [Default City]:Nagasaki-Shi
Organization Name (eg, company) [Default Company Ltd]:Digital.org
Organizational Unit Name (eg, section) []:Security
Common Name (eg, your name or your server's hostname) []:eagle2.org
Email Address []:root@eagle2.org
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
デジタル証明書の作成
openssl x509 -in server.csr -days 1825 -req -signkey server.key > server.crt
Signature ok
subject=/C=JP/ST=Nagasaki/L=Nagasaki-Shi/O=Digital.org/OU=Security/CN=eagle2.org/emailAddress=root@eagle2.org
Getting Private key
Enter pass phrase for server.key:
SSL証明書の設定
vi /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/httpd/server.crt
SSLCertificateKeyFile /etc/httpd/server.key
重要な内容をやりとりするサイト
例えば、WebMailや、グループウェア
でのデータのやりとりを行う際には、その通信内容が暗号化されていると安心デスね。
しかし、httpでも、httpsでもどちらでもアクセスできると、自分がどちらでアクセスしているか判らず
情報垂れ流しの状態になっている場合が考えられます。
そういった事態を避ける為、システム側で強制的にhttpsでのみ接続できるようにする設定方法
下記の内容を、任意のファイル名(判りやすい名称)で、 /etc/httpd/conf.d/ 以下のディレクトリに保存します。
< Directory "/daijina/data/">
SSLRequireSSL
ErrorDocument 403 http://site/ssl_only.html
省略
</Directory>
例えば、
WebMail の場合、 webmail.conf
グループウェアの場合、groupware.conf
など。
ErrorDocumentは、無くても良い。 逆にあると、SSLでの接続が出来てしまうということが判る!?
この辺は考え方次第か!?