GNU/Linux >> Belajar Linux >  >> Linux

membuang koneksi tcp tanpa tcpdump

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.


Linux
  1. Tangkap paket dengan tcpdump

  2. Batasi Koneksi TCP Maksimum ke Server Web

  3. Pengaruh SO_SNDBUF

  1. cp -r tanpa file tersembunyi

  2. Tomcat mulai tanpa kesalahan tetapi tidak mendengarkan pada 8080

  3. Hapus file tanpa diminta

  1. Bash:ls * tanpa pengelompokan folder

  2. Dapatkan jumlah koneksi yang dibuat TCP

  3. Bagaimana cara membuang lalu lintas USB?