ืคื’ื™ืขื•ืช ื”ืžืืคืฉืจืช ืœื—ื˜ื•ืฃ ื—ื™ื‘ื•ืจื™ TCP ืฉื ืขืฉื• ื“ืจืš ืžื ื”ืจื•ืช VPN

ื™ืฆื ืœืื•ืจ ื˜ื›ื ื™ืงืช ืชืงื™ืคื” (CVE-2019-14899) ื”ืžืืคืฉืจืช ืœื–ื™ื™ืฃ, ืœืฉื ื•ืช ืื• ืœื”ื—ืœื™ืฃ ืžื ื•ืช ื‘ื—ื™ื‘ื•ืจื™ TCP ื”ืžื•ืขื‘ืจื™ื ื“ืจืš ืžื ื”ืจื•ืช VPN. ื”ื‘ืขื™ื” ืžืฉืคื™ืขื” ืขืœ ืœื™ื ื•ืงืก, FreeBSD, OpenBSD, ืื ื“ืจื•ืื™ื“, macOS, iOS ื•ืžืขืจื›ื•ืช ืื—ืจื•ืช ื“ืžื•ื™ื•ืช ื™ื•ื ื™ืงืก. ืœื™ื ื•ืงืก ืชื•ืžื›ืช ื‘ืžื ื’ื ื•ืŸ rp_filter (ืกื™ื ื•ืŸ ืžืกืœื•ืœ ื”ืคื•ืš) ืขื‘ื•ืจ IPv4, ื”ืคืขืœืชื• ื‘ืžืฆื‘ "ืงืคื“ื ื™" ืžื ื˜ืจืœืช ื‘ืขื™ื” ื–ื•.

ื”ืฉื™ื˜ื” ืžืืคืฉืจืช ื”ื—ืœืคืช ืžื ื•ืช ื‘ืจืžืช ื—ื™ื‘ื•ืจื™ TCP ื”ืขื•ื‘ืจื™ื ื‘ืชื•ืš ืžื ื”ืจื” ืžื•ืฆืคื ืช, ืืš ืื™ื ื” ืžืืคืฉืจืช ืชืงื™ืขื” ืœืชื•ืš ื—ื™ื‘ื•ืจื™ื ื”ืžืฉืชืžืฉื™ื ื‘ืฉื›ื‘ื•ืช ื”ืฆืคื ื” ื ื•ืกืคื•ืช (ืœื“ื•ื’ืžื”, TLS, HTTPS, SSH). ืืœื’ื•ืจื™ืชืžื™ ื”ื”ืฆืคื ื” ื”ืžืฉืžืฉื™ื ื‘-VPN ืื™ื ื ื—ืฉื•ื‘ื™ื, ืžื›ื™ื•ื•ืŸ ืฉื”ืžื ื•ืช ื”ืžื–ื•ื™ืคื•ืช ืžื’ื™ืขื•ืช ืžื”ืžืžืฉืง ื”ื—ื™ืฆื•ื ื™ ื•ืžืขื•ื‘ื“ื•ืช ืขืœ ื™ื“ื™ ื”ืœื™ื‘ื” ื›ืžื ื•ืช ืžืžืžืฉืง ื”-VPN. ื”ืžื˜ืจื” ื”ืกื‘ื™ืจื” ื‘ื™ื•ืชืจ ืฉืœ ื”ืžืชืงืคื” ื”ื™ื ืœื”ืคืจื™ืข ืœื—ื™ื‘ื•ืจื™ HTTP ืœื ืžื•ืฆืคื ื™ื, ืื‘ืœ ืœื ื ื›ืœืœ ื•ืฉื™ืžื•ืฉ ื‘ื”ืชืงืคื” ื›ื“ื™ ืœืชืคืขืœ ืชื’ื•ื‘ื•ืช DNS.

