Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π²ΠΊΠ»ΠΈΠ½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² TCP-соСдинСния, осущСствляСмыС Ρ‡Π΅Ρ€Π΅Π· VPN-Ρ‚ΡƒΠ½Π½Π΅Π»ΠΈ

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π°Ρ‚Π°ΠΊΠΈ (CVE-2019-14899), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΏΠΎΠ΄ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² TCP-соСдинСния, пробрасываСмыС Ρ‡Π΅Ρ€Π΅Π· VPN-Ρ‚ΡƒΠ½Π½Π΅Π»ΠΈ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ Linux, FreeBSD, OpenBSD, Android, macOS, iOS ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ систСмы. Linux ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ rp_filter (reverse path filtering) для IPv4, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌ «Strict» Π½Π΅ΠΉΡ‚Ρ€Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

ΠœΠ΅Ρ‚ΠΎΠ΄ позволяСт ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ подстановку ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ TCP-соСдинСний, проходящих Π²Π½ΡƒΡ‚Ρ€ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ туннСля, Π½ΠΎ Π½Π΅ позволяСт Π²ΠΊΠ»ΠΈΠ½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² соСдинСния, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ слои ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, TLS, HTTPS, SSH). ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹Π΅ Π² VPN Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ значСния, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΈΠ· внСшнСго интСрфСйса, Π° ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ядром ΠΊΠ°ΠΊ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈΠ· VPN-интСрфСйса. НаиболСС вСроятной Ρ†Π΅Π»ΡŒΡŽ Π°Ρ‚Π°ΠΊΠΈ являСтся Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Π² Π½Π΅Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ соСдинСния HTTP, Π½ΠΎ Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΈ использованиС Π°Ρ‚Π°ΠΊΠΈ для манипуляции с ΠΎΡ‚Π²Π΅Ρ‚Π°ΠΌΠΈ DNS.

УспСшная ΠΏΠΎΠ΄ΠΌΠ΅Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² продСмонстрирована для Ρ‚ΡƒΠ½Π½Π΅Π»Π΅ΠΉ, создаваСмых ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ OpenVPN, WireGuard ΠΈ IKEv2/IPSec.Tor ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ SOCKS для проброса Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΈ привязку ΠΊ loopback-интСрфСйсу. Для IPv4 Π°Ρ‚Π°ΠΊΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π² случаС ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° rp_filter Π² Ρ€Π΅ΠΆΠΈΠΌ «Loose» (sysctl net.ipv4.conf.all.rp_filter = 2). Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ систСм примСнялся Ρ€Π΅ΠΆΠΈΠΌ «Strict», Π½ΠΎ начиная с systemd 240, Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π΄Π΅ΠΊΠ°Π±Ρ€Π΅ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π°, Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±Ρ‹Π» Π·Π°ΠΌΠ΅Π½Ρ‘Π½ Π½Π° «Loose» ΠΈ Π΄Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΡ‚Ρ€Π°Π·ΠΈΠ»ΠΎΡΡŒ Π² настройках ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΌΠ½ΠΎΠ³ΠΈΡ… дистрибутивов Linux.

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ rp_filter примСняСтся для Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡƒΡ‚Π΅ΠΉ прохоТдСния ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для прСдотвращСния спуфинга адрСса источника. ΠŸΡ€ΠΈ установкС Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0 ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° адрСса источника Π½Π΅ производится ΠΈ любой ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Π΅Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ сСтСвыми интСрфСйсами. Π Π΅ΠΆΠΈΠΌ 1 «Strict» Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ приходящСго ΠΈΠ·Π²Π½Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π° соотвСтствиС Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈ Ссли сСтСвой интСрфСйс, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ ΠΏΠ°ΠΊΠ΅Ρ‚, Π½Π΅ связан с ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠΌ доставки ΠΎΡ‚Π²Π΅Ρ‚Π°, Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ отбрасываСтся. Π Π΅ΠΆΠΈΠΌ 2 «Loose» смягчаСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ балансировщиков Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ»ΠΈ асиммСтричной ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ
ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π΅ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‚ сСтСвой интСрфСйс, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ поступил входящий ΠΏΠ°ΠΊΠ΅Ρ‚.

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ «Loose» входящий ΠΏΠ°ΠΊΠ΅Ρ‚ провСряСтся Π½Π° соотвСтствиС Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½ΠΎ считаСтся допустимым, Ссли адрСс источника достиТим Ρ‡Π΅Ρ€Π΅Π· любой ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉΡΡ сСтСвой интСрфСйс. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Π°Ρ Π°Ρ‚Π°ΠΊΠ° строится Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ с ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹ΠΌ адрСсом источника, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ интСрфСйсу VPN, ΠΈ нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ поступит Π² систСму Ρ‡Π΅Ρ€Π΅Π· внСшний сСтСвой интСрфСйс, Π° Π½Π΅ Ρ‡Π΅Ρ€Π΅Π· VPN, Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ rp_filter «Loose» Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π±Ρ€ΠΎΡˆΠ΅Π½.

Для ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ шлюз, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΡΠ΅Ρ‚ΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ MITM, ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΆΠ΅Ρ€Ρ‚Π²Ρ‹ ΠΊ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΌ Ρ‚ΠΎΡ‡ΠΊΠ΅ бСспроводного доступа ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· Π²Π·Π»ΠΎΠΌ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°). ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡ шлюз, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½ ΠΊ сСти ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ Π² контСкстС сСтСвого интСрфСйса VPN, Π½ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΡƒΠ½Π½Π΅Π»ΡŒ.

