Webアプリケーションスタックのセキュリティの向上(LAMP仮想化、ステップ6/6)

nginxを構成して使用する

LAMPスタックの仮想化に特化したcyberciti.biz Webサイトの一連の記事の翻訳を完了しています 。 最後の記事では、nginxリバースプロキシのインストールと構成に焦点を当てます。



nginxは、Webサーバーまたはリバースプロキシサーバーとしてだけでなく使用されるオープンソース製品です。 軽量でリソースを尊重するため、ロードバランサー( ダムラウンドリボンからより意味のあるものまで)としても使用されますが、 すべてはあいまいです。および/または仮想ネットワークサービスへのアクセスを整理するためのプロキシソリューションとしてサイクルの以前の記事で確立された、1つの外部ホストアドレス、たとえばIP 202.54.1.1 (以前の例で説明したように)。



この記事では、ドメイン名www.example.comのApache + php5サーバーと、この例ではstatic.example.comという名前のLighttpd静的サーバーのnginxをリバースプロキシとしてインストールする方法を見つけます。 IPアドレス192.168.1.1の vm00仮想サーバーですべての設定を排他的に行います。



DNSセットアップ

www.example.comstatic.example.comの両方がIPアドレス192.168.1.1を指していることを確認してください。



nginxサーバーをインストールする

次のコンソールコマンドを入力して、nginxをインストールします。

$ cd /tmp $ wget http://nginx.org/packages/rhel/6/noarch/RPMS/nginx-release-rhel-6-0.el6.ngx.noarch.rpm # rpm -iv nginx-release-rhel-6-0.el6.ngx.noarch.rpm # yum install nginx
      
      





サーバーコンソールの応答例:

 Loaded plugins: rhnplugin Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package nginx.x86_64 0:1.2.1-1.el6.ngx will be installed --> Finished Dependency Resolution Dependencies Resolved ========================================================================= Package      Arch          Version                   Repository    Size ========================================================================= Installing: nginx        x86_64        1.2.1-1.el6.ngx           nginx        331 k Transaction Summary ========================================================================= Install       1 Package(s) Total download size: 331 k Installed size: 730 k Is this ok [y/N]: y Downloading Packages: nginx-1.2.1-1.el6.ngx.x86_64.rpm                  | 331 kB     00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Warning: RPMDB altered outside of yum.  Installing : nginx-1.2.1-1.el6.ngx.x86_64                          1/1 ---------------------------------------------------------------------- Thanks for using nginx! Check out our community web site: * http://nginx.org/en/support.html If you have questions about commercial support for nginx please visit: * http://www.nginx.com/support.html ----------------------------------------------------------------------  Verifying  : nginx-1.2.1-1.el6.ngx.x86_64                          1/1 Installed:  nginx.x86_64 0:1.2.1-1.el6.ngx Complete!
      
      







nginx Webサーバーサーバーをリバースプロキシとして構成する

ファイル/etc/nginx/conf.d/default.confを編集します。

 # vi /etc/nginx/conf.d/default.conf
      
      





追加するか、既存の行を変更することにより:

 ##  -  ## ## Apache (vm02) -  www.example.com ## upstream apachephp  {      server 192.168.1.11:80; #Apache1 } ## Lighttpd (vm01)    static.example.com ## upstream lighttpd  {      server 192.168.1.10:80; #Lighttpd1 } ##   www.example.com ## server {    listen       202.54.1.1:80;    server_name  www.example.com;     access_log  /var/log/nginx/log/www.example.access.log  main;    error_log  /var/log/nginx/log/www.example.error.log;    root   /usr/share/nginx/html;    index  index.html index.htm;     ##   apache1 ##    location / {     proxy_pass  http://apachephp;     proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;     proxy_redirect off;     proxy_buffering off;     proxy_set_header        Host            $host;     proxy_set_header        X-Real-IP       $remote_addr;     proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;   } } ##   www.example.com ## ##   static.example.com ## server {   listen      202.54.1.1:80;   server_name static.example.com;   access_log  /var/log/nginx/log/static.example.com.access.log  main;   error_log   /var/log/nginx/log/static.example.com.error.log;   root        /usr/local/nginx/html;   index       index.html;    location / {        proxy_pass  http://lighttpd;        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;        proxy_redirect off;        proxy_buffering off;        proxy_set_header        Host            static.example.com;        proxy_set_header        X-Real-IP       $remote_addr;        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;    } } ##   static.example.com  ##
      
      







nginxをオンにする

次のコマンドを入力します。

 # chkconfig nginx on # service nginx start
      
      







ファイアウォールを構成する

次のファイアウォール設定を構成します。





これらのパラメータを設定するには、次の手順を実行します。

 # system-config-firewall-tui
      
      





/ etc / sysconfig / iptablesを手動で編集し、ファイアウォールも設定できます(詳細についてはcyberciti.bizの記事をご覧ください )。



/etc/sysctl.conf

/etc/sysctl.confを次のように編集します。

 # Execshild kernel.exec-shield = 1 kernel.randomize_va_space = 1 # IPv4 settings net.ipv4.ip_forward = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.secure_redirects = 0 net.ipv4.conf.all.log_martians = 1 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.default.secure_redirects = 0 net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.tcp_syncookies = 1 net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 # Increase system file descriptor limit to fs.file-max = 50000 # Increase system IP port limits net.ipv4.ip_local_port_range = 2000 65000 # Ipv6 net.ipv6.conf.default.router_solicitations = 0 net.ipv6.conf.default.accept_ra_rtr_pref = 0 net.ipv6.conf.default.accept_ra_pinfo = 0 net.ipv6.conf.default.accept_ra_defrtr = 0 net.ipv6.conf.default.autoconf = 0 net.ipv6.conf.default.dad_transmits = 0 net.ipv6.conf.default.max_addresses = 1
      
      