ื–ื™ื•ืฃ ืžื ื•ืช ืžื•ืฆืœื— ื”ื•ื“ื’ื ืขื‘ื•ืจ ืžื ื”ืจื•ืช ืฉื ื•ืฆืจื• ื‘ืืžืฆืขื•ืช OpenVPN, WireGuard ื•-IKEv2/IPSec. Tor ืื™ื ื• ืจื’ื™ืฉ ืœื‘ืขื™ื”, ืžื›ื™ื•ื•ืŸ ืฉื”ื•ื ืžืฉืชืžืฉ ื‘-SOCKS ื›ื“ื™ ืœื”ืขื‘ื™ืจ ืชืขื‘ื•ืจื” ื•ื”ื•ื ืงืฉื•ืจ ืœืžืžืฉืง ืœื•ืœืื” ื—ื•ื–ืจ. ืขื‘ื•ืจ IPv4, ื”ืชืงืคื” ืืคืฉืจื™ืช ืื rp_filter ืžื•ื’ื“ืจ ืœืžืฆื‘ "Loose" (sysctl net.ipv4.conf.all.rp_filter = 2). ื‘ืชื—ื™ืœื”, ืจื•ื‘ ื”ืžืขืจื›ื•ืช ื”ืฉืชืžืฉื• ื‘ืžืฆื‘ "ืงืคื“ื ื™", ืืš ื”ื—ืœ ืž ื‘ืžืงื•ื 240, ืฉื™ืฆื ื‘ื“ืฆืžื‘ืจ ื”ืื—ืจื•ืŸ, ืžืฆื‘ ื”ื”ืคืขืœื” ื”ืžื•ื’ื“ืจ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ืฉื•ื ื” ืœ-"Loose" ื•ืฉื™ื ื•ื™ ื–ื” ื‘ื ืœื™ื“ื™ ื‘ื™ื˜ื•ื™ ื‘ื”ื’ื“ืจื•ืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ ื”ืคืฆื•ืช ืœื™ื ื•ืงืก ืจื‘ื•ืช.

ืžื ื’ื ื•ืŸ rp_filter ื—ืœ ืœืื™ืžื•ืช ื ื•ืกืคืช ืฉืœ ื ืชื™ื‘ื™ ืžื ื•ืช ื›ื“ื™ ืœืžื ื•ืข ื–ื™ื•ืฃ ื›ืชื•ื‘ื•ืช ืžืงื•ืจ. ื›ืืฉืจ ืžื•ื’ื“ืจ ืœ-0, ืœื ืžืชื‘ืฆืขืช ื‘ื“ื™ืงืช ื›ืชื•ื‘ืช ืžืงื•ืจ ื•ื ื™ืชืŸ ืœื”ืขื‘ื™ืจ ื›ืœ ืžื ื” ื‘ื™ืŸ ืžืžืฉืงื™ ืจืฉืช ืœืœื ื”ื’ื‘ืœื•ืช. ืžืฆื‘ 1 "ืงืคื“ื ื™" ื›ื•ืœืœ ื‘ื“ื™ืงืช ื›ืœ ื—ื‘ื™ืœื” ืฉืžื’ื™ืขื” ืžื‘ื—ื•ืฅ ืœืชืื™ืžื•ืช ืขื ื˜ื‘ืœืช ื”ื ื™ืชื•ื‘, ื•ืื ืžืžืฉืง ื”ืจืฉืช ืฉื“ืจื›ื• ื”ืชืงื‘ืœื” ื”ื—ื‘ื™ืœื” ืื™ื ื• ืžืฉื•ื™ืš ืœืžืกืœื•ืœ ืžืกื™ืจืช ื”ืชื’ื•ื‘ื” ื”ืื•ืคื˜ื™ืžืœื™, ื”ื—ื‘ื™ืœื” ื ืžื—ืงืช. ืžืฆื‘ 2 "ืจื•ืคืฃ" ืžืจืคื” ืืช ื”ื‘ื“ื™ืงื” ื›ื“ื™ ืœืืคืฉืจ ืœืžืื–ื ื™ ืขื•ืžืกื™ื ืื• ืœื ื™ืชื•ื‘ ื-ืกื™ืžื˜ืจื™ ืœืขื‘ื•ื“ ื›ืืฉืจ
ืžืกืœื•ืœ ื”ืชื’ื•ื‘ื” ืขืฉื•ื™ ืœืขื‘ื•ืจ ื“ืจืš ืžืžืฉืง ืจืฉืช ืฉื•ื ื” ืžื–ื” ืฉื“ืจื›ื• ื”ื’ื™ืขื” ื”ื—ื‘ื™ืœื” ื”ื ื›ื ืกืช.

