CentOS6でポート開放をする

開発用サーバの設定をいろいろやっていて、同じCentOS6ながらもさくらのVPSとの違いを発見したりします。セキュリティのためにsshのポート番号を変更してsshでつなげなくなったり、apacheのインストールをして同じ設定をしたはずなのにブラウザからアクセスできなかったり。経験上なんとなく理由は想像つくのだけど…。
sshのポート番号変更してつながらなくなってと言っている通り、ポートが問題です。ポートが開いていないので外部からアクセス出来ません。さくらのVPSはなぜアクセスできるかといえば、多分その部分でのお客さんからの問い合わせが減るように全ポート開放してサーバを渡しているのだと思います。だから、そこはちゃんと設定しないとセキュリティが甘くなったりするので注意です。
さて、開発用サーバでは外部からアクセスできるように、セキュリティのために必要なポートだけ開放したいと思います。多分元から開放されているポートはデフォルトのsshのポートの22番だけと思います。そこからsshのポートを変更したその番号と、apacheというかCentOSではhttpd用の80番ポートを開放したいと思います。あとは必要に応じてポートを開けてください。サーバ管理で何かあったときにメールが届くようにするようにsmtpポートの25番や、httpsというsslでのブラウザアクセスの443番、あとはデータベースサーバとして外部からつなぐから3306番ポート辺りが候補になるかもしれません。
ポート開放はコマンドでやるのが普通らしいのですが、最初にCentOSを触った時にそれがうまくできなかったことがあって以来、僕はファイルを直接書き換えています。対象ファイルは/etc/sysconfig/iptablesです。

vi /etc/sysconfig/iptables

ファイル編集コマンドです。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

上記部分が22番ポートを開けている記述で、ファイルの中間くらいにあるかと思います。これと同じ記述で22の数字部分を開けたいポート番号にして次の行に追加してください。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

apacheというかhttpdなら上記のようになります。
ファイルを変更したらiptablesの再起動が必要になります。

/etc/init.d/iptables restart

エラーがでなければ成功です。sshやブラウザ、その他のクライアントからアクセスして確認してください。他にも外部からポートが空いているか確認してくれるwebサービスなんかも存在します。対象IPやホスト名、調べたいポートを入力して使います。下記のアドレスがそれになりますが、攻撃するために調べるとか悪用はやめましょう。
http://www.cman.jp/network/support/port.html