それから壁に頭を置きます...
セキュリティの問題である可能性がある開いているポートがあることを確認する必要がある特定のサーバーに対して、デスクトップでnmapを実行しました。開かないポートを返します。
nmap -T5 WWW.XXX.YYY.ZZZ
Starting Nmap 7.12 ( https://nmap.org ) at 2016-08-09 21:21 CEST
Nmap scan report for mydomain.com (WWW.XXX.YYY.ZZZ)
Host is up (0.0034s latency).
Not shown: 992 filtered ports
PORT STATE SERVICE
80/tcp open http
110/tcp open pop3
143/tcp open imap
443/tcp open https
993/tcp open imaps
995/tcp open pop3s
Nmap done: 1 IP address (1 host up) scanned in 3.33 seconds
httpとhttpsが有効になっている必要があります。しかし、他の人はそうではありません...私は5つの異なるIPアドレスでこのテストを実行しました。
まあ、nmapがポートを開く/フィルタリング/閉じるのを選択する方法のため、間違った肯定的な可能性があります。だから私はこれらのポートにTelnet接続しようとしています...接続があります:
[meandmyself@MacBook ~]$ telnet WWW.XXX.YYY.ZZZ 110
Trying WWW.XXX.YYY.ZZZ...
Connected to mydomain.com.
Escape character is '^]'.
ターゲットホストでnetstatとiptablesをもう一度チェックして、何かが欠けていることを確認しました。
[21:55] ovh-user@mydomain:~ $ sudo netstat -tanlp | grep LISTEN
[sudo] password for ovh-user:
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1016/master
tcp 0 0 WWW.XXX.YYY.ZZZ:4444 0.0.0.0:* LISTEN 353/sshd
tcp 0 0 0.0.0.0:5665 0.0.0.0:* LISTEN 2485/icinga2
tcp 0 0 127.0.0.1:8999 0.0.0.0:* LISTEN 826/php-fpm.conf)
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 25433/mysqld
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 346/rpcbind
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 828/nginx -g daemon
tcp6 0 0 :::9000 :::* LISTEN 25477/java
tcp6 0 0 :::111 :::* LISTEN 346/rpcbind
私はrpcbindを除くすべてのサービスを知っており、nginxだけが外部からアクセスできます。ポート110、143、993、995には何もありません...
それからiptablesをもう一度確認しました。
[21:33] ovh-user@mydomain:~ $ sudo iptables -v -L INPUT
Chain INPUT (policy DROP 8 packets, 352 bytes)
pkts bytes target prot opt in out source destination
2602 749K ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
76 5472 ACCEPT all -- lo any anywhere anywhere
272 8912 ACCEPT icmp -- any any anywhere anywhere
1 64 ACCEPT tcp -- any any anywhere anywhere tcp dpt:4444
27 1604 ACCEPT tcp -- any any anywhere anywhere tcp dpt:http
1 44 ACCEPT tcp -- any any anywhere anywhere tcp dpt:https
0 0 ACCEPT tcp -- any any anywhere anywhere tcp spt:ftp state ESTABLISHED
0 0 ACCEPT tcp -- any any anywhere anywhere tcp spt:ftp-data state RELATED,ESTABLISHED
0 0 ACCEPT tcp -- any any anywhere anywhere tcp spts:1024:65535 dpts:1024:65535 state ESTABLISHED
[21:34] ovh-user@mydomain:~ $ sudo iptables -v -L FORWARD
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
[21:55] ovh-user@mydomain:~ $ sudo iptables -t nat -nvL PREROUTING
Chain PREROUTING (policy ACCEPT 1342 packets, 49898 bytes)
pkts bytes target prot opt in out source destination
popまたはimapポートに何も開いていません...
UNIXサービスとファイアウォールの基本的な理解だけでは理解できません。 Telnetが「Connected to mydomain.com」ポートを提供していますが、そのポートでリッスンするプロセスがないのはなぜですか? Telnetが特定の場所にどのように到達するかを追跡する方法はありますか?
答え1
壁に頭をぶつける人のための詳細な答えも提供されます。
1) サーバーのオープンポートを探す
まず、地図どのポートが開いていて、どのポートが閉じ/フィルタリングされているかを診断します。エンマップは各種スキャンモード開いているポートを見つけるには、これらのモードをすべて試してください。
開いているポートのリストが表示され、その一部は論理的ですが、他の一部はそうではありません。
私の場合、ポート110、143、993、995は開いてはいけません。
2)このポートは実際に開いていますか?
使用リモートログインまたはCNCこのTCPポートが実際に開いているかどうかをテストする
[meandmyself@MacBook ~]$ telnet WWW.XXX.YYY.ZZZ 110
Trying WWW.XXX.YYY.ZZZ...
Connected to mydomain.com.
Escape character is '^]'.
私の場合、サーバーのポート110に接続しようとしたときに本当の答えがありました。
ここで怖い部分はポートが開いているようです。
3) サーバー側診断
A)このポートでリッスンするプロセスは私のサーバーで実行されていますか?
ネットワーク統計またはラソフこれらの開いているポートでリッスンしている実行中のプロセスがあるかどうかを表示できます。
[21:55] ovh-user@mydomain:~ $ sudo netstat -tanlp | grep LISTEN
[sudo] password for ovh-user:
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1016/master
tcp 0 0 WWW.XXX.YYY.ZZZ:4444 0.0.0.0:* LISTEN 353/sshd
tcp 0 0 0.0.0.0:5665 0.0.0.0:* LISTEN 2485/icinga2
tcp 0 0 127.0.0.1:8999 0.0.0.0:* LISTEN 826/php-fpm.conf)
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 25433/mysqld
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 346/rpcbind
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 828/nginx -g daemon
tcp6 0 0 :::9000 :::* LISTEN 25477/java
tcp6 0 0 :::111 :::* LISTEN 346/rpcbind
私の場合、ポート110、993でリッスンするプロセスはありませんでした。ポート25、4444、5665、8999、3306、111、80、9000でリッスンするプロセスしかありませんでした。
B)私のサーバーはポート110に着信要求を受け入れますか?
iptables ルール診断INPUT, FORWARD and PREROUTING chains
[21:33] ovh-user@mydomain:~ $ sudo iptables -v -L INPUT
私の場合はデフォルトのポリシーがありました。DROP
これは、実行中のプロセスに到達する機会を得るために開いているすべてのポートを明示的に指定する必要があることを意味しました。
これで、私のサーバーがポート110の要求に応答することは不可能であると結論付けることができます。
4) ポート110で私のサーバーへの要求に誰が応答しますか?
マイコンピュータとサーバー間のパスにあるすべてのactifノードは、潜在的に要求に応答するノードです。これにはマイコンピュータも含まれることに注意してください。
この問題を診断するには、nmapとtelnetを使用してテストします。
- 他のコンピュータ
- さまざまなアクセスポイント/ ISPボックス
- さまざまな場所(Sshトンネルや他のサーバーを使用した要求プロキシ)
私の場合は、同じデータセンターにある別のサーバーを使用してテストを行いました。要点は、ホスティングプロバイダが設定したフロントエンドファイアウォールがポート110、143の要求を処理できることを確認することです。また、私の電話でポート110でTelnetをテストしました。ジュースSSH4G以上。
これらのテストでは、ポート110への要求は応答を受けませんでした。
5)したがって、このポートをローカルに開くのは私のコンピュータです。
私の場合は、OSX 10.11.5でテストしました。私のコンピュータが特定のポートでリッスンしているかどうかを追跡するためにlsofとnetstatを実行します。
[meandmyself@MacBook ~]$ sudo netstat -anv | grep LISTEN
tcp46 0 0 *.3306 *.* LISTEN 131072 131072 827 0
tcp4 0 0 127.0.0.1.4380 *.* LISTEN 131072 131072 453 0
tcp4 0 0 127.0.0.1.4370 *.* LISTEN 131072 131072 453 0
tcp6 0 0 ::1.12993 *.* LISTEN 131072 131072 352 0
tcp4 0 0 127.0.0.1.12993 *.* LISTEN 131072 131072 352 0
tcp6 0 0 ::1.12995 *.* LISTEN 131072 131072 352 0
tcp4 0 0 127.0.0.1.12995 *.* LISTEN 131072 131072 352 0
tcp6 0 0 ::1.12143 *.* LISTEN 131072 131072 352 0
tcp4 0 0 127.0.0.1.12143 *.* LISTEN 131072 131072 352 0
tcp6 0 0 ::1.12110 *.* LISTEN 131072 131072 352 0
tcp4 0 0 127.0.0.1.12110 *.* LISTEN 131072 131072 352 0
tcp6 0 0 ::1.12443 *.* LISTEN 131072 131072 352 0
tcp4 0 0 127.0.0.1.12443 *.* LISTEN 131072 131072 352 0
tcp6 0 0 ::1.12080 *.* LISTEN 131072 131072 352 0
tcp4 0 0 127.0.0.1.12080 *.* LISTEN 131072 131072 352 0
tcp46 0 0 *.80 *.* LISTEN 131072 131072 321 0
tcp4 0 0 127.0.0.1.49153 *.* LISTEN 131072 131072 78 0
tcp4 0 0 127.0.0.1.49152 *.* LISTEN 131072 131072 78 0
[meandmyself@MacBook ~]$ sudo lsof -i -n -P |grep LISTEN
mtmfs 78 root 4u IPv4 0x7f85fc078645d63b 0t0 TCP 127.0.0.1:49152 (LISTEN)
mtmfs 78 root 6u IPv4 0x7f85fc078645cd43 0t0 TCP 127.0.0.1:49153 (LISTEN)
httpd 83 root 4u IPv6 0x7f85fc0788d37b8b 0t0 TCP *:80 (LISTEN)
httpd 321 _www 4u IPv6 0x7f85fc0788d37b8b 0t0 TCP *:80 (LISTEN)
com.avast 352 root 3u IPv4 0x7f85fc0788dc363b 0t0 TCP 127.0.0.1:12080 (LISTEN)
com.avast 352 root 4u IPv6 0x7f85fc0788d380eb 0t0 TCP [::1]:12080 (LISTEN)
com.avast 352 root 5u IPv4 0x7f85fc078645df33 0t0 TCP 127.0.0.1:12443 (LISTEN)
com.avast 352 root 6u IPv6 0x7f85fc0788d3864b 0t0 TCP [::1]:12443 (LISTEN)
com.avast 352 root 7u IPv4 0x7f85fc0788dc3f33 0t0 TCP 127.0.0.1:12110 (LISTEN)
com.avast 352 root 8u IPv6 0x7f85fc0788d38bab 0t0 TCP [::1]:12110 (LISTEN)
com.avast 352 root 9u IPv4 0x7f85fc0788dc2d43 0t0 TCP 127.0.0.1:12143 (LISTEN)
com.avast 352 root 10u IPv6 0x7f85fc0788d3910b 0t0 TCP [::1]:12143 (LISTEN)
com.avast 352 root 11u IPv4 0x7f85fc0788dc482b 0t0 TCP 127.0.0.1:12995 (LISTEN)
com.avast 352 root 12u IPv6 0x7f85fc0788d3762b 0t0 TCP [::1]:12995 (LISTEN)
com.avast 352 root 13u IPv4 0x7f85fc0788dc5123 0t0 TCP 127.0.0.1:12993 (LISTEN)
com.avast 352 root 14u IPv6 0x7f85fc0788d370cb 0t0 TCP [::1]:12993 (LISTEN)
SpotifyWe 453 kheraud 6u IPv4 0x7f85fc078a53282b 0t0 TCP 127.0.0.1:4370 (LISTEN)
SpotifyWe 453 kheraud 7u IPv4 0x7f85fc078a533123 0t0 TCP 127.0.0.1:4380 (LISTEN)
mysqld 827 _mysql 33u IPv6 0x7f85fc0788d36b6b 0t0 TCP *:3306 (LISTEN)
Lsofは私に最初のヒントを与えた。私の仕事は音楽を聴くと同時にウェブサイトを構築することなので、Apache、Mysql、Spotifyが受信しなければならないポートでリッスンするのを見て驚いていませんでした。しかし、Avastは私に正しい方向を示しました。すべてのオープンポート(110、143、993、995)は、「127.0.0.1.12XXX」(12110、12143、12993、12995...)としてリストされています。
Avastがポート110で実際の要求をどのように処理するかを確認できませんでした(@MarkPlotnickは私がpfctlを使用していますが、使い方が簡単ではないと指摘しました。どんな助けでも歓迎します。)。
Avastを閉じてlsofを再実行し、telnet、nmapを実行しました。誤って開いたポートはもう存在しません。
この場合、私は恐れて手がかりを見つけるためにすぐにstackexchangeに飛び込みました。深呼吸をしてコーヒーを一杯飲んで、私のコンピュータとサーバー間のパスが何であるか考えてみる必要があります。別の場所で別のテストを試してみて、私のサーバーがセキュリティ違反を受けていないことを確認します。
結論として:1)考える2)もう一度考える3)テストする4)実行する