ื‘ืžืฆื‘ Loose, ื—ื‘ื™ืœื” ื ื›ื ืกืช ื ื‘ื“ืงืช ืžื•ืœ ื˜ื‘ืœืช ื”ื ื™ืชื•ื‘, ืืš ื ื—ืฉื‘ืช ืœืชืงืคื” ืื ื ื™ืชืŸ ืœื”ื’ื™ืข ืœื›ืชื•ื‘ืช ื”ืžืงื•ืจ ื“ืจืš ื›ืœ ืžืžืฉืง ืจืฉืช ื–ืžื™ืŸ. ื”ืžืชืงืคื” ื”ืžื•ืฆืขืช ืžื‘ื•ืกืกืช ืขืœ ื›ืš ืฉื”ืชื•ืงืฃ ื™ื›ื•ืœ ืœืฉืœื•ื— ื—ื‘ื™ืœื” ืขื ื›ืชื•ื‘ืช ืžืงื•ืจ ืžื–ื•ื™ืคืช ื”ืชื•ืืžืช ืœืžืžืฉืง ื”-VPN, ื•ืœืžืจื•ืช ืฉื”ื—ื‘ื™ืœื” ื”ื–ื• ืชื™ื›ื ืก ืœืžืขืจื›ืช ื“ืจืš ืžืžืฉืง ื”ืจืฉืช ื”ื—ื™ืฆื•ื ื™ ื•ืœื ื“ืจืš ื”-VPN, ื‘- rp_filter ืžืฆื‘ "ืจื•ืคืฃ" ื—ื‘ื™ืœื” ื›ื–ื• ืœื ืชื™ืžื—ืง.

ื›ื“ื™ ืœื‘ืฆืข ืชืงื™ืคื”, ืขืœ ื”ืชื•ืงืฃ ืœืฉืœื•ื˜ ื‘ืฉืขืจ ืฉื“ืจื›ื• ื”ืžืฉืชืžืฉ ื ื™ื’ืฉ ืœืจืฉืช (ืœื“ื•ื’ืžื”, ื“ืจืš ืืจื’ื•ืŸ MITM, ื›ืืฉืจ ื”ืงื•ืจื‘ืŸ ืžืชื—ื‘ืจ ืœื ืงื•ื“ืช ื’ื™ืฉื” ืืœื—ื•ื˜ื™ืช ื”ื ืฉืœื˜ืช ืขืœ ื™ื“ื™ ืชื•ืงืฃ, ืื• ื‘ืืžืฆืขื•ืช ืคืจื™ืฆืช ื ืชื‘). ืขืœ ื™ื“ื™ ืฉืœื™ื˜ื” ื‘ืฉืขืจ ืฉื“ืจื›ื• ืžืฉืชืžืฉ ืžื—ื•ื‘ืจ ืœืจืฉืช, ืชื•ืงืฃ ื™ื›ื•ืœ ืœืฉืœื•ื— ืžื ื•ืช ืžื–ื•ื™ืคื•ืช ืฉื™ื™ืชืคืกื• ื‘ื”ืงืฉืจ ืฉืœ ืžืžืฉืง ืจืฉืช ื”-VPN, ืืš ื”ืชื’ื•ื‘ื•ืช ื™ื ื•ืชื‘ื• ื“ืจืš ื”ืžื ื”ืจื”.

ืขืœ ื™ื“ื™ ื™ืฆื™ืจืช ื–ืจื ืฉืœ ืžื ื•ืช ืคื™ืงื˜ื™ื‘ื™ื•ืช ืฉื‘ื”ืŸ ืžื•ื—ืœืคืช ื›ืชื•ื‘ืช ื”-IP ืฉืœ ืžืžืฉืง ื”-VPN, ื ืขืฉื™ื ื ื™ืกื™ื•ื ื•ืช ืœื”ืฉืคื™ืข ืขืœ ื”ื—ื™ื‘ื•ืจ ืฉื ื•ืฆืจ ืขืœ ื™ื“ื™ ื”ืœืงื•ื—, ืืš ื ื™ืชืŸ ืœืจืื•ืช ืืช ื”ื”ืฉืคืขื” ืฉืœ ืžื ื•ืช ืืœื• ืจืง ื‘ืืžืฆืขื•ืช ื ื™ืชื•ื— ืคืกื™ื‘ื™ ืฉืœ ื–ืจื™ืžืช ื”ืชืขื‘ื•ืจื” ื”ืžื•ืฆืคื ืช ื”ืงืฉื•ืจื” ืขื ื”ืคืขืœืช ื”ืžื ื”ืจื”. ื›ื“ื™ ืœื‘ืฆืข ืชืงื™ืคื”, ืขืœื™ืš ืœื‘ืจืจ ืืช ื›ืชื•ื‘ืช ื”-IP ืฉืœ ืžืžืฉืง ืจืฉืช ื”ืžื ื”ืจื” ืฉื”ื•ืงืฆื” ืขืœ ื™ื“ื™ ืฉืจืช ื”-VPN, ื•ื›ืŸ ืœืงื‘ื•ืข ืฉื—ื™ื‘ื•ืจ ืœืžืืจื— ืกืคืฆื™ืคื™ ืคืขื™ืœ ื›ืขืช ื“ืจืš ื”ืžื ื”ืจื”.

