私のサーバーがリモートサーバーとの接続を確立したのか、リモートサーバーが自分のサーバーにアクセスしようとしているのかを知りたいです。出力を読み、lsof
次の情報を取得しようとします。
lsof -i TCP:25
USER FD TYPE DEVICE SIZE/OFF NODE NAME
master 2657 root 12u IPv4 8086 0t0 TCP *:smtp (LISTEN)
smtpd 12950 postfix 6u IPv4 8086 0t0 TCP *:smtp (LISTEN)
smtpd 12950 postfix 9u IPv4 35762406 0t0 TCP hostname:smtp->spe.cif.ic.IP:55277 (ESTABLISHED)
smtp 13007 postfix 13u IPv4 35762309 0t0 TCP hostname:34434->fake.VVVVV.fr:smtp (ESTABLISHED)
smtpd 14188 postfix 6u IPv4 8086 0t0 TCP *:smtp (LISTEN)
smtpd 14188 postfix 9u IPv4 35748921 0t0 TCP hostname:smtp->XX.XX.XX.XX:55912 (ESTABLISHED)
smtpd 14897 postfix 6u IPv4 8086 0t0 TCP *:smtp (LISTEN)
spe.cif.ic.IP
このメッセージが私のサーバーが接続しようとしていることを意味するのか、それともその逆なのか疑問に思います。
このフラグは->
関連していますか?それとも別のコマンドを使用する必要がありますか?
答え1
手がかりはポート番号にあるようです。これら2つのアイテムを入手してください。
smtpd 12950 postfix 9u IPv4 35762406 0t0 TCP hostname:smtp->spe.cif.ic.IP:55277 (ESTABLISHED)
smtp 13007 postfix 13u IPv4 35762309 0t0 TCP hostname:34434->fake.VVVVV.fr:smtp (ESTABLISHED)
smtpdはsmtp(25)ポートの拡張ポートから接続を受信し、smtpはローカル拡張ポートを使用してリモートポートsmtp(25)に接続します。
だから->
その意味は接続済み
答え2
lsof
少なくともLinuxでは、情報が得られない場所からリストを取得するため、どちらから接続を開始したかを知る方法はありません。/proc/net/tcp
最初のアドレスは常に次を参照します。地元のエンドポイント。
ss
接続情報を取得するために別のカーネルAPIを使用するこのユーティリティの最新バージョンは-e
指示を提供しますが、残念ながらTCP接続では機能しません。
〜のように@XTianが言った。、TCP / SCTP / UDPを使用すると、通常は接続イニシエータが高いポートを使用し、ターゲットは一般によく知られている低ポートであるため、どちらかを推測できます。しかし保証はありません。マシンが利用可能であることを確認してください。聞く同じポートにあるソケットを使用すると、その方向のアイデアも得られます。たとえば、あなたの場合、portではリッスンしますsmtp/25
が、portではリッスンしないプロセスがあるかもしれませんunknown/34434
。fake.VVVVV.fr
特に、ソースポート25 / smtpを使用してコンピュータのポート34434への接続を開始した可能性はほとんどありません(可能性は低いが完全に可能です)。
信頼性を高めるために接続トラッカーを照会できます。
システムのファイアウォール接続トラッカーは、接続を開始したエンド(またはUDPなどの非接続トランスポートプロトコルに対して最初のパケットを送信したエンド)を追跡します。conntrack
コマンドラインユーティリティやtopなどのコマンドを使用して、接続追跡テーブルを照会できますiptstate
。
ここで、各行の最初のアドレスは接続が開始されたアドレスになります。
これには追跡されたすべての接続が含まれるため、システム(ルーターなど)を介して転送された接続も含まれる場合があります。