1 / 49

知的システム構築工房 Linux 設定セミナーシリーズ

知的システム構築工房 Linux 設定セミナーシリーズ. 第 3 回  Web サーバー設定. 2011 年 3 月 14 日(月) 株式会社 アセンディア. 目的. 当セミナーを通して、 Web サーバの設定方法を理解し、 Web サービスの構築を体得する. 目標. 当セミナーを受講することにより  1. Web サーバ構築で必要な知識を習得し、 Web サービスを設定・構築することができるように   なること  2.セキュリティに考慮した Web サービスを構築   できるようになること. セミナー内容. 1. Web サービスのインストール設定

Download Presentation

知的システム構築工房 Linux 設定セミナーシリーズ

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 知的システム構築工房 Linux設定セミナーシリーズ 第3回 Webサーバー設定 2011年3月14日(月) 株式会社 アセンディア

  2. 目的 当セミナーを通して、 Webサーバの設定方法を理解し、Webサービスの構築を体得する

  3. 目標 当セミナーを受講することにより  1.Webサーバ構築で必要な知識を習得し、 Webサービスを設定・構築することができるように   なること  2.セキュリティに考慮したWebサービスを構築   できるようになること

  4. セミナー内容 • 1.Webサービスのインストール設定 • Apache HTTP Serverインストール •    ドキュメントルートについて • Apacheの設定(応用編) • 2.アクセスログの設定方法 • Apacheのアクセスログ管理 • アクセスログを解析する • Webalizerのインストール • 3.セキュアなWebサービスの構築方法 • セキュアなWebサービスの構築 • OpenSSL設定までの流れ

  5. 1.Webサービスのインストール設定

  6. Webサーバー HTMLファイルや画像などの情報を蓄積し要求に応じて提供するサーバ HTTP(HyperText Transfer Protocol)を使用する 主なWebサーバーソフト Apache HTTP Server 世界中で約半数のサーバーで利用されているソフトウェア    大規模な商用サイトから、個人で運用するサイトまで、幅広く利用される。 Windows ,MacOS,Linux,Unix等、さまざまなOSで利用可能 IIS(Internet Information Server) Microsoft社が提供するソフトウェア Webサービス以外に、FTP,SMTP等の機能を有する。 Windows OSのみインストール、運用可能 Oracle HTTP Server Oracle社が提供するソフトウェア Apache HTTP Serverの派生商品。 Oracleアプリケーションと連携する

  7. Apache HTTP Serverインストール インストールの流れ  1.ソフトウェアの取得  2.ダウンロードしたソフトウェアの解凍  3.プログラムソースコードのコンパイル  4.ソースコードのインストール  5.httpd.conf設定  6.動作確認

  8. 1.ソフトウェアの取得 Webサイトより取得します。 http://httpd.apache.org/

  9. タイトル カーネル ::

  10. 個人フォルダ/ダウンロードフォルダ配下に コピーされます

  11. 2.ダウンロードしたソフトウェアの解凍 ① ② ③ ④ ⑤ ⑥ ⑦ ①pwd 自分がいるディレクトリを確認 ②ls ファイル確認 ③ダウンロードディレクトリへ移動 ④Webサイトよりダウンロードしたプログラムファイル(httpd-2.2.17.tar.gz)が存在することを確認 ⑤gzip gz圧縮したファイルを解凍する ⑥解凍されていることを確認 ⑦tar アーカイブされたファイルをディレクトリ構成に戻す

  12. ② ③ ①tarコマンド発行により、復元状況が表示される ②復元されたディレクトリが表示される(httpd-2.2.17) ③httpd-2.2.17ディレクトリへ移動し、ファイルが解凍されていることを確認する

  13. 3.プログラムソースコードのコンパイル   コンパイルの流れ   1.rootユーザに変わります   2.プログラムソースを/usr/local/srcへ移動します   3.configure コマンド発行     コンパイラ、ライブラリのコンパイル環境チェック ⇒チェックOKの場合、MakeFileが作成されます   4.make コマンド発行 Makefile(コンパイル手順設定ファイル)に従って、コンパイルされます

  14. 1.su コマンドの発行 su - [rootユーザのパスワード] 2.プログラムソースの移動 mv /home/[ユーザ名]/ダウンロード/httpd-2.2.17 /usr/local/src 3.configure コマンドの発行 .configure --prefix=/usr/local/apache2 --enable-ssl オプションの追加 prefix インストールされる場所 enable-ssl SSL機能を追加する ※/usr/local/src/httpd-2.2.17へ移動してコマンド発行 4.make コマンドの発行 make

  15. 4.ソースコードのインストール 1.make install コマンドの発行 make install インストールが完了すると、/usr/local/配下にapache2フォルダが作成されます。 apache2フォルダの中を確認します

  16. 5.httpd.conf 設定 設定ファイルは、/usr/local/apache2/conf/配下にあります。 この設定ファイルを編集することで、Apache Webサービスの動作を変更します。 まずは、httpd.confファイルをのぞいてみましょう! 1.管理者の設定 ServerAdmin XXXXX@AAAA.co.jp 2.サーバー名の設定 ServerName XXXX:80 3.トップページとして表示されるファイルの設定 DirectoryIndex topPage.html ※既存のファイルをリネームします。 rootユーザにて作業します

  17. ドキュメントルートについて ドキュメントルート = URLによるアクセスで起点となるディレクトリ WWWサーバ /data/web/oita-u/eng/ http://www2.cc.oita-u.ac.jp/eng/index.html DocumentRoot ドキュメントルート index.html

  18. 6.動作確認 1.Apacheソフトウェアの起動 Apacheの実行ファイルは /usr/local/apache2/binフォルダ配下にあります。 apachectl 実行ファイルにて操作を行う  オプション: start  起動 stop 停止 restart 再起動

  19. 2.ブラウザで起動確認 ブラウザにて、下記のアドレスを入力します。 http://localhost/ It works!と表示されていればOKです。 このように表示した場合はhttpd.confを のDirectoryIndexを確認!

  20. Apacheの設定(応用編) • 1.ネットワークアクセス制限の設定 • httpd.confファイルで設定します • 1. /usr/local/apache2/conf/へ移動 • 2. httpd.confファイルを修正  • <Directory "/usr/local/apache2/htdocs/accessLimit"> • Allow from 192.168.0.0/255.255.255.0 • Deny from all • Order Deny,Allow • </Directory>

  21. 2.ユーザ名とパスワードで認証を行う  ユーザ認証が必要なWebサイトに設定を行います。 1. rootユーザに変わり、/usr/local/apache2/confディレクトリに移動します 2. パスワードファイルを作成します htpasswd コマンド htpasswd -c ファイル名 ユーザ名 -c:新規のみ 3.http.confファイルを修正します <Directory "/usr/local/apache2/htdocs/accessLimit"> Allow from 192.168.0.0/255.255.255.0 Deny from all Order Deny,Allow AuthType Basic AuthName "Access ERROR!!" AuthUserFile "conf/.htpasswd" Require valid-user </Directory> 4.Apache 再起動 ※ユーザ名は、Linuxのユーザとは別に管理されます ※Order : Orderから遠い記述から優先される Order Allow,Deny と記述した場合、すべてのネットワークから アクセスできなくなります。

  22. HTTPステータスコードについて HTTP通信時、Webサーバからの応答を3桁の数字でクライアントへ返します。 この3桁の数字のことを、HTTPステータスコードになります。 100番台:Infomation情報 リクエストを受け取った 200番台:正常処理 300番台:Redirection 400番台:クライアントエラー 500番台:サーバエラー 代表的なステータスコード一覧

  23. ステータスコードの応じたページのカスタマイズステータスコードの応じたページのカスタマイズ httpd.confファイル設定 347 # 348 # Customizable error responses come in three flavors: 349 # 1) plain text 2) local redirects 3) external redirects 350 # 351 # Some examples: 352 #ErrorDocument 500 "The server made a boo boo." 353 ErrorDocument 404 /missing.html 354 #ErrorDocument 404 "/cgi-bin/missing_handler.pl" 355 #ErrorDocument 402 http://www.example.com/subscription_info.html 356 # ① ①HTTPステータスコード 404(ページが見つからない)の場合、missing.htmlを 表示させる設定

  24. 演習問題1 下記の構成でApcheの設定を行いましょう。 認証OK 認証OK Member Check 認証リンク ユーザID パスワード http://localhost/accessLimit/index.html http://localhost/login.html 認証NG 認証に失敗しました! http://localhost/401.html

  25. 2.アクセスログの設定方法

  26. Apacheのアクセスログ管理 Apacheは、外部からアクセスした様々な情報ログを書き出すロギング機能が あります。 ログを管理することで、サーバの状態を把握し、プログラムのエラーを検知し、 セキュリティの確保を行うことができます。 ログはサーバにとって貴重な情報源になります。 ログの種類 Apacheのログは、2つ種類があります。 アクセスログ ⇒外部からWebサービスに接続した記録を取るためのログ     クライアント名(IPアドレスやホスト名) アクセス日時、クライアントからのリクエスト内容等 エラーログ ⇒サーバ側で発生したさまざまなエラー(HTTPステータス 400番,500番) を記録します CGIエラーログ ⇒CGIスクリプトエラーが発生した場合に記録します

  27. ログの設定 ログの設定は httpd.conf ファイルで行います。 AccessLog 207 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 208 LogFormat "%h %l %u %t \"%r\" %>s %b" common 216 # The location and format of the access logfile (Common Logfile Format). 217 # If you do not define any access logfiles within a <VirtualHost> 218 # container, they will be logged here. Contrariwise, if you *do* 219 # define per-<VirtualHost> access logfiles, transactions will be 220 # logged therein and *not* in this file. 221 # 222 CustomLog "logs/access_log" common ※設定する項目によって、logファイルの 肥大化が発生しますので、注意が必要です!

  28. logs/access.log その他のパラメータ

  29. ErrorLog [Sat Feb 26 11:23:50 2011] [error] [client 127.0.0.1] user sdf not found: /accessLimit, referer: http://localhost/login.html [Sat Feb 26 11:26:58 2011] [notice] caught SIGTERM, shutting down [Sat Feb 26 11:27:00 2011] [notice] SSL FIPS mode disabled [Sat Feb 26 11:27:00 2011] [warn] Init: Session Cache is not configured [hint: SSLSessionCache] [Sat Feb 26 11:27:00 2011] [notice] SSL FIPS mode disabled [Sat Feb 26 11:27:00 2011] [notice] Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/1.0.0a-fips configured -- resuming normal operations [Sat Feb 26 11:27:12 2011] [error] [client 127.0.0.1] user ds not found: /accessLimit/, referer: http://localhost/login.html [Sat Feb 26 15:32:10 2011] [notice] caught SIGTERM, shutting down [Sat Feb 26 15:32:17 2011] [notice] SSL FIPS mode disabled [Sat Feb 26 15:32:17 2011] [warn] Init: Session Cache is not configured [hint: SSLSessionCache] [Sat Feb 26 15:32:17 2011] [notice] SSL FIPS mode disabled [Sat Feb 26 15:32:17 2011] [notice] Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/1.0.0a-fips configured -- resuming normal operations [Sat Feb 26 15:32:33 2011] [error] [client 127.0.0.1] File does not exist: /usr/local/apache2/htdocs/favicon.ico [Sat Feb 26 15:32:33 2011] [error] [client 127.0.0.1] File does not exist: /usr/local/apache2/htdocs/favicon.ico [Sat Feb 26 15:32:33 2011] [error] [client 127.0.0.1] File does not exist: /usr/local/apache2/htdocs/favicon.ico [Sat Feb 26 15:32:45 2011] [error] [client 127.0.0.1] user sugiura: authentication failure for "/accessLimit/": Password Mismatch, referer: http://localhost/login.html [Sat Feb 26 15:34:42 2011] [error] [client 127.0.0.1] File does not exist: /usr/local/apache2/htdocs/favicon.ico [Sat Feb 26 15:34:48 2011] [error] [client 127.0.0.1] File does not exist: /usr/local/apache2/htdocs/userAccess

  30. ログの内容 • favicon.ico •   ブラウザのお気に入りに登録された場合に表示されるアイコンファイルです。 •   このアイコンファイルが無い場合、Errorログに出力されます。 •   トップページのディレクトリに配置します。 • robots.txt •   検索エンジン(google,yahoo等)のロボットに対して、サイトの巡回方法を •   指定するテキストファイルです。 •   サイトのトップディレクトリに配置します。(htdocs直下) • SEO対策として用いられる。 • User-agent: * • Disallow: / • User-agent: Googlebot • Disallow: /adminOnly/ • Disallow: /cgi-bin/ 検索エンジンにヒットされないようにする設定 検索エンジン(google)にadminOnly,cgi-binディレクトリ配下を巡回から省く設定

  31. ログの内容からセキュリティチェックを行う 1.ステータスコードの確認 404 (Not Found:ページが見つかりません)    このエラーが頻発する場合、サーバーへのDoS攻撃(サーバーアタック)    やApacheのセキュリティフォールを狙った攻撃をされている可能性が    あります。    401 (Unauthorized:認証エラー)    このエラーが頻発する場合、認証の失敗が原因であることから、    不正アクセスを行おうとしている場合や、ブルートフォースアタックツール    (暗号を解読してパスワードを盗むソフト)を使用した攻撃をされている    可能性があります。 2.不信なファイル名へのアクセス    このエラーが頻発する場合、Webアプリケーションファイルを不正に取得    しようとしている場合や、アプリケーションのセキュリティフォールを攻撃    しようとしている可能性があります。

  32. ログの内容からセキュリティチェックを行う 1.ステータスコードの確認 404 (Not Found:ページが見つかりません)    このエラーが頻発する場合、サーバーへのDoS攻撃(サーバーアタック)    やApacheのセキュリティフォールを狙った攻撃をされている可能性が    あります。    401 (Unauthorized:認証エラー)    このエラーが頻発する場合、認証の失敗が原因であることから、    不正アクセスを行おうとしている場合や、ブルートフォースアタックツール    (暗号を解読してパスワードを盗むソフト)を使用した攻撃をされている    可能性があります。 2.不信なファイル名へのアクセス    このエラーが頻発する場合、Webアプリケーションファイルを不正に取得    しようとしている場合や、アプリケーションのセキュリティフォールを攻撃    しようとしている可能性があります。

  33. アクセスログを解析する Webalizerによるアクセスログ解析 ⇒解析ツールを利用することによって、ログの視覚化を行います。 ・Webalizerの機能   1.トラフィック統計(月、日、時間毎)   2.ヒット数ランキング(Webページ)   3.リファラー(どのページより遷移してきたか)   4.クライアントのブラウザ、OS情報   等々・・・

  34. Webalizerのインストール インストールの流れ  1.yum コマンドにてインストール  2.httpd.conf設定  3.webalizer.conf設定  4.Apache再起動 5.動作確認 1.yumコマンドにてインストール rootユーザで作業を行います。 yum -y install webalizer

  35. 2.httpd.conf ファイル設定 • Webalizerページが表示できるように設定します。 • # Webalizer設定 • Alias /webalizer /var/www/usage • <Location /webalizer> • Order deny,allow • Deny from all • Allow from 127.0.0.1 • Allow from ::1 • </Location> • 3.webalizer.confファイル設定 • /etc/webalizer.confを設定します。 • #LogFile /var/log/httpd/access_log • LogFile /usr/local/apache2/logs/access_log • 4.Apache再起動

  36. 5.動作確認 http://localhost/webalizer/index.html

  37. 3.セキュアなWebサービスの構築方法

  38. セキュアなWebサービスの構築 OpenSSLを利用したHTTPSページの構築方法 SSL通信:WWWやFTPなどのデータを暗号化し、安全な通信を行う OpenSSL:SSL通信に必要な各種証明書を作成するパッケージ CA(Certificate Authority):電子証明書を発行し、管理する機関 CSR(Certificate Signing Request)ファイル:公開鍵、サーバ情報を記載 HTTPS 秘密鍵ファイル クライアント Webサーバ サーバー証明書ファイル SSL通信が開始されると、ブラウザには鍵のマークが表示されます

  39. OpenSSL設定までの流れ Webサーバ SSL認証局 ①OpenSSLをインストールします ⑤サーバー証明書発行 ②秘密鍵を作成します ④CSRファイルを提出 ⑥サーバー証明書を適用 秘密鍵ファイル ③公開鍵を基にCSRファイルを作成します ※④’自己署名証明書 SSL認証局を通さずにサーバー証明書を作成する 限られたネットワークやテスト用として運用します。 CSRファイル

  40. ①OpenSSLインストール http://www.openssl.org/ openssl-1.0.0d.tar.gzをダウンロードします。 ダウンロードしたファイルを /usr/local/src へコピーします。

  41. ・インストール ./config make make install ・opensslのライブラリにパスを通します echo "/usr/local/ssl/lib" >> /etc/ld.so.conf ・設定を反映します ldconfig [root@user01 etc]# echo "/usr/local/ssl/lib" >> /etc/ld.so.conf [root@user01 etc]# ldconfig [root@user01 etc]#

  42. ②秘密鍵の作成 • 1.confディレクトリに移動します • cd /usr/local/apache2/conf/ • 2.秘密鍵作成コマンドの発行 • openssl genrsa -des3 1024 > secret.key • genrsa:RSA形式の秘密鍵の作成 • -des3:des3方式で暗号 • 1024 : 1024バイトの鍵を生成 • secret.key : 秘密鍵名 • [root@user01 conf]# openssl genrsa -des3 1024 > secret.key • Generating RSA private key, 1024 bit long modulus • ......++++++ • ......++++++ • e is 65537 (0x10001) • Enter pass phrase: • Verifying - Enter pass phrase: • [root@user01 conf]# •    秘密鍵を覗いてみましょう!

  43. ③CSRファイルの作成 [root@user01 conf]# openssl req -new -text -out webcsr.pem -keyout secret.key Generating a 2048 bit RSA private key ........................+++ ................................................................................................................................................+++ writing new private key to 'secret.key' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- 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]: State or Province Name (full name) []: Locality Name (eg, city) [Default City]:oita Organization Name (eg, company) [Default Company Ltd]:oita Organizational Unit Name (eg, section) []:ac Common Name (eg, your name or your server's hostname) []:user01.oita-u.testsv.ac.jp Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:パスワードを入力 An optional company name []: [root@user01 conf]#

  44. ④自己署名証明書   運用では、SSL認証局へCSRファイルを提出し、サーバー証明書を発行する   のですが、テスト運用・限られたネットワークのみでの運用として自己署名   証明書を作成します。 openssl x509 -in webcsr.pem -out server.crt -req -signkey secret.key -days 90 [root@user01 conf]# openssl x509 -in webcsr.pem -out server.crt -req -signkey secret.key -days 90 Signature ok subject=/C=XX/L=oita/O=oita/OU=ac/CN=user01.oita-u.testsv.ac.jp Getting Private key Enter pass phrase for secret.key:パスワードを入力 [root@user01 conf]# ls extra httpd.conf.org mime.types secret.key userExtra httpd.conf magic original server.cert webcsr.pem [root@user01 conf]#

  45. ⑤サーバー証明書を適用 • Apache設定ファイルの修正 • 1.httpd.confの設定 • 422 # Secure (SSL/TLS) connections • 423 Include conf/extra/httpd-ssl.conf←コメントをはずします • 424 # • 2./conf/extra/httpd-ssl.confファイルの設定 • 92 # Server Certificate: • 93 # Point SSLCertificateFile at a PEM encoded certificate. If • 94 # the certificate is encrypted, then you will be prompted for a • 95 # pass phrase. Note that a kill -HUP will prompt again. Keep • 96 # in mind that if you have both an RSA and a DSA certificate you • 97 # can configure both in parallel (to also allow the use of DSA • 98 # ciphers, etc.) • 99 SSLCertificateFile "/usr/local/apache2/conf/server.crt" • 100 #SSLCertificateFile "/usr/local/apache2/conf/server-dsa.crt" • 101 • 102 # Server Private Key: • 103 # If the key is not combined with the certificate, use this • 104 # directive to point at the key file. Keep in mind that if • 105 # you've both a RSA and a DSA private key you can configure • 106 # both in parallel (to also allow the use of DSA ciphers, etc.) • 107 SSLCertificateKeyFile "/usr/local/apache2/conf/server.key" • 108 #SSLCertificateKeyFile "/usr/local/apache2/conf/server-dsa.key"

  46. 3.Apache再起動 [root@user01 conf]# /usr/local/apache2/bin/apachectl stop [root@user01 conf]# /usr/local/apache2/bin/apachectl start Apache/2.2.17 mod_ssl/2.2.17 (Pass Phrase Dialog) Some of your private key files are encrypted for security reasons. In order to read them you have to provide the pass phrases. Server www.example.com:443 (RSA) Enter pass phrase:パスワードを入力します OK: Pass Phrase Dialog successful. [root@user01 conf]#

  47. 4.動作確認 ①https://localhost/topPage.html へアクセスします。 Mozilla Firefoxの場合、下記のページが表示されます。

  48. ①【証明書を取得】を押下します。 ②次回以降にもこの例外を有効にする  にチェックが入っていることを確認し、 【セキュリティ例外を承認】を押下します ②

  49. ①クリック SSL通信にてページが表示されます 作成した証明書を確認します

More Related