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

HTML + PHP5ネットワークファイルシステム(NFS)ファイルを操作するためのApache Webサーバーの構成



Webアプリケーションスタックの構成に関する記事シリーズの4番目のレッスンでは 、Apacheサーバーについて説明します。



Apache Webサーバーは、HTTPまたはHTTPSプロトコルを介して動的コンテンツへのアクセスを提供します。 この例では、Apache2 + php5 Webサーバーをインストールして使用し、さらにvm 05:/ exports / html/ var / www / htmlにマウントしてDocumentRootをインストールします。 これを行うには、仮想アドレス192.168.1.11の仮想vm02サーバーで次のコマンドを入力します。



NFSクライアントを構成する



yumマネージャーを使用して、NFSクライアントパッケージをインストールします。

# yum groupinstall "Network file system client"
      
      





または少し簡単に:

 # yum install nfs-utils nfs4-acl-tools
      
      





NFSv4クライアントサービスを有効にします。

 # chkconfig rpcbind on # chkconfig rpcidmapd on # chkconfig nfslock on
      
      







/etc/idmapd.conf nfsクライアント設定



NFSクライアント構成ファイルを編集します

 # vi /etc/idmapd.conf
      
      





NFSサーバーのドメイン名に従ってパラメーターが設定されていることを確認します。

 Domain = cyberciti.biz [Mapping] Nobody-User = nobody Nobody-Group = nobody
      
      





ファイルを保存して閉じます。 NFSクライアントのすべてのサービスを開始しましょう。

 # /sbin/service rpcbind start # /sbin/service rpcidmapd start # /sbin/service nfslock start
      
      







ファイルシステムのマウント



次のコマンドを入力してください

 # showmout -e vm05
      
      





または:

 # showmout -e 192.168.1.14
      
      





コマンド出力の例:

 Export list for v.txvip1: /exports/html     192.168.1.10,192.168.1.11 /exports/static   192.168.1.10,192.168.1.11
      
      





次のコマンドを入力して、 / exports / htmlファイルシステムを/ var / www / htmlにマウントします。

 # /bin/mount -t nfs4 -orsize=32768,wsize=32768,intr,hard,proto=tcp,sync vm05:/exports/html /var/www/html/
      
      





または:

 # /bin/mount -t nfs4 -orsize=32768,wsize=32768,intr,hard,proto=tcp,sync 192.168.1.14:/exports/html /var/www/html/
      
      







/ etc / fstabを介したファイルシステムのマウント



/ etc / fstabを編集:

 # vi /etc/fstab
      
      





次の行を追加します。

 vm05:/exports/html /var/www/html nfs4 orsize=32768,wsize=32768,intr,hard,proto=tcp,sync
      
      





ファイルを保存して閉じます。 netfsサービスが有効になっていることを確認します。

 # chkconfig netfs on
      
      





Apacheユーザーがファイルを見るようにします

 # su - apache $ ls /var/www/html/ $ exit #
      
      





rootユーザーまたは他のユーザーには、セキュリティポリシーにより/ var / www / htmlが表示されないことに注意してください。 apacheユーザーのみがDocumentRootにアクセスする必要があります。 これらはデフォルト設定です。



Apacheソフトウェアをインストールする



yumマネージャーを使用してApache2パッケージインストールします

 # yum install httpd
      
      







php5と必要なモジュールをインストールする



次のコマンドを入力して、php5、mysqlへのアクセスを提供するモジュール、グラフィックファイルを操作するためのモジュール、およびアプリケーションの動作に必要な他のすべてのモジュールをインストールします。

 # yum install -y php-pear php-common php-bcmath php-mbstring php-cli php-pdo php-php-gettext php-mcrypt php-gd php-xml php-pecl-apc php php-mysql php-xmlrpc
      
      







php5のmemcachedサポートをインストールする



vm03にインストールされたmemcachedサーバーにアクセスするには、phpキャッシュサーバーをインストールする必要があります。

 # yum install -y php-pecl-memcache
      
      







Apacheを構成する



Apacheサーバー構成ファイル/etc/httpd/conf/httpd.confを編集します。

 # vi /etc/httpd/conf/httpd.conf
      
      





