WEB系の新人が困らないように基本を復習〜ネットワークの設定
昨日のエントリでは、WEBサーバーのApacheのインストールまでをやりました。
しかし、まだネットワークの設定を行っていないので、このWEBサーバーにブラウザにアクセスする事ができません。
そこで、今回はネットワークの設定を行います。
IPアドレスの確認
VirtualBoxで仮想ハードドライブを作成する時に、ネットワークにブリッジアダプタを設定していたので、もうこのOSからは外部への通信を行うことが出来ます。
試しに、pingを打ってみましょう。
ping www.yahoo.co.jp Ping www.g.yahoo.co.jp(xxx.xxx.xxx.xxx)56(84) bytes data. 64 bytes from f8.top.vip.ogk.yahoo.co.jp (xxx.xxx.xxx.xxx): icmp_seq=1 ttl=52 time=25.6ms Ctrl+cを押すまで、延々続きます
上記のような状態になれば、問題なく外部と通信できています。
Netwrok Unreachableなどのエラーが出ている場合、まずその問題を解決する必要があります。
問題なく通信が出来ているのを確認したら、IPアドレスを確認します。
ifconfig
上記のコマンドで、IPアドレスの確認が出来ます。
eth0の項目内で、
inet addr:xxx.xxx.xxx.xxx
の数字の部分(上記で、xxx.xxx.xxx.xxxの部分が数字になります)がIPアドレスになります。
iptablesの編集
iptablesとは、外部からアクセスするポートの設定を管理するファイアウォールです。
デフォルトでは、HTTPアクセスの80番ポートは閉じているので、開けてやる必要があります。
またHTTPSアクセスの443番ポートも開けてあげると良いでしょう。
ルールの確認 sudo iptables -L ルールの破棄 sudo iptables -F pingの受け取りを許可 sudo iptables -A INPUT -p icmp -j ACCEPT lo Interfaceを通るパケットを許可 sudo iptables -A INPUT -i lo -j ACCEPT 接続が確立しているパケット、接続を許可したパケットのプロトコルに関連のあるパケットを許可 sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ローカルネットからのパケットを許可 sudo iptables -A INPUT -s 192.168.xxx.0/24 -j ACCEPT SSH用ポートを許可 sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT HTTP用ポートを許可 sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT HTTPS用ポートを許可 sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT 拒否されたICMPパケットにエラーパケットを返す sudo iptables -A INPUT -j REJECT –reject-with icmp-host-prohibited ルールを保存する sudo /etc/init.d/iptables save
今回は、開発環境用のファイアーウォールと言う事で、許可しかしていないユルユルのルール設定になっています。
ネット上に公開するサーバーの場合は、基本的にすべてのアクセスを拒否しておいて、許可するルールだけを追加するのが正しい設定のやり方です。
例)全てのアクセスを拒否 sudo iptables -P INPUT DROP sudo iptables -P OUTPUT DROP sudo iptables -P FORWARD DROP
SELinuxの無効化
SELinuxは、有効になっていると正しく動作しないアプリケーションもあります。
そこで、SELinuxを無効にします。
まずは、SELinuxの状態を確認します。
sudo getenforce
Disabledと表示されれば、既に無効になっているので、以下の作業は必要ありません。
Enforcingかpermissiveと表示されれば、まだ有効なままなので、無効化します。
viで設定ファイルを開く sudo vi /etc/sysconfig/selinux 以下を変更する SELINUX=enforcing ↓ SELINUX=disabled 変更が完了したら、CentOSを再起動 sudo reboot
起動したら、ユーザーでログインし、
sudo getenforce
Disabledと表示される事を確認してください。
httpd.confの設定
Apacheの設定ファイルは、httpd.confです。
このファイルを編集して、Apacheの設定を行います。
大変、重要なファイルなので、必ずバックアップを取ってから作業を行いましょう。
まずは、httpd.confのバックアップを行います。
sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.default
では、httpd.confファイルを編集してみましょう。
sudo vi /etc/httpd/conf/httpd.conf
まずは、ServerTokens OSとなっている部分を変更します。
ServerTokens Full
これでレスポンスヘッダに全ての情報を返してくれるようになります。
一般に公開する場合は、ServerTokens Prodにして、最小限の情報しか返さないようにします。
次にKeep Alive Offの部分をOnに変更します。
次にコメントアウトしてあるServerName www.example.com:80の部分を、任意のサーバー名に変更します。
開発サーバーなので、localhost:80とかにすれば良いでしょう。
簡単ですが、以上です。
ブラウザで、先ほど確認したIPアドレスを入力してみてください。
Apacheのテスト画面が表示されればOKです。
(IPアドレスでアクセスするのが面倒だと感じる人は、Windowsのhostsファイルを書き換えて、localhost等でアクセスできるようにすると良いでしょう)
httpd.confファイルは、今後、色々と追加や変更をする事になるファイルなので、一通り目を通しておくと良いでしょう。
最後に
今回のサーバー設定の部分は、ローカルの開発環境の場合と、一般に公開する場合とで大きく設定が異なります。
開発環境の場合は、出来るだけ多くの情報を得られるように設定しますが、一般に効果薄る場合は、セキュリティを考慮して、最小限の情報しか開示しないようにし、攻撃などに対する備えなども必要になります。
ネットワークの設定と一言に言っても、専門的に勉強すれば、とても奥が深い部分なのです。