ื›ื“ื™ ืœืงื‘ื•ืข ืืช ื”-IP ืฉืœ ืžืžืฉืง ื”ืจืฉืช ื”ื•ื™ืจื˜ื•ืืœื™ืช ืฉืœ VPN, ืžื ื•ืช SYN-ACK ื ืฉืœื—ื•ืช ืœืžืขืจื›ืช ื”ืงื•ืจื‘ืŸ, ื”ืžื•ื ื” ื‘ืจืฆืฃ ืืช ื›ืœ ื˜ื•ื•ื— ื”ื›ืชื•ื‘ื•ืช ื”ื•ื•ื™ืจื˜ื•ืืœื™ื•ืช (ืงื•ื“ื ื›ืœ, ื”ื›ืชื•ื‘ื•ืช ื”ืžืฉืžืฉื•ืช ื‘-VPN ื ืกืคืจื• ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ืœืžืฉืœ, OpenVPN ืžืฉืชืžืฉ ื‘ืจืฉืช ื”ืžืฉื ื” 10.8.0.0/24). ื ื™ืชืŸ ืœืฉืคื•ื˜ ืืช ืงื™ื•ืžื” ืฉืœ ื›ืชื•ื‘ืช ื‘ื”ืชื‘ืกืก ืขืœ ืงื‘ืœืช ืชื’ื•ื‘ื” ืขื ื“ื’ืœ RST.

ื‘ืื•ืคืŸ ื“ื•ืžื”, ื ื•ื›ื—ื•ืช ื”ื—ื™ื‘ื•ืจ ืœืืชืจ ืžืกื•ื™ื ื•ืžืกืคืจ ื”ืคื•ืจื˜ ื‘ืฆื“ ื”ืœืงื•ื— ื ืงื‘ืขื™ื - ืขืœ ื™ื“ื™ ืžื™ื•ืŸ ืžืกืคืจื™ ื”ืคื•ืจื˜ื™ื, ื ืฉืœื—ืช ืœืžืฉืชืžืฉ ื—ื‘ื™ืœืช SYN, ื›ื›ืชื•ื‘ืช ื”ืžืงื•ืจ, ืฉื‘ื” ื”-IP ืฉืœ ื”ืืชืจ ืžื•ื—ืœืฃ, ื•ื›ืชื•ื‘ืช ื”ื™ืขื“ ื”ื™ื VPN IP ื•ื™ืจื˜ื•ืืœื™. ื ื™ืชืŸ ืœื—ื–ื•ืช ืืช ื™ืฆื™ืืช ื”ืฉืจืช (80 ืขื‘ื•ืจ HTTP), ื•ื ื™ืชืŸ ืœื—ืฉื‘ ืืช ืžืกืคืจ ื”ื™ืฆื™ืื” ื‘ืฆื“ ื”ืœืงื•ื— ืขืœ ื™ื“ื™ ื›ื•ื— ื’ืก, ืœื ืชื— ืขื‘ื•ืจ ืžืกืคืจื™ื ืฉื•ื ื™ื ืืช ื”ืฉื™ื ื•ื™ ื‘ืขื•ืฆืžืช ืชื’ื•ื‘ื•ืช ื”-ACK ื‘ืฉื™ืœื•ื‘ ืขื ื”ื™ืขื“ืจ ืžื ื” ืขื ื”-RST ื“ึถื’ึถืœ.

