ΠΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° ARMO Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ°Ρ Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΡΡΠΊΠΈΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΈΠΏΠΈΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠ°ΡΠΎ ΡΠ΅ΡΠ΅Π½Π΅/Π·Π°ΠΏΠΈΡ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΎΡ Π²ΡΠ½ΡΠ΅Π½ ΡΡΡΠ²ΡΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡΡ Π·Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π΅Π½ Π²Ρ ΠΎΠ΄/ΠΈΠ·Ρ ΠΎΠ΄ io_uring, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΎΡ ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux 5.1.
Π‘ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° Π΅, ΡΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (read/write, recv/send/connect/bind/listen) ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΎΠ±ΡΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ io_uring (io_uring_enter, io_uring_setup, io_uring_register ΠΈ Π΄Ρ.), ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΠΎΡ ΡΠΈΠΏΠΈΡΠ½ΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° Π·Π»ΠΎΠ²ΡΠ΅Π΄Π½Π° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ. ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡΡ io_uring ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΎΠΊΠΎΠ»ΠΎ 60 ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. Π ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ ΡΡΠ΅Π· io_uring.
ΠΠ° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ ΠΏΡΠΎΡΠΎΡΠΈΠΏ Π½Π° ΡΡΡΠΊΠΈΡ Curing, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΊΠ°ΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΎΡ Π²ΡΠ½ΡΠ΅Π½ ΡΡΡΠ²ΡΡ ΠΈ ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅/ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. Π Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡΡΠ° Π±Π΅ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° TCP ΠΏΠΎΡΡ 8888 Π½Π° Π²ΡΠ½ΡΠ΅Π½ Ρ ΠΎΡΡ ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°ΠΉΠ»Π° Β«/etc/shadowΒ». ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΡΠ΅, ΡΠ΅ ΡΠ»Π΅Π΄ ΡΡΠΏΠ΅ΡΠ½Π° ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠ°ΡΠΈΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠ°Π²Π° root, Π°ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡΡ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° ΡΡΡΠΊΠΈΡΠ°, Π·Π° Π΄Π° Π·Π°ΡΠ²ΡΡΠ΄ΠΈ ΠΏΡΠΈΡΡΡΡΠ²ΠΈΠ΅ΡΠΎ ΡΠΈ Π² Ρ Π°ΠΊΠ½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°.
Π ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΡΡΡΠΊΠΈΡΠ° Curing Π½Π΅ Π±Π΅ΡΠ΅ Π·Π°ΡΠ΅ΡΠ΅Π½Π° ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Falco ΠΈ Tetragon, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΡΡΡ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ°, Π½Π° Ρ ΠΎΡΡΠΎΠ²Π΅ ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ (ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°, Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° Kubernetes). Π£ΠΊΠ°Π·Π°Π½ΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΡΠΈΡ Π²Π°ΡΠ°Π½Π΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π·Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° ΡΠ°ΠΊΠΈΠ²Π° ΡΡΠ±ΠΈΡΠΈΡ, ΠΊΠ°ΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈ, ΠΌΡΠ΅ΠΆΠΎΠ²Π° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π½ΠΎ Π½Π΅ Π²Π·Π΅ΠΌΠ°Ρ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° io_uring Π·Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΠΎ-Π³ΠΎΠ»ΡΠΌΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ Π½Π°Π»ΠΈΡΠ½ΠΈΡΠ΅ Π·Π° Linux ΠΊΠΎΠΌΠ΅ΡΡΠΈΠ°Π»Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ ΠΈ ΡΠ΅Π°Π³ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈ ΠΏΠΎ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° ΡΡΡΠΎ ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π°Ρ Π½Π° ΠΏΡΠΈΡ Π²Π°ΡΠ°Π½Π΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ.
ΠΠ° Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈ Π·Π°ΠΎΠ±ΠΈΠΊΠ°Π»ΡΠ½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²Π° ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ, Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΈΡ Π²Π°ΡΠ°Π½Π΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ, ΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡΡ KRSI (Kernel Runtime Security Instrumentation), ΠΊΠΎΠΉΡΠΎ Π΅ Π½Π°Π»ΠΈΡΠ΅Π½ Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux 5.7 ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΡΠΈΠΊΡΠ΅ΠΏΡΠ½Π΅ Π½Π° BPF-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΠΊΡΠΌ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ LSM-Ρ ΡΠΊΠΎΠ²Π΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, KRSI Π½Π° Π½ΠΈΠ²ΠΎ LSM-Ρ ΡΠΊΠΎΠ²Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΌΡΠ΅ΠΆΠΎΠ² Π΄ΠΎΡΡΡΠΏ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ²Π° Π΄Π°Π»ΠΈ ΡΠ΅Π·ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ° ΠΈΠ½ΠΈΡΠΈΠΈΡΠ°Π½ΠΈ ΡΡΠ΅Π· ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ ΠΈΠ»ΠΈ ΡΡΠ΅Π· io_uring.
ΠΠΎΡΠ΅ΡΠ°ΡΠ° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ° io_uring ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Π±Π΅ΡΠ΅ ΠΎΠ±Π΅ΠΊΡ Π½Π° ΠΊΡΠΈΡΠΈΠΊΠ° ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠ΅Π΄ΠΎΠ²Π½ΠΎ ΠΏΠΎΡΠ²ΡΠ²Π°ΡΠΈ ΡΠ΅ ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ. Π ΠΎΡΠ³ΠΎΠ²ΠΎΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡΠ΅ ΠΆΠ΅Π»Π°Π½ΠΈΡ Π·Π° ΠΏΡΠΎΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° io_uring Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡ ΠΎΡ ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ΄ΡΠΎΡΠΎ, Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux 6.6 Π±Π΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ sysctl io_uring_disabled. ΠΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Google ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈ io_uring Π² ChromeOS, Android ΠΈ Π½Π° ΡΠ²ΠΎΠΈΡΠ΅ ΡΡΡΠ²ΡΡΠΈ, ΠΏΠΎΡΡΠ½ΡΠ²Π°ΠΉΠΊΠΈ, ΡΠ΅ ΡΡΠ°Π³ΠΈΡΠ½Π°ΡΠ° ΡΠΈΡΡΠ°ΡΠΈΡ ΡΡΡ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° ΠΏΡΠΈ io_uring Π½Π°Π΄Π²ΠΈΡΠ°Π²Π° ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°ΡΠ° ΠΎΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° io_uring Π·Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