次の設定を追加または編集します(DocumentRootは/ var / www / htmlにマウントされたnfsパーティションを指す必要があります)。

 #  -     Listen 192.168.1.11:80 #        ServerTokens Prod ServerSignature Off #  DocumentRoot DocumentRoot "/var/www/html" <Directory "/var/www/html">   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews   Options Indexes FollowSymLinks   AllowOverride All   Order allow,deny   Allow from all </Directory>
      
      





ファイルを保存して閉じます。



PHP5の構成



PHPは、広く使用されているサーバー側のスクリプト言語です(「 モスクワ、 祖国 首都 」、 Trans。

次のコマンドを使用して 、ファイル/etc/httpd/conf.d/php.confを編集します。

 # cat /etc/httpd/conf.d/php.conf
      
      





コマンドのおおよその出力:

 # PHP is an HTML-embedded scripting language which attempts to make it # easy for developers to write dynamically generated webpages.<br /> <IfModule prefork.c>  LoadModule php5_module modules/libphp5.so </IfModule> <IfModule worker.c>  LoadModule php5_module modules/libphp5-zts.so </IfModule> #  PHP-     .php AddHandler php5-script .php AddType text/html .php # Add index.php to the list of files that will be served as directory # indexes. DirectoryIndex index.php # Uncomment the following line to allow PHP to pretty-print .phps # files as PHP source code: # #AddType application/x-httpd-php-source .phps
      
      





トピックに関する追加記事でPHP5を保護および最適化する方法を参照して読んでください( または翻訳を依頼してください-約Per



リダイレクトされたHTTPリクエストの実際のIPを取得する



mod_extract_forwardedパッケージをインストールして、指示されたHTTPリクエストの実際のソースIPを取得します(EPELリポジトリに接続します):

 # yum -y install mod_extract_forwarded package
      
      





/etc/httpd/conf.d/mod_extract_forwarded.confの編集:

 # vi /etc/httpd/conf.d/mod_extract_forwarded.conf
      
      





次のように設定を追加または変更します。

 ## Accept real ip from our nginx reverse proxy  at 192.168.1.1 ## MEFaccept 192.168.1.1
      
      





ファイルを保存/閉じて、Webサーバーを再起動します。

 # service httpd reload
      
      







Webサーバーにアクセスするためのiptablesの構成



/ etc / sysconfig / Iptablesファイルを編集して、次のパラメーターを追加します(INPUTチェーンの最終LOGおよびDROP設定の前に設定されていることを確認してください)。

 ##       ## -A INPUT -m state --state NEW -p tcp -s 192.168.1.0/24 --dport 80 -j ACCEPT
      
      





保存して閉じます。 iptablesを再起動します。

 # /sbin/service iptables restart # /sbin/iptables -L -v -n
      
      







Apacheを有効にする



Apache2 Webサーバーは、次のコマンドで起動します

 # chkconfig httpd on # service httpd start
      
      





ブラウザーを切断してサーバーに侵入します。

 http://192.168.1.11/
      
      







MySQLおよびMemcachedサーバーに関する注意事項



アプリケーションでmysqlを使用する必要がある場合、IPアドレスは192.168.1.13 、tcpポートは3306です。

 /*  php-  */ /*    WordPress */ define('DB_NAME', 'foo'); /* MySQL database username */ define('DB_USER', 'bar'); /* MySQL database password */ define('DB_PASSWORD', 'mypassword'); /* MySQL hostname */ define('DB_HOST', '192.168.1.13');
      
      





memcachedサーバーが必要な場合、IPアドレスは192.168.1.12で、tcpポートは11211です。

 /*  php- */                if ( isset($memcached_servers) )                        $buckets = $memcached_servers;                else                        $buckets = array('default' => array('192.168.1.12:11211'));
      
      





または:

 $config['Datastore']['class'] = 'myApp_MemCached; $i = 0; $i++; $config['Misc']['memcacheserver'][$i]           = '192.168.1.12'; $config['Misc']['memcacheport'][$i]             = 11211; $config['Misc']['memcachepersistent'][$i]       = true; $config['Misc']['memcacheweight'][$i]           = 1; $config['Misc']['memcachetimeout'][$i]          = 1; $config['Misc']['memcacheretry_interval'][$i]   = 15;
      
      










All Articles