
最近、2 台の Ubuntu Server マシンをインストールしたのですが、マシンで開いているポートを見つけたいと思っています。
私のマシン(Ubuntu 11.10)から実行するとnmap
、両方のサーバーが
135/tcp filtered msrpc
4444/tcp filtered krb524
4662/tcp filtered edonkey
5000/tcp filtered upnp
5631/tcp filtered pcanywheredata
これらのポートを開いたことはありません。LAMP と SAMBA のみをインストールしました。なぜこれらのポートが開いているのですか?
開いているポートの完全なリストは次のとおりです。
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
80/tcp open http
110/tcp open pop3
135/tcp filtered msrpc
139/tcp open netbios-ssn
143/tcp open imap
445/tcp open microsoft-ds
993/tcp open imaps
995/tcp open pop3s
4444/tcp filtered krb524
4662/tcp filtered edonkey
5000/tcp filtered upnp
5631/tcp filtered pcanywheredata
問題は、なぜこれらのポートが開いているのかということです: 135/tcp filtered msrpc
、、4444/tcp filtered krb524
。4662/tcp filtered edonkey
、5000/tcp filtered upnp
。5631/tcp filtered pcanywheredata
これらのポートを開いたことはありません。LAMP と SAMBA のみをインストールしました。
そのリストは安全そうですか?
答え1
/etc/servicesというファイルからポートのリストを取得できます。
cat /etc/services | grep 137 (example)
例
Sambaが通信するために開く必要があるポート
netbios-ns - 137 # NETBIOS Name Service
netbios-dgm - 138 # NETBIOS Datagram Service
netbios-ssn - 139 # NETBIOS session service
microsoft-ds - 445 # if you are using Active Directory
このコマンドを実行する
netstat -anltp | grep "LISTEN"
FTP、SSH、MySQL を実行する一般的な Web サーバーの出力は次のようになります。
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 21432/mysqld
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4090/apache2
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7213/sshd
tcp6 0 0 :::21 :::* LISTEN 19023/proftpd
tcp6 0 0 :::22 :::* LISTEN 7234/sshd
答え2
あなたの質問は非常に広範囲であり、「安全」は相対的です。
サーバーをインストールしてポートを開くと、常に潜在的な脆弱性が存在します。
サーバー (ssh、samba) をインストールし、サーバーを起動すると (通常は起動時にデフォルトで起動します)、ポートが開きます。
各サーバー (ssh、samba、http) では、セキュリティを強化するために構成を変更できます。
ssh の場合、これにはキーの使用 (およびパスワードの無効化)、tcpwrapper、ファイアウォールなどが含まれます。
ファイアウォールを使用する場合、3つの戦略があります
1) すべてを許可し、不正な IP をブラックリストに登録します。この例としては、http があります。通常、http をパブリック サーバーとして実行し、すべての IP を許可し、サーバーにスパムを送信する IP をブラックリストに登録します。
2) すべてを拒否し、ホワイト リストを許可します。例としては、ssh が挙げられます。
3) 制限。接続速度や ping 数/秒を制限する場合があります。
それで始められたら、ぜひ見てください
https://help.ubuntu.com/11.10/serverguide/C/index.html
https://help.ubuntu.com/community/セキュリティ
または、特定のサーバーに関する具体的な質問をしてください。
答え3
「フィルタリング」は、必ずしもターゲット ホスト上のポートが開いていることを意味するわけではありません。
実際のところ、それは何の意味もないかもしれません。
たとえば、実行している場所nmap
とターゲットの間にファイアウォールがあり、そのファイアウォールがポート 5000 をアクティブにフィルタリングしている場合、5000 はリストに「フィルタリング済み」として表示され、ターゲット ホストはそのポートへのトラフィックを一切確認しません。そのため、ターゲットでポートが開いているかどうかはまったく関係なくなります。
サーバー上の開いているポートの確定リストについては、次を試してください。
sudo netstat -lnp --tcp --udp
-l : only show listening ports
-n : don't bother looking up DNS hostnames
-p : show which processes have the port open
--tcp : show tcp ports
--udp : show udp ports
および を省略することもできますが--tcp
、--udp
その場合、ネットワーク経由でアクセスできない無関係なローカル ファイル システム ソケット情報が大量に取得されます。
sudo
正しく動作するためには が必要です。そうしないと、ユーザーが所有していないプロセスに対して-p
のみ印刷されます。-
答え4
netstat
とは異なり、 はデフォルトでインストールされなくなったためlsof
、すぐに使用できるオプションを追加しようと思いました。
sudo lsof -nP -iTCP -sTCP:LISTEN