このブログを検索

2008/08/27

「ポートが開いている」とは

私の職場でRedHat Linux9を使っている。古いOSであるが理由があって使っている。

「ポート」について、疑問を感じたことがある。ポートは必要最小限のものしか開けてはならない、と言うことは知っている。

今、自分自身をポートスキャンしてみると、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で何もフィルタリングしていない状態であっても、サービスがなにもしていなければ、ポートは開いていないということになる。