Yandex објави skbtrace, Π°Π»Π°Ρ‚ΠΊΠ° Π·Π° слСдСњС ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²ΠΎ Linux

Yandex Π³ΠΎ објави ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π½Π° Π°Π»Π°Ρ‚ΠΊΠ°Ρ‚Π° skbtrace, која ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° Π°Π»Π°Ρ‚ΠΊΠΈ Π·Π° слСдСњС Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈΠΎΡ‚ стСк ΠΈ слСдСњС Π½Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²ΠΎ Linux. Алатката Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½Π° ΠΊΠ°ΠΊΠΎ Π΄ΠΎΠ΄Π°Ρ‚ΠΎΠΊ Π½Π° систСмот Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡ΠΊΠΎ Π΄Π΅Π±Π°Π³ΠΈΡ€Π°ΡšΠ΅ BPFtrace. ΠšΠΎΠ΄ΠΎΡ‚ Π΅ напишан Π²ΠΎ Go ΠΈ сС дистрибуира ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Ρ†Π°Ρ‚Π° MIT. ΠŸΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π° Ρ€Π°Π±ΠΎΡ‚Π° со ΠΊΠ΅Ρ€Π½Π΅Π»ΠΈ Π½Π° Linux 4.14+ ΠΈ со ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚ Π°Π»Π°Ρ‚ΠΊΠΈ BPFTrace 0.9.2+.

Π”ΠΎΠ΄Π΅ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚ΠΈ, Π°Π»Π°Ρ‚ΠΊΠ°Ρ‚Π° skbtrace Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° скрипти Π½Π° Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚ BPFtrace Π½Π° високо Π½ΠΈΠ²ΠΎ ΠΊΠΎΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡ΠΊΠΈ Π³ΠΎ слСдат ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π°Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈ со стСкот Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Linux ΠΈ ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΡ†ΠΈ. Π‘ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΡ‚ΠΎΠ° сС ΠΏΡ€Π΅Π²Π΅Π΄ΡƒΠ²Π°Π°Ρ‚ Π²ΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°Ρ€ΠΎΡ‚ Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° eBPF ΠΈ сС ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°Π°Ρ‚ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ.

ΠœΠ΅Ρ“Ρƒ спСцифичнитС способности Π½Π° skbtrace, ΠΌΠ΅Ρ€Π΅ΡšΠ΅Ρ‚ΠΎ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° прСнос Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ Π²Π»Π΅Π·Π½ΠΈΡ‚Π΅ ΠΈ ΠΈΠ·Π»Π΅Π·Π½ΠΈΡ‚Π΅ ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠΈ, ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΈΠΎΡ‚ Π²Π΅ΠΊ Π½Π° TCP ΠΊΠΎΠ½Π΅ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° ΠΎΠ΄ ΠΏΡ€ΠΈΠΌΠ°ΡšΠ΅Ρ‚ΠΎ SYN Π΄ΠΎ ΠΏΡ€ΠΈΡΡ‚ΠΈΠ³Π½ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° FIN/RST, ΠΎΠ΄Π»ΠΎΠΆΡƒΠ²Π°ΡšΠ°Ρ‚Π° ΠΏΠΎΠΌΠ΅Ρ“Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ настани Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° ΠΏΡ€Π΅Π³ΠΎΠ²Π°Ρ€Π°ΡšΠ΅ сС Π·Π°Π±Π΅Π»Π΅ΠΆΡƒΠ²Π° TCP ΠΊΠΎΠ½Π΅ΠΊΡ†ΠΈΡ˜Π°. Skbtrace, исто Ρ‚Π°ΠΊΠ°, ΠΌΠΎΠΆΠ΅ Π΄Π° сС користи Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°ΡšΠ΅ Π½Π° Ρ€Π΅Π΅ΠΌΠΈΡ‚ΡƒΠ²Π°ΡšΠ΅ Π½Π° TCP ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, Π΄ΡƒΡ€ΠΈ ΠΈ Π°ΠΊΠΎ Ρ‚ΠΈΠ΅ сС инкапсулирани Π²ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΠΈ Π΄Π° Π΄Π΅Ρ˜ΡΡ‚Π²ΡƒΠ²Π° ΠΊΠ°ΠΊΠΎ СдноставСн Π°Π½Π°Π»ΠΎΠ³ Π½Π° Π°Π»Π°Ρ‚ΠΊΠ°Ρ‚Π° tcpdump, способСн Π΄Π° Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΈ Ρ€ΡƒΡ‚ΠΈΠ½ΠΈ Π½Π° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ ΠΏΠΎΠ²ΠΈΠΊΡƒΠ²Π°ΡšΠ΅ kfree_skb Π·Π° Π΄Π° сС ослободи ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° ΠΏΡ€ΠΈ Ρ„Ρ€Π»Π°ΡšΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ.

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€