ื‘ืฉืœื‘ ื–ื”, ื”ืชื•ืงืฃ ืžื›ื™ืจ ืืช ื›ืœ ืืจื‘ืขืช ื”ืืœืžื ื˜ื™ื ืฉืœ ื”ื—ื™ื‘ื•ืจ (ื›ืชื•ื‘ื•ืช IP ืžืงื•ืจ/ื™ืฆื™ืื” ื•ื›ืชื•ื‘ืช/ื™ืฆื™ืืช IP ืฉืœ ื™ืขื“), ืืš ืขืœ ืžื ืช ืœื™ืฆื•ืจ ื—ื‘ื™ืœื” ืคื™ืงื˜ื™ื‘ื™ืช ืฉืžืขืจื›ืช ื”ืงื•ืจื‘ืŸ ืชืงื‘ืœ, ืขืœ ื”ืชื•ืงืฃ ืœืงื‘ื•ืข ืืช ืจืฆืฃ ื”-TCP ื• ืžืกืคืจื™ ืื™ืฉื•ืจ (seq ื•-ack) - ื—ื™ื‘ื•ืจื™ื. ื›ื“ื™ ืœืงื‘ื•ืข ืืช ื”ืคืจืžื˜ืจื™ื ื”ืœืœื•, ื”ืชื•ืงืฃ ืฉื•ืœื— ืœืœื ื”ืจืฃ ืžื ื•ืช RST ืžื–ื•ื™ืคื•ืช, ืžื ืกื” ืžืกืคืจื™ ืจืฆืฃ ืฉื•ื ื™ื, ืขื“ ืฉื”ื•ื ืžื–ื”ื” ื—ื‘ื™ืœืช ืชื’ื•ื‘ื” ืฉืœ ACK, ืฉื”ื’ืขืชื” ืžืขื™ื“ื” ืขืœ ื›ืš ืฉื”ืžืกืคืจ ื ื•ืคืœ ื‘ืชื•ืš ื—ืœื•ืŸ ื”-TCP.

ืœืื—ืจ ืžื›ืŸ, ื”ืชื•ืงืฃ ืžื‘ื”ื™ืจ ืืช ื ื›ื•ื ื•ืช ื”ื”ื’ื“ืจื” ืขืœ ื™ื“ื™ ืฉืœื™ื—ืช ืžื ื•ืช ืขื ืื•ืชื• ืžืกืคืจ ื•ืชืฆืคื™ืช ืขืœ ื”ื’ืขืช ืชื’ื•ื‘ื•ืช ACK, ื•ืœืื—ืจ ืžื›ืŸ ื”ื•ื ื‘ื•ื—ืจ ืืช ื”ืžืกืคืจ ื”ืžื“ื•ื™ืง ืฉืœ ื”ืจืฆืฃ ื”ื ื•ื›ื—ื™. ื”ืžืฉื™ืžื” ืžืกื•ื‘ื›ืช ืžื”ืขื•ื‘ื“ื” ืฉืชื’ื•ื‘ื•ืช ื ืฉืœื—ื•ืช ื‘ืชื•ืš ืžื ื”ืจื” ืžื•ืฆืคื ืช ื•ื ื™ืชืŸ ืœื ืชื— ืืช ื ื•ื›ื—ื•ืชืŸ ื‘ื–ืจื ื”ืชืขื‘ื•ืจื” ื”ืžื™ื™ืจื˜ ืจืง ื‘ืฉื™ื˜ื•ืช ืขืงื™ืคื•ืช. ื”ืื ืœืงื•ื— ืฉื•ืœื— ื—ื‘ื™ืœืช ACK ื”ืžืžื•ืขื ืช ืœืฉืจืช ื”-VPN ื ืงื‘ืข ืขืœ ืกืžืš ื”ื’ื•ื“ืœ ื•ื”ืฉื”ื™ื™ื” ืฉืœ ื”ืชื’ื•ื‘ื•ืช ื”ืžื•ืฆืคื ื•ืช, ื”ืžืชื•ืืžื™ื ืขื ืฉืœื™ื—ืช ืžื ื•ืช ืžื–ื•ื™ืคื•ืช. ืœื“ื•ื’ืžื”, ืขื‘ื•ืจ 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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”