読者です 読者をやめる 読者になる 読者になる

ぎじゅつめも

とある工学系学生が学んだことをメモするだけのブログです。

ポート開放プロセスの特定/不要ポートの閉鎖

firewallでフィルタリングしていても、開放ポートが悪用される可能性も0ではないので、利用しないポートはなるべく閉じたいものです。

そこで今回は開いているポートを調べて、それがどのプロセスによって開放されているのか、そして不要であれば閉じるという過程を記して置こうと思います。

開放ポートの調査

netstat -antuで開放しているポートを調べます(t,uはtcp,udpに絞るオプションです)。中でも、意図的に開放した覚えのないポートを以下に表示します。

f:id:white-hawk:20170422215552p:plain

このうち、68はDHCPクライアント用なのでいいとして、他のポートは何故使われているのか調べることにします(何やら多いですね…)。

ポート開放プロセスの特定

root権限でlsofコマンドを使います。(root権限でないとうまく取得できません)

※lsofコマンドについて:manに書かれていることを簡単に説明します。lsof(list open files)はプロセスによって開かれているファイルの情報をリスト表示するコマンドです。-i オプションを使うことで、引数に指定したネットワークアドレスやポートで待ち受けているファイル/プロセスをリスト表示することができます。COMMANDはプロセスに関連付けられているコマンド名をあらわしています(デフォルトだと上限9文字)。PIDはプロセスIDで、FDはファイル記述子(read,writeなどで指定することで情報を読み書きできる番号)です。

各ポートを使っているプロセスを実際に表示させてみた結果は以下のとおりです。

f:id:white-hawk:20170422222338p:plain

f:id:white-hawk:20170422222424p:plain

rpcbind,rpc.statd,cupsd,mysqldの4つがヒットしました。

対処(閉鎖)

mysqldについて

まずmysqldについてですが、現在のところリモートから接続する機会はないので閉じておきます。閉じ方は検索するとすぐでてきます。今回参考にしたサイト様はこちら*1です。/etc/my.cnfファイルの[mysqld]配下に

f:id:white-hawk:20170422223910p:plain

を追加して、service mysqld restartで完了です。

外部からのmysqlへの接続を遮断しつつ自分だけ遠隔から利用したい場合、mysqldで3306待ち受けを行いFWでポート3306宛は落とす設定にしておいてSSHポートフォワーディングでつなぐのが良いんですかね。この辺も後でちゃんと理解しないといけませんね。

cupsdについて

CUPSはUNIX系OSで印刷を行うためのサービスのようです。このノードからの印刷は行わないのでこれも閉じます。このためにはサービスを停止して、マシン起動の度に自動で立ち上がらないようにしておく必要があります。今回参考にしたのはこちら*2

  1. サービスを特定

    f:id:white-hawk:20170422225948p:plain

  2. サービスを停止

    f:id:white-hawk:20170422230557p:plain

  3. 再起動時の起動を停止

    f:id:white-hawk:20170422230608p:plain

rpcbind,rpc.statdについて

ちなみにこれらのrpc絡みのプロセスはNFSのためのもののようです。スクショは張りませんが起動サービスとして、netfs,nfs,nfslock,rpcbind,ypbindが出てきました。NFSサーバとして利用しないので、これらを上記と同様に停止させ再起動時に起動しないようにしました。

結果

最後にnetstat -antuの結果を示します。

f:id:white-hawk:20170422232430p:plain

かなりすっきりしました。

※CLOSE_WAITになっているのは前の記事で書いたgnomeのものです。