Π‘ΠΏΠΎΡΠ΅Π΄ ΡΡΠ°ΡΠΈΡΡΠΈΡΠΊΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΠΎΠ±Π΅ΠΌΠΎΡ Π½Π° ΠΌΡΠ΅ΠΆΠ½ΠΈΠΎΡ ΡΠΎΠΎΠ±ΡΠ°ΡΠ°Ρ ΡΠ΅ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π° Π·Π° ΠΎΠΊΠΎΠ»Ρ 50% ΡΠ΅ΠΊΠΎΡΠ° Π³ΠΎΠ΄ΠΈΠ½Π°. ΠΠ²Π° Π΄ΠΎΠ²Π΅Π΄ΡΠ²Π° Π΄ΠΎ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°ΡΠ΅ Π½Π° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΎΠΏΡΠ΅ΠΌΠ°ΡΠ° ΠΈ, ΠΎΡΠΎΠ±Π΅Π½ΠΎ, Π³ΠΈ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π° Π±Π°ΡΠ°ΡΠ°ΡΠ° Π·Π° ΠΈΠ·Π²Π΅Π΄Π±Π° Π½Π° IDS/IPS. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΡΠΏΠΈΡΠ΅ ΡΠΊΠ°ΠΏ ΡΠΏΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ Ρ Π°ΡΠ΄Π²Π΅Ρ, Π½ΠΎ ΠΏΠΎΡΡΠΎΠΈ ΠΏΠΎΠ΅Π²ΡΠΈΠ½Π° ΠΎΠΏΡΠΈΡΠ° - ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° Π΅Π΄Π΅Π½ ΠΎΠ΄ ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ ΡΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄. ΠΠ½ΠΎΠ³Ρ ΠΏΠΎΡΠ΅ΡΠ½ΠΈΡΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈ ΠΌΠΈΡΠ»Π°Ρ Π΄Π΅ΠΊΠ° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ΡΠΎ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° Π±Π΅ΡΠΏΠ»Π°ΡΠ΅Π½ IPS Π΅ Π΄ΠΎΡΡΠ° ΡΠ΅ΡΠΊΠΎ. ΠΠΎ ΡΠ»ΡΡΠ°ΡΠΎΡ ΡΠΎ Suricata, ΠΎΠ²Π° Π½Π΅ Π΅ ΡΠΎΡΠ΅ΠΌΠ° ΡΠΎΡΠ½ΠΎ - ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ Π΄Π° ΠΎΠ΄Π±ΠΈΠ²Π°ΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈ Π½Π°ΠΏΠ°Π΄ΠΈ ΡΠΎ Π·Π±ΠΈΡ Π½Π° Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΌΠΈΠ½ΡΡΠΈ.
ΠΠΎΡΡΠΎ Π½ΠΈ ΡΡΠ΅Π±Π° ΡΡΡΠ΅ Π΅Π΄Π΅Π½ ΠΎΡΠ²ΠΎΡΠ΅Π½ IPS?
ΠΠΎΠ»Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠ΅ ΡΠΌΠ΅ΡΠ°ΡΠ΅ Π·Π° ΡΡΠ°Π½Π΄Π°ΡΠ΄, Snort Π±Π΅ΡΠ΅ Π²ΠΎ ΡΠ°Π·Π²ΠΎΡ ΠΎΠ΄ ΠΊΡΠ°ΡΠΎΡ Π½Π° Π΄Π΅Π²Π΅Π΄Π΅ΡΠ΅ΡΡΠΈΡΠ΅, ΠΏΠ° Π·Π°ΡΠΎΠ° ΠΏΡΠ²ΠΈΡΠ½ΠΎ Π±Π΅ΡΠ΅ ΡΠΎ Π΅Π΄Π½Π° Π½ΠΈΡΠΊΠ°. Π‘ΠΎ ΡΠ΅ΠΊΠΎΡ Π½Π° Π³ΠΎΠ΄ΠΈΠ½ΠΈΡΠ΅, Π³ΠΈ ΠΈΠΌΠ° ΡΡΠ΅ΠΊΠ½Π°ΡΠΎ ΡΠΈΡΠ΅ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ°ΡΠ° Π·Π° IPv6, ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠ° Π·Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΈΠ»ΠΈ ΡΠ½ΠΈΠ²Π΅ΡΠ·Π°Π»Π΅Π½ ΠΌΠΎΠ΄ΡΠ» Π·Π° ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ.
ΠΡΠ½ΠΎΠ²Π½ΠΈΠΎΡ ΠΌΠΎΡΠΎΡ Snort 2.X Π½Π°ΡΡΠΈ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ°Π΄ΡΠ°, Π½ΠΎ ΠΎΡΡΠ°Π½Π° ΡΠΎ Π΅Π΄Π½Π° Π½ΠΈΡΠΊΠ° ΠΈ Π·Π°ΡΠΎΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ ΠΎΠΏΡΠΈΠΌΠ°Π»Π½ΠΎ Π΄Π° Π³ΠΈ ΠΈΡΠΊΠΎΡΠΈΡΡΠΈ ΠΏΡΠ΅Π΄Π½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΡΠ΅ Ρ Π°ΡΠ΄Π²Π΅ΡΡΠΊΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠΎΡ Π±Π΅ΡΠ΅ ΡΠ΅ΡΠ΅Π½ Π²ΠΎ ΡΡΠ΅ΡΠ°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ, Π½ΠΎ Π±Π΅ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠΎΠ»ΠΊΡ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΠΈ ΡΡΠΎ Suricata, Π½Π°ΠΏΠΈΡΠ°Π½Π° ΠΎΠ΄ Π½ΡΠ»Π°, ΡΡΠΏΠ΅Π° Π΄Π° ΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΈ Π½Π° ΠΏΠ°Π·Π°ΡΠΎΡ. ΠΠΎ 2009 Π³ΠΎΠ΄ΠΈΠ½Π°, ΡΠΎΡ ΠΏΠΎΡΠ½Π° Π΄Π° ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° ΡΠΎΠΊΠΌΡ ΠΊΠ°ΠΊΠΎ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ Π½ΠΈΡΠΊΠΈ Π½Π° Snort, ΠΊΠΎΡ ΠΈΠΌΠ°ΡΠ΅ IPS ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π°Π΄Π²ΠΎΡ ΠΎΠ΄ ΠΊΡΡΠΈΡΠ°ΡΠ°. ΠΠΎΠ΄ΠΎΡ ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° GPLv2, Π½ΠΎ ΡΠΈΠ½Π°Π½ΡΠΈΡΠΊΠΈΡΠ΅ ΠΏΠ°ΡΡΠ½Π΅ΡΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ ΠΈΠΌΠ°Π°Ρ ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ Π·Π°ΡΠ²ΠΎΡΠ΅Π½Π° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° ΠΌΠΎΡΠΎΡΠΎΡ. ΠΠ΅ΠΊΠΎΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΠΎ ΠΏΡΠΈΡΠΏΠΎΡΠΎΠ±Π»ΠΈΠ²ΠΎΡΡ ΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΈΡΠ° Π²ΠΎ ΠΏΡΠ²ΠΈΡΠ΅ Π²Π΅ΡΠ·ΠΈΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ, Π½ΠΎ ΡΠΈΠ΅ Π±Π΅Π° ΡΠ΅ΡΠ΅Π½ΠΈ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ Π±ΡΠ·ΠΎ.
ΠΠΎΡΡΠΎ Π‘ΡΡΠΈΠΊΠ°ΡΠ°?
Suricata ΠΈΠΌΠ° Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ (ΠΊΠ°ΠΊΠΎ Snort): ΡΠ½ΠΈΠΌΠ°ΡΠ΅, ΡΡΠ΅ΠΊΠ½ΡΠ²Π°ΡΠ΅, Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°ΡΠ΅, ΠΎΡΠΊΡΠΈΠ²Π°ΡΠ΅ ΠΈ ΠΈΠ·Π»Π΅Π·. Π‘ΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ, ΡΠ½ΠΈΠΌΠ΅Π½ΠΈΠΎΡ ΡΠΎΠΎΠ±ΡΠ°ΡΠ°Ρ ΠΎΠ΄ΠΈ ΠΏΡΠ΅Π΄ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°ΡΠ΅ Π²ΠΎ Π΅Π΄Π½Π° Π½ΠΈΡΠΊΠ°, ΠΈΠ°ΠΊΠΎ ΠΎΠ²Π° ΠΏΠΎΠ²Π΅ΡΠ΅ Π³ΠΎ Π²ΡΠΈΡΡΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ. ΠΠΎΠΊΠΎΠ»ΠΊΡ Π΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ, Π½ΠΈΡΠΊΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ΄Π΅Π»Π°Ρ Π²ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈΡΠ΅ ΠΈ Π΄Π° ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π°Ρ ΠΌΠ΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈΡΠ΅ - Suricata Π΅ ΠΌΠ½ΠΎΠ³Ρ Π΄ΠΎΠ±ΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ Π·Π° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅Π½ Ρ Π°ΡΠ΄Π²Π΅Ρ, ΠΈΠ°ΠΊΠΎ ΠΎΠ²Π° ΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π΅ Π΅ Π½ΠΈΠ²ΠΎ HOWTO Π·Π° ΠΏΠΎΡΠ΅ΡΠ½ΠΈΡΠΈ. ΠΡΡΠΎ ΡΠ°ΠΊΠ°, Π²ΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ΅ Π½Π°ΠΏΠΎΠΌΠ΅Π½Π΅ Π΄Π΅ΠΊΠ° Suricata ΠΈΠΌΠ° Π½Π°ΠΏΡΠ΅Π΄Π½ΠΈ Π°Π»Π°ΡΠΊΠΈ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° HTTP Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° HTP. Π’ΠΈΠ΅ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π·Π° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠΎΠΎΠ±ΡΠ°ΡΠ°Ρ Π±Π΅Π· ΠΎΡΠΊΡΠΈΠ²Π°ΡΠ΅. Π‘ΠΈΡΡΠ΅ΠΌΠΎΡ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°ΡΠ΅ IPv6, Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΡΠΈ ΡΡΠ½Π΅Π»ΠΈ IPv4-in-IPv6, IPv6-in-IPv6 ΠΈ Π΄ΡΡΠ³ΠΈ.
ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΈ Π·Π° ΠΏΡΠ΅ΡΡΠ΅ΡΠ½ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΎΠΎΠ±ΡΠ°ΡΠ°ΡΠΎΡ (NFQueue, IPFRing, LibPcap, IPFW, AF_PACKET, PF_RING), Π° Π²ΠΎ ΡΠ΅ΠΆΠΈΠΌΠΎΡ Unix Socket ΠΌΠΎΠΆΠ΅ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ Π΄Π° Π³ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ PCAP-Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈΡΠ΅ ΡΠ½ΠΈΠΌΠ΅Π½ΠΈ ΠΎΠ΄ Π΄ΡΡΠ³ ΡΡΠ°Π³Π°Ρ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, ΠΌΠΎΠ΄ΡΠ»Π°ΡΠ½Π°ΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π° Suricata Π³ΠΎ ΠΎΠ»Π΅ΡΠ½ΡΠ²Π° ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π·Π° ΡΠ½ΠΈΠΌΠ°ΡΠ΅, Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°ΡΠ΅, Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΌΡΠ΅ΠΆΠ½ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ. ΠΡΡΠΎ ΡΠ°ΠΊΠ°, Π²Π°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈ Π΄Π΅ΠΊΠ° Π²ΠΎ Π‘ΡΡΠΈΠΊΠ°ΡΠ° ΡΠΎΠΎΠ±ΡΠ°ΡΠ°ΡΠΎΡ Π΅ Π±Π»ΠΎΠΊΠΈΡΠ°Π½ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈΠΎΡ ΡΠΈΠ»ΡΠ΅Ρ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π΅Π½ ΡΠΈΡΡΠ΅ΠΌ. ΠΠΎ GNU/Linux, Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈ ΡΠ΅ Π΄Π²Π΅ ΠΎΠΏΡΠΈΠΈ Π·Π° IPS ΡΠ°Π±ΠΎΡΠ°: ΠΏΡΠ΅ΠΊΡ ΡΠ΅Π΄ΠΎΡ NFQUEUE (ΡΠ΅ΠΆΠΈΠΌ NFQ) ΠΈ ΠΏΡΠ΅ΠΊΡ Π½ΡΠ»ΡΠ° ΠΊΠΎΠΏΠΈΡΠ° (ΡΠ΅ΠΆΠΈΠΌ AF_PACKET). ΠΠΎ ΠΏΡΠ²ΠΈΠΎΡ ΡΠ»ΡΡΠ°Ρ, ΠΏΠ°ΠΊΠ΅ΡΠΎΡ ΡΡΠΎ Π²Π½Π΅ΡΡΠ²Π° iptables ΡΠ΅ ΠΈΡΠΏΡΠ°ΡΠ° Π²ΠΎ ΡΠ΅Π΄ΠΎΡ NFQUEUE, ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΈ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ. Suricata Π³ΠΎ Π²ΠΎΠ΄ΠΈ ΡΠΏΠΎΡΠ΅Π΄ ΡΠ²ΠΎΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΈ ΠΈΠ·Π΄Π°Π²Π° Π΅Π΄Π½Π° ΠΎΠ΄ ΡΡΠΈΡΠ΅ ΠΏΡΠ΅ΡΡΠ΄ΠΈ: NF_ACCEPT, NF_DROP ΠΈ NF_REPEAT. ΠΡΠ²ΠΈΡΠ΅ Π΄Π²Π΅ ΡΠ΅ ΡΠ°ΠΌΠΎΠΎΠ±ΡΠ°ΡΠ½Π΅ΡΠΈ, Π½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΎΡ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΎΠ±Π΅Π»Π΅ΠΆΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΈ Π΄Π° Π³ΠΈ ΠΈΡΠΏΡΠ°ΡΠΈΡΠ΅ Π½Π° ΠΏΠΎΡΠ΅ΡΠΎΠΊΠΎΡ Π½Π° ΡΠ΅ΠΊΠΎΠ²Π½Π°ΡΠ° ΡΠ°Π±Π΅Π»Π° iptables. Π Π΅ΠΆΠΈΠΌΠΎΡ AF_PACKET Π΅ ΠΏΠΎΠ±ΡΠ·, Π½ΠΎ Π½Π°ΠΌΠ΅ΡΠ½ΡΠ²Π° Π³ΠΎΠ»Π΅ΠΌ Π±ΡΠΎΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΡΠ²Π°ΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ: ΠΌΠΎΡΠ° Π΄Π° ΠΈΠΌΠ° Π΄Π²Π° ΠΌΡΠ΅ΠΆΠ½ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΈ ΠΈ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΠΊΠΎ ΠΏΠΎΡΡΠ°. ΠΠ»ΠΎΠΊΠΈΡΠ°Π½ΠΈΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π½Π΅ ΡΠ΅ ΠΏΡΠ΅ΠΏΡΠ°ΡΠ° Π½Π° Π²ΡΠΎΡΠΈΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ.
ΠΠ°ΠΆΠ½Π° ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° Π½Π° Suricata Π΅ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠ° Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΡΠ»ΡΡΡΠ²Π°ΡΠ°ΡΠ° Π·Π° Snort. ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΡ ΠΈΠΌΠ° ΠΏΡΠΈΡΡΠ°ΠΏ, ΠΎΡΠΎΠ±Π΅Π½ΠΎ, Π΄ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°ΡΠ° Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π° Sourcefire VRT ΠΈ OpenSource Emerging Threats, ΠΊΠ°ΠΊΠΎ ΠΈ Π΄ΠΎ ΠΊΠΎΠΌΠ΅ΡΡΠΈΡΠ°Π»Π½ΠΈΠΎΡ Emerging Threats Pro. Π£Π½ΠΈΡΠΈΡΠΈΡΠ°Π½ΠΈΠΎΡ ΠΈΠ·Π»Π΅Π· ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ° ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΏΠΎΠΏΡΠ»Π°ΡΠ½ΠΈ ΠΏΠΎΠ·Π°Π΄ΠΈΠ½ΠΈ, Π° ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ ΠΏΠΎΠ΄Π΄ΡΠΆΠ°Π½ ΠΈΠ·Π»Π΅Π·ΠΎΡ Π΄ΠΎ PCAP ΠΈ Syslog. Π‘ΠΈΡΡΠ΅ΠΌΡΠΊΠΈΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠ΅ Π·Π°ΡΡΠ²Π°Π½ΠΈ Π²ΠΎ YAML-Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΠΈ ΡΠ΅ Π»Π΅ΡΠ½ΠΈ Π·Π° ΡΠΈΡΠ°ΡΠ΅ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠ²Π°Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ. ΠΠΎΡΠΎΡΠΎΡ Suricata ΠΏΡΠ΅ΠΏΠΎΠ·Π½Π°Π²Π° ΠΌΠ½ΠΎΠ³Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ, ΡΠ°ΠΊΠ° ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π½Π΅ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ Π²ΡΠ·ΡΠ²Π°Π°Ρ Π·Π° Π±ΡΠΎΡ Π½Π° ΠΏΠΎΡΡΠ°. ΠΠΎΠΊΡΠ°Ρ ΡΠΎΠ°, ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΎΡ Π½Π° flowbits Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΡΠ²Π° Π²ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Suricata. ΠΠ° ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π½Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ΡΠΎ, ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π·Π° ΡΠ΅ΡΠΈΡΠ°, ΠΊΠΎΠΈ Π²ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Π°Ρ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π±ΡΠΎΡΠ°ΡΠΈ ΠΈ Π·Π½Π°ΠΌΠ΅Π½ΡΠ°. ΠΠ½ΠΎΠ³Ρ IDS Π³ΠΈ ΡΡΠ΅ΡΠΈΡΠ°Π°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈΡΠ΅ TCP ΠΊΠΎΠ½Π΅ΠΊΡΠΈΠΈ ΠΊΠ°ΠΊΠΎ ΠΏΠΎΡΠ΅Π±Π½ΠΈ Π΅Π½ΡΠΈΡΠ΅ΡΠΈ ΠΈ ΠΌΠΎΠΆΠ΅Π±ΠΈ Π½Π΅ΠΌΠ° Π΄Π° ΡΠ° Π²ΠΈΠ΄Π°Ρ Π²ΡΡΠΊΠ°ΡΠ° ΠΌΠ΅ΡΡ Π½ΠΈΠ² Π·Π° Π΄Π° Π³ΠΎ ΠΎΠ·Π½Π°ΡΠ°Ρ ΠΏΠΎΡΠ΅ΡΠΎΠΊΠΎΡ Π½Π° Π½Π°ΠΏΠ°Π΄ΠΎΡ. Suricata ΡΠ΅ ΠΎΠ±ΠΈΠ΄ΡΠ²Π° Π΄Π° ΡΠ° Π²ΠΈΠ΄ΠΈ ΡΠ΅Π»Π°ΡΠ° ΡΠ»ΠΈΠΊΠ° ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³Ρ ΡΠ»ΡΡΠ°ΠΈ ΠΏΡΠ΅ΠΏΠΎΠ·Π½Π°Π²Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ ΡΠΎΠΎΠ±ΡΠ°ΡΠ°Ρ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ Π½ΠΈΠ· ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²ΡΡΠΊΠΈ. ΠΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π·Π±ΠΎΡΡΠ²Π°ΠΌΠ΅ Π·Π° Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠ΅Π΄Π½ΠΎΡΡΠΈ Π΄ΠΎΠ»Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅; ΠΏΠΎΠ΄ΠΎΠ±ΡΠΎ Π΅ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌΠ΅ Π½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ° ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°.
ΠΠ°ΠΊΠΎ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌ?
ΠΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ Suricata Π½Π° Π²ΠΈΡΡΡΠ΅Π»Π΅Π½ ΡΠ΅ΡΠ²Π΅Ρ ΡΠΎ Ubuntu 18.04 LTS. Π‘ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΌΠΎΡΠ° Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠ°Ρ ΠΊΠ°ΠΊΠΎ ΡΡΠΏΠ΅ΡΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ (root). ΠΠ°ΡΡΠΈΠ³ΡΡΠ½Π°ΡΠ° ΠΎΠΏΡΠΈΡΠ° Π΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π΅ΡΠ΅ ΡΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΠΏΡΠ΅ΠΊΡ SSH ΠΊΠ°ΠΊΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π΅Π½ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ, Π° ΠΏΠΎΡΠΎΠ° Π΄Π° ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π°Π»Π°ΡΠΊΠ°ΡΠ° sudo Π·Π° Π΄Π° Π³ΠΈ Π·Π³ΠΎΠ»Π΅ΠΌΠΈΡΠ΅ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈΡΠ΅. ΠΡΠ²ΠΎ ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ ΡΡΠΎ Π½ΠΈ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ:
sudo apt -y install libpcre3 libpcre3-dev build-essential autoconf automake libtool libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libmagic-dev libcap-ng-dev libjansson-dev pkg-config libnetfilter-queue-dev geoip-bin geoip-database geoipupdate apt-transport-https
ΠΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅:
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get update
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡΠ΅ ΡΠ° Π½Π°ΡΠ½ΠΎΠ²Π°ΡΠ° ΡΡΠ°Π±ΠΈΠ»Π½Π° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° Suricata:
sudo apt-get install suricata
ΠΠΎΠΊΠΎΠ»ΠΊΡ Π΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ, ΡΡΠ΅Π΄Π΅ΡΠ΅ Π³ΠΎ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΊΠΈΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ, Π·Π°ΠΌΠ΅Π½ΡΠ²Π°ΡΡΠΈ Π³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈΠΎΡ eth0 ΡΠΎ Π²ΠΈΡΡΠΈΠ½ΡΠΊΠΎΡΠΎ ΠΈΠΌΠ΅ Π½Π° Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½ΠΈΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ. Π‘ΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ ΡΠ΅ Π·Π°ΡΡΠ²ΡΠ²Π°Π°Ρ Π²ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° /etc/default/suricata, Π° ΠΏΡΠΈΡΠΏΠΎΡΠΎΠ±Π΅Π½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ ΡΠ΅ Π·Π°ΡΡΠ²Π°Π½ΠΈ Π²ΠΎ /etc/suricata/suricata.yaml. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° IDS Π΅ Π³Π»Π°Π²Π½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° Π½Π° ΡΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΠΎΠ²Π°Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΊΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°. ΠΠΌΠ° ΠΌΠ½ΠΎΠ³Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΊΠΎΠΈ, ΠΏΠΎ ΠΈΠΌΠ΅ ΠΈ ΡΠ΅Π», ΡΠ΅ ΡΠΎΠ²ΠΏΠ°ΡΠ°Π°Ρ ΡΠΎ Π½ΠΈΠ²Π½ΠΈΡΠ΅ Π°Π½Π°Π»ΠΎΠ·ΠΈ ΠΎΠ΄ Snort. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠ°ΡΠ° ΡΠ΅ΠΏΠ°ΠΊ Π΅ ΡΠΎΡΠ΅ΠΌΠ° ΠΏΠΎΠΈΠ½Π°ΠΊΠ²Π°, Π½ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° Π΅ ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΠ»Π΅ΡΠ½Π° Π·Π° ΡΠΈΡΠ°ΡΠ΅ ΠΎΠ΄ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Snort, Π° ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ Π΄ΠΎΠ±ΡΠΎ ΠΊΠΎΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π°.
sudo nano /etc/default/suricata
ΠΈ
sudo nano /etc/suricata/suricata.yaml
ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅! ΠΡΠ΅Π΄ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅, ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ ΠΎΠ΄ Π΄Π΅Π»ΠΎΡ vars.
ΠΠ° Π΄Π° Π³ΠΎ Π·Π°Π²ΡΡΠΈΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ, ΡΠ΅ ΡΡΠ΅Π±Π° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ suricata-update Π·Π° Π΄Π° Π³ΠΈ Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅ ΠΈ ΠΏΡΠ΅Π·Π΅ΠΌΠ΅ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ°. Π‘ΠΎΡΠ΅ΠΌΠ° Π΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΎΠ²Π°:
sudo apt install python-pip
sudo pip install pyyaml
sudo pip install <a href="https://github.com/OISF/suricata-update/archive/master.zip">https://github.com/OISF/suricata-update/archive/master.zip</a>
sudo pip install --pre --upgrade suricata-update
Π‘Π»Π΅Π΄Π½ΠΎ, ΡΡΠ΅Π±Π° Π΄Π° ΡΠ° ΠΈΠ·Π²ΡΡΠΈΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° suricata-update Π·Π° Π΄Π° Π³ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈ Π·Π°ΠΊΠ°Π½ΠΈ:
sudo suricata-update
ΠΠ° Π΄Π° ΡΠ° Π²ΠΈΠ΄ΠΈΡΠ΅ Π»ΠΈΡΡΠ°ΡΠ° Π½Π° ΠΈΠ·Π²ΠΎΡΠΈ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π°, ΠΈΠ·Π²ΡΡΠ΅ΡΠ΅ ΡΠ° ΡΠ»Π΅Π΄Π½Π°Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°:
sudo suricata-update list-sources
ΠΠΆΡΡΠΈΡΠ°ΡΡΠ΅ Π³ΠΈ ΠΈΠ·Π²ΠΎΡΠΈΡΠ΅ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ°:
sudo suricata-update update-sources
ΠΠΎΠ²ΡΠΎΡΠ½ΠΎ Π³ΠΈ ΡΠ°Π·Π³Π»Π΅Π΄ΡΠ²Π°ΠΌΠ΅ Π°ΠΆΡΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΈΠ·Π²ΠΎΡΠΈ:
sudo suricata-update list-sources
ΠΠΎΠΊΠΎΠ»ΠΊΡ Π΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΊΠ»ΡΡΠΈΡΠ΅ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΈ ΠΈΠ·Π²ΠΎΡΠΈ:
sudo suricata-update enable-source ptresearch/attackdetection
sudo suricata-update enable-source oisf/trafficid
sudo suricata-update enable-source sslbl/ssl-fp-blacklist
ΠΠΎΡΠ»Π΅ ΠΎΠ²Π°, ΡΡΠ΅Π±Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π΄Π° Π³ΠΈ Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ°:
sudo suricata-update
ΠΠΎ ΠΎΠ²ΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ°ΡΠ° ΠΈ ΠΏΠΎΡΠ΅ΡΠ½Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° Π½Π° Suricata Π²ΠΎ Ubuntu 18.04 LTS ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠΌΠ΅ΡΠ°Π°Ρ Π·Π° Π·Π°Π²ΡΡΠ΅Π½ΠΈ. ΠΠΎΡΠΎΠ° Π·Π°ΠΏΠΎΡΠ½ΡΠ²Π° Π·Π°Π±Π°Π²Π°ΡΠ°: Π²ΠΎ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΡΡΠ°ΡΠΈΡΠ° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π΅ΠΌΠ΅ Π²ΠΈΡΡΡΠ΅Π»Π΅Π½ ΡΠ΅ΡΠ²Π΅Ρ ΡΠΎ ΠΊΠ°Π½ΡΠ΅Π»Π°ΡΠΈΡΠΊΠ°ΡΠ° ΠΌΡΠ΅ΠΆΠ° ΠΏΡΠ΅ΠΊΡ VPN ΠΈ ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌΠ΅ Π΄Π° Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΡΠ΅Π»ΠΈΠΎΡ Π΄ΠΎΡΠ΄ΠΎΠ²Π΅Π½ ΠΈ ΠΏΠΎΡΠ΄ΠΎΠ²Π΅Π½ ΡΠΎΠΎΠ±ΡΠ°ΡΠ°Ρ. ΠΠΎΡΠ΅Π±Π½ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ΅ ΠΏΠΎΡΠ²Π΅ΡΠΈΠΌΠ΅ Π½Π° Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠ΅ Π½Π° DDoS Π½Π°ΠΏΠ°Π΄ΠΈ, Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ Π½Π° ΠΌΠ°Π»ΠΈΡΠΈΠΎΠ·Π΅Π½ ΡΠΎΡΡΠ²Π΅Ρ ΠΈ ΠΎΠ±ΠΈΠ΄ΠΈ Π·Π° ΠΈΡΠΊΠΎΡΠΈΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠΎΠΏΡΡΡΠΈΡΠ΅ Π²ΠΎ ΡΡΠ»ΡΠ³ΠΈΡΠ΅ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈ ΠΎΠ΄ ΡΠ°Π²Π½ΠΈΡΠ΅ ΠΌΡΠ΅ΠΆΠΈ. ΠΠ° ΡΠ°ΡΠ½ΠΎΡΡ, ΡΠ΅ ΡΠ΅ ΡΠΈΠΌΡΠ»ΠΈΡΠ°Π°Ρ Π½Π°ΠΏΠ°Π΄ΠΈ ΠΎΠ΄ Π½Π°ΡΡΠ΅ΡΡΠΈΡΠ΅ ΡΠΈΠΏΠΎΠ²ΠΈ.
ΠΠ·Π²ΠΎΡ: www.habr.com