次のコマンドを使用して、新しいLinuxカーネル設定をダウンロードします。

 # sysctl -p
      
      





指定されたLinuxカーネルチューニングディレクティブの詳細については、対応するFAQを参照してください。



Nginxサーバーのセキュリティ

投稿「 Top 20 nginx Web Server Security Practices 」も参照してください。 また、nginx、リバースプロキシ、およびSSL設定に関する追加資料として、レッスン資料を参照してください。





トップLAMPスタックセキュリティプラクティス

  1. 通信の暗号化:仮想マシンをセットアップするときにsshとvpnを使用します。 scp / sftpクライアントを使用して、サーバーにファイルをアップロードします。
  2. Webサーバーにインストールされているすべてのジャンクが本当に必要ですか? 不要なソフトウェアのインストールを避け、妥協から身を守ってください。 yum、apt-get、dpkgなどのRPMパッケージマネージャーを使用して、インストールされているソフトウェアを追跡します。
  3. セキュリティ更新プログラムのインストールは、健全なLinuxサーバーを維持するための重要な部分です。 Linuxは、システムを最新の状態に保つために必要なすべてのソフトウェアを提供し、バージョンからソフトウェアバージョンに切り替える手順は最も便利な方法で行われます。 セキュリティ関連の更新はすべて、できるだけ早く監視およびインストールする必要があります。
  4. ユーザーアカウントに必要最小限の特権を付与します。 サーバーへのsshアクセスを左右に分散させないでください。
  5. サイトcyberciti.bizのLAMPスタックのセキュリティに関するベストプラクティスに関する記事もお読みください。






おわりに

このガイドが仮想マシンのセットアップ時に役立つことを願っています。また、CentOS / RHELサーバーで独自のWebスタックのセットアップを開始できるように、情報が十分に役立つことを願っています。







翻訳者から:

この記事シリーズには、cyberciti Webサイトの資料への約50の外部リンクが含まれています。 私の側では、読者に英語のテキストと向かい合っておくのはあまり正直ではありません(そうでなければ、翻訳を読みます)。 提案はこれです:翻訳された資料で最も頻繁に言及されているトップリンクはここにあります:



そして、36個のリンクが0回以上言及されました:
www.php.net/array

www.cyberciti.biz/faq/mysql-user-creation

www.cyberciti.biz/tips/open-source-project-management-software.html

www.cyberciti.biz/faq/linux-demilitarized-zone-howto

www.cyberciti.biz/faq/restart-httpd

www.cyberciti.biz/faq/how-do-i-start-and-stop-nfs-service

www.cyberciti.biz/faq/rhel-centos-fedora-keepalived-lvs-cluster-configuration

www.cyberciti.biz/tips/linux-laptop.html

www.cyberciti.biz/faq/centos-fedora-rhel-iptables-open-nfs-server-ports

www.cyberciti.biz/faq/linux-install-and-start-apache-httpd

www.cyberciti.biz/faq/rhel-fedora-centos-linux-temporarily-switchoff-selinux

www.cyberciti.biz/faq/linux-make-directory-command

www.cyberciti.biz/faq/howto-disable-httpd-selinux-security-protection

www.cyberciti.biz/tips/top-linux-monitoring-tools.html

www.php.net/isset

www.cyberciti.biz/tips/linux-iptables-examples.html

bash.cyberciti.biz/mysql/add-database-username-password-remote-host-access

dev.mysql.com/doc/refman/5.5/en

www.cyberciti.biz/faq/tag/etcfstab

www.cyberciti.biz/faq/fedora-sl-centos-redhat6-enable-epel-repo

www.cyberciti.biz/faq/tag/etcsysconfigmemcached

www.cyberciti.biz/tips/my-10-unix-command-line-mistakes.html

www.cyberciti.biz/tips/download-email-client-for-linux-mac-osx-windows.html

www.cyberciti.biz/faq/linux-kernel-etcsysctl-conf-security-hardening

www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html

www.cyberciti.biz/faq/linux-unix-bsd-wordpress-memcached-cache-plugin

www.cyberciti.biz/faq/howto-install-memcached-under-rhel-fedora-centos

www.cyberciti.biz/tips/tips-to-protect-linux-servers-physical-console-access.html

www.cyberciti.biz/faq/how-to-install-mysql-under-rhel

www.cyberciti.biz/tips/unix-linux-bsd-pydf-command-in-colours.html

www.cyberciti.biz/faq/howto-linux-unix-setup-nginx-ssl-proxy

www.cyberciti.biz/faq/how-to-mount-bind-partitions-filesystems-in-linux

www.cyberciti.biz/faq/rhel-fedora-linux-install-memcached-caching-system-rpm

www.phpmyadmin.net/home_page/index.php

www.cyberciti.biz/faq/rhel-fedorta-linux-iptables-firewall-configuration-tutorial

www.cyberciti.biz/faq/stop-lighttpd-server



今私にとって興味深いのは、つまり 数日中に転送する予定のもの-下のリスト。 翻訳や吹き替えが必要で、松信義則の報告書が示唆するような超越的な価値があるものがあれば、私たちは読んで翻訳します。



O'Reilly MySQL Conference&Expo is a Wrap // 2011 web



関心のある範囲:サーバー管理、最適化、LAMPスタックの監視。 仮想化、IaaS、KVM、xfs、NFS。 また興味深いもの:hPHP(ヒップホップPHP)、Wordpress。



あなたから-私への資料へのリンク-翻訳とお辞儀。



(O'Reilly Velocity、NJ-LOPSA PICC、Tech Ed、LinuxCon)以外の会議を知っている場合は、資料/プレゼンテーション/ビデオを公開してください。すべてを教えてください。




All Articles