1) サーバーのオープンポートを探す

1) サーバーのオープンポートを探す

それから壁に頭を置きます...

セキュリティの問題である可能性がある開いているポートがあることを確認する必要がある特定のサーバーに対して、デスクトップで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)実行する

おすすめ記事