á á¬áááºážááá¬ážáá»á¬ážá¡áá ááœááºáááºá¡ááœá¬ážá¡áá¬ááá¬áááẠááŸá áºá áẠá á% ááá·áº ááá¯ážáá¬áááºá áááºážááẠá ááºáá á¹á ááºážáá»á¬ážáá±á«áºááœáẠáááºááá¯ážáá¬á á±ááŒá®áž á¡áá°ážáááŒáá·áº IDS/IPS á á áœááºážáá±á¬ááºáááºááá¯á¡ááºáá»ááºáá»á¬ážááᯠááá¯ážááŒáá·áºá á±áááºá á á»á±ážááŒá®ážáá±á¬ á¡áá°ážááŒá¯ áá¬á·ááºáá²ááᯠáááºáááºááá¯ááºáá±á¬áºáááºáž open source á áá áºáá»á¬ážáá²á០áá áºáá¯ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá¬ááœáẠá á»á±ážáááºáá¬áá±á¬ ááœá±ážáá»ááºááŸá¯áá áºáá¯ááŸááá«áááºá á¡ááœá±á·á¡ááŒá¯á¶áááŸááá±ážáá±á¬ á¡ááºááááºá¡áá»á¬ážá á¯ááẠá¡ááá²á· IPS áá áºáá¯ááᯠááá·áºááœááºážááŒááºážááŸáá·áº ááŒááºáááºáááºááŸááºááŒááºážááŸá¬ á¡ááœááºáááºáá²áááºáᯠáá°áááŒáááºá Suricata ááá á¹á ááœááºá áááºážááẠáá¯á¶ážááááŸááºáá« - áááá áºá¡áááºážáááºá¡ááœááºáž á¡ááá²á·á ááºážáá»ááºážá¡á á¯á¶ááŒáá·áº áááºážááᯠááá·áºááœááºážááŒá®áž á á¶ááá¯ááºááá¯ááºááŸá¯áá»á¬ážááᯠá áááºáá»á±áááá¯ááºáááºá
á¡áááºááŒá±á¬áá·áºáá»áœááºá¯ááºááá¯á·áááºá¡ááŒá¬ážááœáá·áºáááºáž IPS ááá¯á¡ááºááááºážá
á á¶ááŸá¯ááºážááᯠááŸááºááŒá¬á áœá¬áá°ááá¬ážááŒá®ážá Snort ááẠááá¯ážáááºáá»á±á¬áºááŸá±á¬ááºážááá¯ááºážááááºážá ááœá¶á·ááŒáá¯ážááá¯ážáááºáá¬áá²á·ááŒá®ážá ááá¯á·ááŒá±á¬áá·áº áááºážááẠáá°áá ááŒáá¯ážáá áºáá¯áááºážááŒá áºáááºá ááŸá áºáá»á¬ážáá áºáá»áŸá±á¬áẠIPv6 áá¶á·ááá¯ážááŸá¯á á¡ááºááºá¡ááá·áº áááá¯ááá¯áá±á¬áá»á¬ážááᯠááœá²ááŒááºážá áááºááŒá¬ááá¯ááºááŸá¯á ááá¯á·ááá¯áẠuniversal data access module áá²á·ááá¯á·áá±á¬ áá±ááºáá®á¡ááºá¹áá«áááºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠááá°áá²á·áááºá
á¡ááŒá±áᶠSnort 2.X á¡ááºáá»ááºááẠáá»á¬ážá áœá¬áá±á¬ cores áá»á¬ážááŒáá·áº á¡áá¯ááºáá¯ááºááẠáááºáá°áá²á·áá±á¬áºáááºáž ááŒáá¯ážáá»ááºáá áºáá¯áááºážáᬠáá»ááºááŸááá±á¬á·áá±á¬ááŒá±á¬áá·áº áá±ááºáá® áá¬á·ááºáá²ááááºáá±á¬ááºážáá»á¬ážááᯠá¡áá±á¬ááºážáá¯á¶áž á¡áá¯á¶ážáá»ááá¯ááºáááºááá¯ááºáá±á
ááŒá¿áá¬ááᯠá áá áºááááááá¬ážááŸááºážááœáẠááŒá±ááŸááºážááá¯ááºáá²á·áá±á¬áºáááºáž Suricata ááẠá¡á ááŸáá±á áá±ážáá¬ážáá±á¬ Suricata ááẠá á»á±ážááœááºááœáẠáá±á«áºáá¬ááá¯ááºá á±ááẠááŒááºáááºááẠá¡áá»áááºá¡áá±á¬áºááŒá¬áá²á·áááºá 2009 áá¯ááŸá áºááœáẠáááºážááᯠáá±á¬ááºá¡ááŒááºáááºááŸá IPS áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážáá«ááŸááá±á¬ Snort á multi-threaded á¡á á¬ážááá¯ážááœá±ážáá»ááºááŸá¯á¡ááŒá Ạá¡ááá¡áá»á áááºáá®ááœááºáá²á·áááºá áá¯ááºááᯠGPLv2 ááá¯ááºá ááºá¡á±á¬ááºááœáẠááŒáá·áºáá±áá¬ážáá±á¬áºáááºáž ááá±á¬áá»ááºá ááá¹áá¬áá±ážáá¯ááºáá±á¬áºááá¯ááºáááºáá»á¬ážááẠá¡ááºáá»ááºááááºáá¬ážááŸááºážááᯠá¡áá¯á¶ážááŒá¯ááœáá·áºááŸááááºá á áá áºáááááá¬ážááŸááºážáá»á¬ážááœáẠáá»á²á·ááœááºááá¯ááºááŸá¯ááá¯ááºáᬠááŒá¿áá¬á¡áá»áá¯á· áá±á«áºáá±á«ááºáá²á·áá±á¬áºáááºáž áááºážááá¯á·ááẠáá»ááºááŒááºá áœá¬ ááŒá±ááŸááºážááá¯ááºáá²á·áááºá
Suricata á¡áááºááŒá±á¬áá·áºáááºážá
Suricata ááœáẠáá±á¬áºáá»á°ážáá»á¬ážá áœá¬ (Snort áá²á·ááá¯á·) áá«ááŸááááº- áááºážáá°ááŸá¯á ááá°ááŸá¯á áá¯ááºáá¯ááºááŸá¯á áá±á¬ááºááŸááºážááŸá¯ááŸáá·áº á¡ááœááºááŸá¯ááºážá áá¯á¶áá±á¡á¬ážááŒáá·áºá áááºážáá°áá¬ážáá±á¬ á¡ááœá¬ážá¡áá¬ááẠá á¬ááœá²áá áºáá¯ááœáẠáá¯ááºáááá·áºáá®ááœááºááŒá áºááŒá®ážá áááºážááẠá áá áºá¡á¬áž ááá¯ááá¯áá¯ááºáá±á¬ááºá á±áááºá ááá¯á¡ááºáá«áá thread áá»á¬ážááᯠáááºáááºáá»á¬ážááœáẠááá¯ááºážááŒá¬ážááŒá®áž áááá¯áááºáá¬áá»á¬ážááŒá¬ážááœáẠááŒáá·áºáá±ááá¯ááºááẠ- Suricata ááẠá áááºáá°áá»á¬ážá¡ááœáẠHOWTO á¡ááá·áºááá¯ááºáá±á¬á·áá±á¬áºáááºáž áááºááŸááºáá¬ážáá±á¬ áá¬á·ááºáá²á¡ááœáẠá¡ááœááºáá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºáá¬ážáááºá Suricata ááœáẠHTP á á¬ááŒáá·áºááá¯ááºááᯠá¡ááŒá±áá¶á á¡ááá·áºááŒáá·áº HTTP á á áºáá±ážáá±ážáááááá¬áá»á¬áž áá«ááŸáááŒá±á¬ááºážááá¯áááºáž áááááŒá¯ááá·áºáá«áááºá áááºážááá¯á·ááᯠáá±á¬ááºááŸááºážááŒááºážáááŸááá² á¡ááœá¬ážá¡áá¬á á¬áááºážááœááºážáááºáááºáž á¡áá¯á¶ážááŒá¯ááá¯ááºáááºá á áá áºááẠIPv6-in-IPv4á IPv6-in-IPv6 á¥áááºááá¯ááºáá±á«ááºážáá»á¬ážááŸáá·áº á¡ááŒá¬ážá¡áá¬áá»á¬ážá¡áá«á¡ááẠIPv6 á áá¬ážááŸááºááᯠáá¶á·ááá¯ážáá±ážáá«áááºá
á¡ááœá¬ážá¡áá¬ááᯠááŒá¬ážááŒááºááẠááá°áá®áá±á¬ á¡ááºáá¬áá±á·á áºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºááŒá®áž (NFQueueá IPFRingá LibPcapá IPFWá AF_PACKETá PF_RING) ááŸáá·áº Unix Socket áá¯ááºááœáẠá¡ááŒá¬áž sniffer ááŸáááºážáá°áá¬ážáá±á¬ PCAP ááá¯ááºáá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬áẠááá¯ááºážááŒá¬ážá áááºááŒá¬ááá¯ááºáá«áááºá ááá¯á·á¡ááŒááºá Suricata á áá±á¬áºáá»á°áá¬áááá¯áá¬ááẠááœááºáááºáááºáááºáá»á¬ážááᯠáááºážáá°á áá¯ááºáá¯ááºáááºá ááœá²ááŒááºážá áááºááŒá¬áááºááŸáá·áº áá¯ááºáá±á¬ááºááẠááŒááºá ááºá¡áá áºáá»á¬ážááᯠáá»áááºáááºááẠááœááºáá°á á±áááºá Suricata ááœáẠstandard operating system filter ááá¯á¡áá¯á¶ážááŒá¯á traffic ááá¯ááááºááá¯á·áá¬ážáááºááá¯áááºážáááááŒá¯áááºá¡áá±ážááŒá®ážáá«áááºá GNU/Linux ááœááºá IPS áá¯ááºáá±á¬ááºáá»ááºá¡ááœáẠááœá±ážáá»ááºá áá¬ááŸá áºáá¯áááá¯ááºáááº- NFQUEUE áááºážá á® (NFQ áá¯ááº) ááŸáá·áº áá¯ááááá¹áá° (AF_PACKET áá¯ááº) ááŸáááá·áºá áááááá á¹á ááœááºá iptables ááá¯á·áááºáá±á¬ááºááá·áº packet ááᯠá¡áá¯á¶ážááŒá¯áá°á¡ááá·áºááœáẠáá¯ááºáá±á¬ááºááá¯ááºááá·áº NFQUEUE áááºážá á®ááá¯á· áá±ážááá¯á·áááºá Suricata ááẠáááºážááᯠáááºážáááá¯ááºááá¯ááºá ááºážáá»ááºážáá»á¬ážááŸáá·áºá¡áá® áá¯ááºáá±á¬ááºááŒá®áž NF_ACCEPTá NF_DROP ááŸáá·áº NF_REPEAT á á®áááºáá»ááºáá¯á¶ážáá¯á¡áááºá០áá áºáá¯ááᯠáá¯ááºááŒááºáááºá áááááŸá áºáá¯á ááá¯ááºááá¯ááºááŸááºážááŒáá¬ážáá±ááá·áº áá±á¬ááºáá¯á¶ážáá áºáá¯ááá±á¬á· packets ááœá±ááᯠá¡ááŸááºá¡áá¬ážáá¯ááºááŒá®áž áááºááŸá iptables table áá²á·á¡á ááᯠááá¯á·áá±ážááá¯ááºáá«áááºá AF_PACKET áá¯ááºááẠááá¯ááŒááºáá±á¬áºáááºáž á áá áºá¡áá±á«áº ááá·áºáááºáá»ááºáá»á¬ážá áœá¬ áá»ááŸááºáá¬ážáá«áááº- áááºážááœáẠááœááºáááºááŒá¬ážáá¶ááŸá áºáᯠáá«ááŸáááŒá®áž áá¶áá«ážáá±á«ááºáá áºáá¯á¡ááŒá Ạáá¯ááºáá±á¬ááºááááºááŒá áºáááºá ááááºááá¯á·áá¬ážáá±á¬ áááºáááºááᯠáá¯áááá¡ááºáá¬áá±á·á áºááá¯á· áááºááá·áºáááá¯á·áá«á
Suricata áá¡áá±ážááŒá®ážáá±á¬á¡ááºá¹áá«áááºááŸá¬ Snort á¡ááœááºááá¯ážáááºááŸá¯áá»á¬ážááá¯á¡áá¯á¶ážááŒá¯ááá¯ááºá áœááºážááŒá áºáááºá á á®áá¶ááá·áºááœá²áá°ááẠá¡áá°ážáááŒáá·áº Sourcefire VRT ááŸáá·áº OpenSource Emerging Threats á ááºážáá»ááºážáá»á¬ážá¡ááŒáẠá á®ážááœá¬ážááŒá ẠEmerging Threats Pro ááá¯á·ááᯠáááºáá±á¬ááºááŒáá·áºááŸá¯ááœáá·áºááŸááááºá áá áºá á¯áá áºá ááºážáááºážááœááºá¡á¬ážááᯠáá°ááŒáá¯ááºáá»á¬ážááá·áºáá±á¬ááºááœááºá០ááœá²ááŒááºážá áááºááŒá¬ááá¯ááºááŒá®áž PCAP ááŸáá·áº Syslog ááá¯á· áá¯ááºáá±ážááŸá¯ááá¯áááºáž áá¶á·ááá¯ážáá±ážáá¬ážáááºá á áá áºáááºáááºáá»á¬ážááŸáá·áº á ááºážáá»ááºážáá»á¬ážááᯠYAML ááá¯ááºáá»á¬ážááœáẠááááºážáááºážáá¬ážááŒá®ážá áááºáááœááºáá°ááŒá®áž á¡ááá¯á¡áá»á±á¬áẠáá¯ááºáá±á¬ááºááá¯ááºáááºááŒá áºáááºá Suricata á¡ááºáá»ááºááẠáááá¯ááá¯áá±á¬áá»á¬ážá áœá¬ááᯠá¡ááá¡ááŸááºááŒá¯áá±á¬ááŒá±á¬áá·áº á ááºážáá»ááºážáá»á¬ážááᯠááááºáááºážáá¶áá«ááºáá áºáá¯ááŸáá·áº áá»áááºáááºááẠáááá¯á¡ááºáá«á ááá¯á·á¡ááŒááºá flowbits áááá±á¬ááá¬ážááᯠSuricata á ááºážáá»ááºážáá»á¬ážááœááºáááºááŒáœá áœá¬áá»áá·áºáá¯á¶ážáááºá á¡á áá»áá¯ážááŒááºážááᯠááŒá±áá¬áá¶áááºá áá±á¬ááºáá¬áá»á¬ážááŸáá·áº á¡áá¶á¡áá»áá¯ážáá»áá¯ážááᯠáááºáá®ážááŒá®áž á¡áá¯á¶ážááŒá¯ááœáá·áºááŒá¯ááá·áº session variable áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá¬ážáááºá IDS á¡áá»á¬ážá¡ááŒá¬ážááẠááá°áá®áá±á¬ TCP áá»áááºáááºááŸá¯áá»á¬ážááᯠáá®ážááŒá¬ážá¡áá¬áá»á¬ážá¡ááŒá Ạáááºáá¶ááŒááŒá®áž ááá¯ááºááá¯ááºááŸá¯áá áºáá¯áá¡á ááá¯ááœáŸááºááŒáááºá¡ááœáẠáááºážááá¯á·ááŒá¬ážááŸááá»áááºáááºááŸá¯ááᯠáááŒááºááá¯ááºáá±á Suricata ááẠáá¯ááºáá¯á¶áá áºáá¯áá¯á¶ážááá¯ááŒáá·áºááŸá¯áááºááŒáá¯ážá á¬ážááŒá®áž áá»á¬ážá áœá¬áá±á¬á¡ááŒá±á¡áá±áá»á¬ážááœáẠááá°áá®áá±á¬áá»áááºáááºááŸá¯áá»á¬ážáá áºáá»áŸá±á¬ááºááœáẠá¡áá¹ááá¬ááºááŸááá±á¬á¡ááœá¬ážá¡áá¬áá»á¬ážááᯠá¡ááá¡ááŸááºááŒá¯áá«áááºá áááºážá á¡á¬ážáá¬áá»ááºáá»á¬ážááᯠá¡áá»áááºá¡áá±á¬áºááŒá¬ ááœá±ážááœá±ážááá¯ááºáááºá áá»áœááºá¯ááºááá¯á·ááẠáááºáááºááŒááºážááŸáá·áº ááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááá¯á· áááºááœá¬ážááẠááá¯áá±á¬ááºážáá«áááºá
áááºááá¯á·áááºáááºááááºáááºážá
áá»áœááºá¯ááºááá¯á·ááẠUbuntu 18.04 LTS á¡áá¯á¶ážááŒá¯ááá·áº virtual áá¬áá¬ááœáẠSuricata ááᯠááá·áºááœááºážáá«áááºá command á¡á¬ážáá¯á¶ážááᯠsuperuser (root) á¡ááŒá Ạáá¯ááºáá±á¬ááºááá«áááºá á¡áá¯á¶ááŒá¯á¶áá¯á¶ážááœá±ážáá»ááºááœáá·áºááŸá¬ á á¶á¡áá¯á¶ážááŒá¯áá°á¡ááŒá ẠSSH ááŸáá áºááá·áº áá¬áá¬ááá¯á· áá»áááºáááºáááºááŒá áºááŒá®áž á¡ááœáá·áºáá°ážáá»á¬ážááá¯ážááŒáá·áºáááºá¡ááœáẠsudo utility ááᯠá¡áá¯á¶ážááŒá¯áá«á ááááŠážá áœá¬áá»áœááºá¯ááºááá¯á·ááá¯á¡ááºáá±á¬ packages áá»á¬áž install áá¯ááºááá¯á·ááá¯á¡ááºáá«áááº:
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 configuration ááẠဠconfiguration file ááá¯áááºážááŒááºáááºá¡ááœáẠá¡áá»á¬ážá¡á¬ážááŒáá·áº ááá·áºáááºáá¬ážáá«áááºá áááºážááœáẠSnort á០áááºážááá¯á·á analogues áá»á¬ážááŸáá·áºá¡áá° á¡áááºááŸáá·áº áááºááœááºáá»ááºááŸáá·áº ááá¯ááºáá®áá±á¬ ááá·áºáááºáá»ááºáá»á¬áž áá»á¬ážá áœá¬ááŸááááºá syntax ááẠáá¯á¶ážáááœá²ááŒá¬ážáá±á¬áºáááºáž Snort configs áááºá á¬áá»áŸáẠááá¯ááºááá¯áááºááẠááá¯ááá¯ááœááºáá°ááŒá®áž áááºážááá¯áááºáž ááŸááºáá»ááºáá±ážáá¬ážáááºá
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
Emerging Threats Open ruleset ááá¯ááá·áºááœááºážááẠsuricata-update command ááᯠrun áááºááá¯á¡ááºáááº-
sudo suricata-update
á
ááºážáá»ááºážá¡áááºážá¡ááŒá
áºáá»á¬ážá
á¬áááºážááá¯ááŒáá·áºááŸá¯áááºá á¡á±á¬ááºáá« command ááᯠrun áá«á
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
á€á¡áá»áááºááœáẠUbuntu 18.04 LTS ááœáẠSuricata á áááºáááºááŸá¯ááŸáá·áº áááŠážááœá²á·á ááºážáá¯á¶ááẠááŒá®ážááŒáá·áºá á¯á¶áááºáᯠáá°áááá¯ááºáá«áááºá ááá¯á·áá±á¬áẠáá»á±á¬áºááœáŸááºááŸá¯á áááºáááº- áá±á¬ááºáá±á¬ááºážáá«ážááœáẠáá»áœááºá¯ááºááá¯á·ááẠVPN ááŸáá áºááá·áº áá¯á¶ážááœááºáááºááá¯á· virtual server áá áºáá¯ááᯠáá»áááºáááºááŒá®áž á¡áááºááŸáá·áºá¡ááœááºáááºážááŒá±á¬ááºážá¡á¬ážáá¯á¶ážááᯠááœá²ááŒááºážá áááºááŒá¬áá±á·áá¬áá«áááºá DDoS ááá¯ááºááá¯ááºááŸá¯áá»á¬ážá áá²ááºáá² áá¯ááºáá±á¬ááºáá»ááºááŸáá·áº á¡áá»á¬ážáá°ááŸá¬ ááœááºáááºáá»á¬ážá០áááŸáááá¯ááºáá±á¬ áááºáá±á¬ááºááŸá¯áá»á¬ážááœáẠá¡á¬ážáááºážáá»ááºáá»á¬ážááᯠá¡áá¯á¶ážáá»ááẠááŒáá¯ážáááºážááŸá¯áá»á¬ážááᯠáá»áœááºá¯ááºááá¯á· á¡áá°ážá¡á¬áá¯á¶á áá¯ááºáá«áááºá ááŸááºážááŸááºážáááºážáááºážáááááºá á¡áá¯á¶ážá¡áá»á¬ážáá¯á¶ážá¡áá»áá¯ážá¡á á¬ážáá»á¬ážá ááá¯ááºááá¯ááºááŸá¯áá»á¬ážááᯠáá¯á¶áá±á¬áºáá±ážáá«áááºá
source: www.habr.com