ΠΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΎΡ ARMO Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ°Ρ Π° ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΠΌΠΎΡΡΡΠ° Π½Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΡΠΊΠΈΡΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠ°ΡΠΎ ΡΠ΅ΡΠ΅Π½Π΅/Π·Π°ΠΏΠΈΡ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΎΡ Π²ΡΠ½ΡΠ΅Π½ ΡΡΡΠ²ΡΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ, ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈΡΡ Π²Ρ ΠΎΠ΄Π½ΠΎ-ΠΈΠ·Ρ ΠΎΠ΄Π΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ io_uring, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ ΠΎΡ ΡΠ΄ΡΠΎΡΠΎ, Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. Linux 5.1.
Π‘ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° Π΅, ΡΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (ΡΠ΅ΡΠ΅Π½Π΅/Π·Π°ΠΏΠΈΡ, 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 Π΄ΠΎΠ±Π°Π²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° io_uring_disabled. Google Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ° io_uring ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π² ChromeOS. Android ΠΈ ΡΠ°ΠΌΠΈ ΡΡΡΠ²ΡΡΠΈ, ΠΎΠ±ΡΡΠ½ΡΠ²Π°ΠΉΠΊΠΈ, ΡΠ΅ Π»ΠΎΡΠ°ΡΠ° ΡΠΈΡΡΠ°ΡΠΈΡ ΡΡΡ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° ΠΏΡΠΈ io_uring Π½Π°Π΄Π²ΠΈΡΠ°Π²Π° ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°ΡΠ° Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΎΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° io_uring.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
