Help us understand the problem. What is going on with this article?

macで不審なポートが開いていた件(rapportd)

この間、何気なしにnmapでmacのlocalhostを検索してみると、ひどい結果が待ち受けていました。

$ nmap localhost
PORT      STATE SERVICE
111/tcp   open  rpcbind
631/tcp   open  ipp
1021/tcp  open  exp1
1023/tcp  open  netvenuechat
2049/tcp  open  nfs
49163/tcp open  unknown

正直、開けたことがあるような、ないようなポートがいっぱいです。特に、最後の49163なんてポートは絶対に自分では開けた覚えがありません。

とすると、バックドアでも仕掛けられていたのだろうかと心配になり、色々と調べてみることになりました。

結果的には、1021, 1023あたりのポートはnfsdでした。特定のリポジトリを共有してたことがあったような、なかったような...。

とりあえずディレクトリ自体は既に削除していたので、無効にすることにします。

$ sudo nfsd checkexports
$ sudo vim /etc/exports
$ sudo nfsd stop
$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.nfsd.plist

その他、色々とやりまして、大方のポートは閉じられたのですが、残ったのはやはり、49163でした。(なお、このポートを利用するアプリは再起動と同時に開けるポートを変動させるようです)

追記:コメントを参照して、適切に処理してください。どうやら問題なく使用されるポートであることのほうが多いみたい。

$ nmap localhost
49163/tcp open  unknown

# root権限で開いてるポートは別です。ユーザーとは別に閉じなければいけません。
$ sudo nmap localhost
49163/tcp open  unknown

詳しく調べてみると、そのポートはアップルが署名した特定のコマンドから実行されているようでした。

$ sudo lsof -i tcp:49163
rapportd 402 syui    3u  xxxx      TCP *:49158 (LISTEN)

$ codesign -dv --verbose=4 /usr/libexec/rapportd
$ otool -L /usr/libexec/rapportd

# 一応、当該proccesをkillしておくことに
$ lsof -p 402
$ kill -KILL 402
or 
$ launchctl list | grep 402
$ launchctl stop com.apple.rapportd

次に、自動起動されているrapportdを停止させるコマンドを実行します。

rootで実行されているrapportdを停止
$ cd /System/Library/LaunchDaemons
$ grep -R rapportd .
    Binary file ./com.apple.jetsamproperties.Mac.plist matches
    Binary file ./com.apple.rapportd.plist matches

$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.jetsamproperties.Mac.plist

$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.rapportd.plist
    error:Operation not permitted while System Integrity Protection is engaged

ここで、問題が発生します。どうやらmacは/System/以下の変更を一部で制限しているみたいで、リカバリモードから特定のコマンドを実行して制限を解除しなければならないようです。これは、セキュリティの設定なので、変更した後は戻してほうが良いかもしれません。コンピュータウィルスに重要なディレクトリを変更されやすくなってしまう危険があるためです。

このセキュリティ制限解除の手順は以下の通り。

1. Command+Rを押しながらMACを再起動でリカバリーモード起動
2. トップメニューから「ユーティリティー>ターミナル」と選んでターミナルを起動
3. csrutil disableというコマンドを実行

さて、これで、 

$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.rapportd.plist

が通るようになります。

$ sudo nmap localhost
...

確かめてみるとrapportdが開けていたポートが閉じられているようです。

ただし、まだユーザー権限で実行されているものがあるみたいなので、そちらのplistもunloadします。/System/Library/LaunchAgents/com.apple.rapportd-user.plistにあります。

$ nmap localhost
49163/tcp open  unknown

$ launchctl unload -w /System/Library/LaunchAgents/com.apple.rapportd-user.plist
$ launchctl stop com.apple.rapportd

$ nmap localhost
...

# root,userともに開いてるポートは無くなりました。よかった。

ちなみに、詳細に調べる時はopen -a Network\ Utility.appを実行して、portscanしましょう。

追記:

BetterTouがポートを開けてたので、macのfirewallでブロックしときました。多分、updateとかで必要になるかもしれませんけど、その時はその時です。

追記2:

久しぶりにportscanしてみました。以下のportが開いてました。必要ないアプリの場合は、disableしたほうがいいかもしれませんね。

Open TCP Port:  xxx, keybase
Open TCP Port:  xxx, kbfs
Open TCP Port:  xxx, Dropbox
Open TCP Port:  xxx, Dropbox

$ sudo lsof -i tcp:xxx

kbfsはKeybaseが使っているPortです。

追記

現在は、ポートを全部閉じることに成功して、結果は何も表示されないというOKの状態になりました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした