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; 


Source: https://habr.com/ru/post/J148489/


All Articles