Solusi 1:
Saya benar-benar akan mencoba untuk mendapatkan tcpdump. Karena itu, beberapa alternatif untuk melihat apakah ada koneksi tertentu untuk IP adalah:
strace:
[[email protected]: ~] strace -e trace=network nc 1.2.3.4 1234
...
socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 3
connect(3, {sa_family=AF_INET, sin_port=htons(1234), sin_addr=inet_addr("1.2.3.4")}, 16) = -1 EINPROGRESS (Operation now in progress)
lsof:
[[email protected]: ~] nc 1.2.3.4 1234 &
[1] 11434
[[email protected]: ~] lsof -p 11434
....
nc 11434 kbrandt 3u IPv4 4543149 0t0 TCP 10.7.0.78:58886->1.2.3.4:search-agent (SYN_SENT)
netstat:
[[email protected]: ~] nc 1.2.3.4 1234 &
[1] 11486
[[email protected]: ~] sudo netstat -a -p | grep 11486
tcp 0 1 10.7.0.78:58891 1.2.3.4:search-agent SYN_SENT 11486/nc
Solusi 2:
Tentunya Anda memiliki python
?
from socket import *
from struct import unpack
import sys
INTERFACE = "eth0"
TARGET = "8.8.8.8"
if __name__ == "__main__":
sock = socket(AF_PACKET, SOCK_DGRAM, 0x0800)
sock.bind((INTERFACE, 0x0800))
while True:
data = sock.recvfrom(1500, 0)[0]
ip = inet_ntop(AF_INET, data[12:16])
if ip == TARGET:
print "GOT TARGET"
sys.exit(1)
Ini akan keluar dengan "GOT TARGET" memberikan alamat IP yang cocok. Karena TCP harus mengirim sesuatu kembali selama jabat tangan, ini harus menangkap apa pun dari alamat target tertentu. Tidak peduli apakah protokolnya adalah TCP atau UDP (saya juga tidak memeriksa).
Jangan lupa ubah TARGET dan INTERFACE.
Solusi 3:
Iptables memiliki kemampuan debug dan juga dapat digunakan untuk analisis lalu lintas.
Solusinya dijelaskan pada URL di bawah ini.
Aturan debug di Iptables
Ada baiknya juga membaca URL berikut untuk menyiapkan pencatatan keluaran pelacakan ke file pilihan Anda.
http://backreference.org/2010/06/11/iptables-debugging/
Saya tidak akan menganggap solusi ini sama dengan tcpdump, tetapi dapat dilakukan dengan menggunakan instalasi minimal Centos. Anda harus berhati-hati untuk tidak mengisi disk dengan log, karena tcpdump jauh lebih efisien dalam penggunaan disk. Matikan logging jika tidak diperlukan.
Anda dapat menggunakan yang berikut ini sebagai template dasar dalam skrip Anda.
# Logging
log(){
SOURCE=a.b.c.d (IP address)
$IPT -A INPUT -s $SOURCE -m limit --limit 50/minute -j LOG --log-level 7 --log-prefix "In: "
$IPT -A OUTPUT -s $SOURCE -m limit --limit 50/minute -j LOG --log-level 7 --log-prefix "Out: "
$IPT -A FORWARD -s $SOURCE -m limit --limit 50/minute -j LOG --log-level 7 --log-prefix "Fw: "
$IPT -t nat -A POSTROUTING -m limit --limit 50/minute -j LOG --log-level 7 --log-prefix "Nat: "
}
#log (remove comment to enable)
trace(){
iptables -t raw -A PREROUTING -p tcp -j TRACE
iptables -t raw -A OUTPUT -p tcp -j TRACE
}
#trace (remove comment to enable)
Solusi 4:
Jika Anda memerlukan perangkat lunak khusus untuk melakukan pekerjaan Anda, dan tidak diizinkan, Anda tidak membuat kasus bisnis yang baik atau menjual ide Anda kepada orang yang tepat... atau Anda tidak mengendalikan sistem ini...
Jika saya ditugaskan untuk melakukan sesuatu dan memerlukan jenis informasi debug/pemecahan masalah yang Anda perlukan dalam kasus ini, saya akan menggunakan alat yang tepat. Itu mungkin tcpdump
atau tshark
. Ya, itu adalah perangkat lunak, tetapi saya menganggapnya sebagai utilitas penting . Faktanya, mereka adalah utilitas yang dapat diinstal atau dimuat ke sistem untuk sementara dan dihapus tanpa insiden (apakah media yang dapat dilepas merupakan opsi?...petunjuk )
Namun intinya adalah solusi tersendat pada kebijakan perusahaan mungkin membutuhkan lebih banyak upaya daripada mendapatkan persetujuan untuk kasus penggunaan ini.
Solusi 5:
Kyle menawarkan beberapa opsi bagus. Satu lagi akan menggunakan iptables
:
[[email protected] ~]$ sudo iptables -I OUTPUT -d 1.2.3.4/32
...
[[email protected] ~]$ sudo iptables -L OUTPUT -n -v
Chain OUTPUT (policy ACCEPT 105 packets, 35602 bytes)
pkts bytes target prot opt in out source destination
87 33484 LOG all -- * * 0.0.0.0/0 1.2.3.4 LOG flags 0 level 4
Ini pada dasarnya adalah aturan akuntansi. Itu tidak secara eksplisit mengizinkan atau menolak lalu lintas, jadi kebijakan default untuk rantai OUTPUT digunakan (yang defaultnya adalah ACCEPT). Namun, setiap paket yang cocok akan menaikkan penghitung untuk aturan tersebut.
Secara opsional, Anda juga dapat mencatat detail tentang paket dengan -j LOG
opsi:
[[email protected] ~]$ sudo iptables -I OUTPUT -d 1.2.3.4/32 -j LOG
...
[[email protected] ~]@ dmesg | grep 1.2.3.4 | tail -1
IN= OUT=eth0 SRC=192.168.1.1 DST=1.2.3.4 LEN=100 TOS=0x10 PREC=0x00 TTL=64 ...
Log akan masuk ke fasilitas logging kernel, sehingga akan muncul di /var/log/messages pada turunan Red Hat dan /var/log/kern.log pada turunan Debian. Itu juga akan terlihat di output dmesg
, seperti yang ditunjukkan. Tidak seperti tcpdump
, bagaimanapun, itu tidak akan mencatat isi lengkap dari paket, hanya isi dari header paket.