「ポート」について、疑問を感じたことがある。ポートは必要最小限のものしか開けてはならない、と言うことは知っている。
今、自分自身をポートスキャンしてみると、telnet とか ftpとかで使用するポートが開いているのがわかる。全部で10個もないくらいである。
だが、私はこのLinuxマシンで、一度もポートを開ける設定も閉める設定もした覚えはない。インストールするときに、ファイアウォールを設定するか、というところでファイアウォールなしにした記憶はある。
それなのに、ちゃんと必要最低限のポートしか開いていないのである。一体どこに、このポートは開けて、このポートは閉める、という設定がしてあるのか、探してみたがわからない。
inetd.confが非常に怪しいとにらんだ。nmapで開いているとされているポートで使用しているサービスがここで設定されているからだ。ここに設定するとポートが開くんだな、とほとんど確信しかけたが、ntpは設定されていないし、それ以外にも開いているポートがいくつかある。
nmapの結果
PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 23/tcp open telnet 70/tcp open gopher 111/tcp open rpcbind 139/tcp open netbios-ssn 445/tcp open microsoft-ds 513/tcp open login 672/tcp open unknown 901/tcp open samba-swat PORT STATE SERVICE 69/udp open|filtered tftp 111/udp open|filtered rpcbind 123/udp open|filtered ntp 137/udp open|filtered netbios-ns 138/udp open|filtered netbios-dgm 836/udp open|filtered unknown 32768/udp open|filtered omad inetd.conf ftp telnet gopher login tftp swat
どうなっているんだ・・・。そもそも、「ポートが開いている」とはどういう状態なのか?
キーワードをいろいろと変えて検索してみたがどこにも「xxxのxxxをxxxxするとポートが開放される」などとは書いていなかった。
しかし、「ポートの開放の仕方なんか少し調べればすぐ見つかるよ」見たいな冷たい反応はたくさんみつかった。iptablesがどうのこうの、という情報もたくさん見つかったが、iptablesなど設定していないし、確認したがすべてのポートが許可されている。
一体、どこの誰がポートを開けているのか!?
......
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=10465&forum=10&4
を見て。
どうやら、「あるポートが開いている」というのは、「あるポートを使って通信をおこなっているサービスが存在している」という意味のようだ。
つまり、ftpdを稼動させれば21番などが開いているということになる。窓のようなポートというものが存在している訳ではないようである。
iptablesというのは、それとは違って、サービスの状況によらずポートをフィルタリングする。だから、iptablesで何もフィルタリングしていない状態であっても、サービスがなにもしていなければ、ポートは開いていないということになる。