ΠŸΡƒΡ‚Ρ‘ΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ° Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… подставляСтся IP-адрСс интСрфСйса VPN, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° установлСнноС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ соСдинСниС, Π½ΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π·Π° влияниСм этих ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ лишь Ρ‡Π΅Ρ€Π΅Π· пассивный Π°Π½Π°Π»ΠΈΠ· Π·Π° ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, связанным с Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ туннСля. Для провСдСния Π°Ρ‚Π°ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ VPN-сСрвСром IP-адрСс сСтСвого интСрфСйса туннСля, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΡƒΠ½Π½Π΅Π»ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ соСдинСниС ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌΡƒ хосту.

Для опрСдСлСния IP Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сСтСвого интСрфСйса VPN ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π½Π° систСму ΠΆΠ΅Ρ€Ρ‚Π²Ρ‹ SYN-ACK ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ пСрСбирая вСсь Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… адрСсов (Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ адрСса, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² VPN ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² OpenVPN ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΠ΄ΡΠ΅Ρ‚ΡŒ 10.8.0.0/24). О сущСствовании адрСса ΠΌΠΎΠΆΠ½ΠΎ ΡΡƒΠ΄ΠΈΡ‚ΡŒ Π½Π° основС поступлСния ΠΎΡ‚Π²Π΅Ρ‚Π° с Ρ„Π»Π°Π³ΠΎΠΌ RST.

Аналогичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ опрСдСляСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ соСдинСния с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ сайтом ΠΈ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΡ€Ρ‚Π° Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° — пСрСбирая Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎΡ€Ρ‚ΠΎΠ² Π² сторону ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ отправляСтся SYN-ΠΏΠ°ΠΊΠ΅Ρ‚, Π² качСствС адрСса источника, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ подставлСн IP сайта, Π° адрСса назначСния Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ IP VPN. Π‘Π΅Ρ€Π²Π΅Ρ€Π½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡƒΠ³Π°Π΄Π°Ρ‚ΡŒ (80 для HTTP), Π° Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΡ€Ρ‚Π° Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ΠΎΠΌ, анализируя для Ρ€Π°Π·Π½Ρ‹Ρ… Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ интСнсивности ACK-ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² Π² сочСтании с отсутствиСм ΠΏΠ°ΠΊΠ΅Ρ‚Π° с Ρ„Π»Π°Π³ΠΎΠΌ RST.

На Π΄Π°Π½Π½ΠΎΠΌ этапС Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ Π·Π½Π°Π΅Ρ‚ всС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ элСмСнта соСдинСния (адрСса/ΠΏΠΎΡ€Ρ‚ IP источника ΠΈ адрСс/ΠΏΠΎΡ€Ρ‚ IP назначСния), Π½ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ воспримСт систСма ΠΆΠ΅Ρ€Ρ‚Π²Ρ‹, Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ подтвСрТдСния (seq ΠΈ ack) TCP-соСдинСния. Для опрСдСлСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ отправляСт ΠΏΠΎΠ΄Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ RST-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, пСрСбирая Ρ€Π°Π·Π½Ρ‹Π΅ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ зафиксируСт ΠΎΡ‚Π²Π΅Ρ‚Π½Ρ‹ΠΉ ACK-ΠΏΠ°ΠΊΠ΅Ρ‚, поступлСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² ΠΎΠΊΠ½ΠΎ TCP.

Π”Π°Π»Π΅Π΅ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ уточняСт ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ опрСдСлСния ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² с Ρ‚Π΅ΠΌ ΠΆΠ΅ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ ΠΈ наблюдая Π·Π° поступлСниСм ACK-ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ², послС Ρ‡Π΅Π³ΠΎ ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π—Π°Π΄Π°Ρ‡Π° услоТнСна Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ туннСля ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ лишь косвСнными ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. Π€Π°ΠΊΡ‚ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ адрСсованного VPN-сСрвСру ACK-ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ опрСдСляСтся Π½Π° основС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ², ΠΊΠΎΡ€Ρ€Π΅Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… с ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². НапримСр, для OpenVPN ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 79 позволяСт Ρ‚ΠΎΡ‡Π½ΠΎ ΡΡƒΠ΄ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ содСрТится ACK-ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅.

Π”ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ Π°Ρ‚Π°ΠΊΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π² ядро ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, Π² качСствС Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° блокирования ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ рСкомСндуСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ «preroute» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π² качСствС адрСса назначСния ΡƒΠΊΠ°Π·Π°Π½ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ IP-адрСс туннСля.

iptables -t raw -I PREROUTING ! -i wg0 -d 10.182.12.8 -m addrtype ! —src-type LOCAL -j DROP

или для nftables

nft add table ip raw
nft add chain ip raw prerouting ‘{ type filter hook prerouting priority 0; }’
nft add rule ip raw prerouting ‘iifname != «wg0» ip daddr 10.182.12.8 fib saddr type != local drop’

Для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΏΡ€ΠΈ использовании Ρ‚ΡƒΠ½Π½Π΅Π»Π΅ΠΉ с адрСсами IPv4 достаточно пСрСвСсти rp_filter Π² Ρ€Π΅ΠΆΠΈΠΌ «Strict» («sysctl net.ipv4.conf.all.rp_filter = 1»). Π‘ΠΎ стороны VPN ΠΌΠ΅Ρ‚ΠΎΠ΄ опрСдСлСния Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΡƒΡ‚Ρ‘ΠΌ добавлСния ΠΊ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌ Π΄ΠΎΠ±Π°Π²ΠΎΡ‡Π½ΠΎΠ³ΠΎ заполнСния, Π΄Π΅Π»Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ всСх ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