ポートの開放での注意
何度か使用していますが、ポート開放の確認は以下のページで出来ます。
ポートチェック【ポート開放確認】
ここで注意なのは、ちゃんとアクセスするためには
①ルータでポートフォワーディングをする
②FW(ファイアーウォール)でポートを開放する
③サービスを立ち上げてListen状態にする
この3つがそろっていないときちんとアクセスできません。
特に③番目が個人的には盲点で、開放しているはずなのに「アクセスできません」と表示が出て不思議に思っていました。
これはサービスがListen状態になっていないためにtcp接続が出来なかったんです。
Listen状態とは、簡単に言うとtcp接続するときの準備ができている状態です。相手の接続時のパケットを聞きとる(Listen)ことができる状態って感じでしょうか。
より詳しく知りたいと思った方はTCPのオープンとクローズ処理を参考にしてください。
ではこのListen状態かどうかを調べる方法を述べていきます。
以下のコマンドで、ポートの開放状況と使用しているプロセスの一覧を表示します。
注意としてroot権限で実行してください。
# netstat -untap
Listen状態のものはtcpを用いたサービスが起動しており、外部からアクセスがあればEstablishに変化します。
Establishは現在外部からアクセスがなされており、接続が成立している状態のものです。
試しにWebにアクセスした状態でこのコマンドを実行してみると443のapacheの項目がEstablishになっています。
ついでですが、この一覧を元に使用するつもりないプロセスがポートを使用していたらサービスを停止しましょう。つまり使用していないサービスのListen状態があれば停止する、ということです。例えばプリンタ用のcupsとか使用しないと思うので、停止したほうがセキュリティ的に良いです。
補足ですが、各オプションは
u・・・udp
n・・・名前のレゾルブをしない
t・・・tcp
a・・・すべての情報を表示
p・・・ポートを使用しているプロセスを表示
となります。nを省くとホスト名(FDQN)やサービス名(ssh)がIPやポートの代わりに表示されます。
ソース:
netstatコマンドを使いこなす
TCPの状態遷移図