Log koneksi ke program

9

Selain menggunakan iptables untuk mencatat koneksi yang masuk ..

Apakah ada cara untuk login koneksi masuk yang masuk ke layanan yang Anda tidak memiliki sumber untuk (misalkan layanan tidak mencatat hal-hal seperti ini sendiri)? Yang ingin saya lakukan adalah mengumpulkan beberapa informasi berdasarkan siapa yang terhubung untuk dapat memberi tahu hal-hal seperti berapa kali hari layanan paling banyak digunakan, di mana di dunia basis pengguna utama adalah, dll.

Saya sadar saya bisa menggunakan netstatdan menghubungkannya ke skrip cron, tapi itu mungkin tidak akurat, karena skrip hanya bisa berjalan sesering satu menit.

Inilah yang sedang saya pikirkan saat ini:

  • Tulis sebuah program yang terus-menerus mengadakan polling netstat, mencari koneksi yang tidak muncul pada polling sebelumnya. Ide ini sepertinya membuang-buang waktu cpu, karena mungkin tidak ada koneksi baru ..
  • Tulis program pembungkus yang menerima koneksi masuk pada port apa pun yang menjalankan layanan, tetapi kemudian saya tidak akan tahu bagaimana meneruskan koneksi itu ke layanan nyata.

Sunting: Baru saja terpikir oleh saya bahwa pertanyaan ini mungkin lebih baik untuk stackoverflow, meskipun saya tidak yakin. Maaf kalau ini tempat yang salah.

Zac
sumber
Mengapa Anda mengecualikan penggunaan iptables? Port mana yang didengarkan aplikasi kita?
user9517
Terutama karena saya ingin memiliki kontrol lebih besar atas pencatatan. Idealnya saya hanya ingin dapat menangani pencatatan sesuai keinginan saya setiap kali koneksi baru terdeteksi. Port apa saja. Tidak ada satu-satunya aplikasi spesifik yang akan saya gunakan untuk ini, itulah sebabnya saya tidak bertanya bagaimana cara mendata sesuatu seperti nama pengguna atau sesuatu seperti itu.
Zac
Anda bisa menggunakan iptables hanya untuk mencatat koneksi masuk baru, ke port apa saja. Saya melakukan itu, pada beberapa kotak. Jadi saya ulangi pertanyaan bagus Iain: mengapa Anda mengecualikan penggunaan iptables?
MadHatter
Apakah Anda dapat menempatkan proxy sebelum aplikasi? Itu hanya perlu menjadi sangat sederhana yang menerima permintaan, mencatatnya dan meneruskannya. Anda dapat mem-portkan sinyal yang masuk ke proxy, yang kemudian relay ke aplikasi pada port asli.
John Gardeniers

Jawaban:

4

Anda dapat mencatat koneksi baru dengan iptables

iptables -I INPUT -m state --state NEW -j LOG --log-level 1 --log-prefix "New Connection "

Ini akan menambahkan pesan seperti ini untuk koneksi ssh baru

6 Okt 10:58:23 centos kernel: Koneksi Baru IN = eth0 OUT = MAC = 00: 0c: 29: 5b: a5: ea: 00: 0c: 29: 2d: 94: a0: 08: 00 SRC = 192.168. 1.72 DST = 192.168.254.187 LEN = 52 TOS = 0x00 PREC = 0x00 TTL = 126 ID = 15498 DF PROTO = TCP SPT = 59221 DPT = 22 WINDOW = 8192 RES = 0x00 SYN URGP = 0

atau seperti ini untuk koneksi http baru

6 Okt 11:03:56 centos kernel: Koneksi Baru IN = eth0 OUT = MAC = 00: 0c: 29: 5b: a5: ea: 00: 0c: 29: d2: 2c: 38: 08: 00 SRC = 192.168. 254.188 DST = 192.168.254.187 LEN = 60 TOS = 0x10 PREC = 0x00 TTL = 64 ID = 10345 DF PROTO = TCP SPT = 52488 DPT = 80 WINDOW = 14600 RES = 0x00 SYN URGP = 0

dan seterusnya untuk setiap koneksi baru ke sistem Anda. Ini akan masuk ke mana pun syslog Anda dikonfigurasi untuk mengirim pesan kern.warning.

user9517
sumber
Setelah melakukan lebih banyak melihat-lihat, cara ini tampaknya menjadi taruhan terbaik saya. Saya hanya akan menggabungkan ini dengan rsyslog untuk login ke file terpisah. Terima kasih banyak atas jawaban informatif Anda Iain!
Zac
0

Anda dapat menggunakan auditd dan pada akhir hari menghitung beberapa statistik berdasarkan loglines tersebut. Atau Anda juga bisa pergi ke solusi snmp tetapi mungkin Anda telah menulis mib Anda sendiri

Nikolaidis Fotis
sumber
0

Bagaimana dengan tcpdump atau wireshark?

Guntis
sumber
Harap perluas jawaban Anda sedikit lagi. Mungkin menyarankan kepada pengguna bagaimana tcpdump dan wireshark akan menguntungkan upaya pemecahan masalah.
Magellan
manual tcpdump dengan itu Anda bisa login paket lengkap. Anda juga dapat menangkap paket dengan tcpdump dan kemudian menganalisisnya di wireshark. tcpdump -i <interface> -s 65535 -w <some-file>Selain itu, Anda harus menghentikan penangkapan dengan ^ C ketika Anda yakin telah menangkap paket yang cukup.
Guntis