xtables-addons: рджреЗрд╢рд╛рдиреБрд╕рд╛рд░ рдкреЕрдХреЗрдЬ рдлрд┐рд▓реНрдЯрд░ рдХрд░рд╛

xtables-addons: рджреЗрд╢рд╛рдиреБрд╕рд╛рд░ рдкреЕрдХреЗрдЬ рдлрд┐рд▓реНрдЯрд░ рдХрд░рд╛
рдард░рд╛рд╡рд┐рдХ рджреЗрд╢рд╛рдВрдордзреАрд▓ рд░рд╣рджрд╛рд░реА рдЕрд╡рд░реЛрдзрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреЗ рдХрд╛рд░реНрдп рд╕реЛрдкреЗ рд╡рд╛рдЯрддреЗ, рдкрд░рдВрддреБ рдкреНрд░рдердо рдЫрд╛рдк рдлрд╕рд╡рдгреВрдХ рдХрд░рдгрд╛рд░реЗ рдЕрд╕реВ рд╢рдХрддрд╛рдд. рдЖрдЬ рдЖрдореНрд╣реА рддреБрдореНрд╣рд╛рд▓рд╛ рдпрд╛рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрд╢реА рдХрд░рддрд╛ рдпреЗрдИрд▓ рд╣реЗ рд╕рд╛рдВрдЧрдгрд╛рд░ рдЖрд╣реЛрдд.

prehistory

рдпрд╛ рд╡рд┐рд╖рдпрд╛рд╡рд░реАрд▓ Google рд╢реЛрдзрд╛рдЪреЗ рдкрд░рд┐рдгрд╛рдо рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рдЖрд╣реЗрдд: рдмрд╣реБрддреЗрдХ рдирд┐рд░рд╛рдХрд░рдгреЗ рдмрд░реНрдпрд╛рдЪ рдХрд╛рд│рд╛рдкрд╛рд╕реВрди "рд╕рдбрд▓реЗрд▓реА" рдЖрд╣реЗрдд рдЖрдгрд┐ рдХрдзреАрдХрдзреА рдЕрд╕реЗ рджрд┐рд╕рддреЗ рдХреА рд╣рд╛ рд╡рд┐рд╖рдп рдХрд╛рдпрдордЪрд╛ рд╡рд┐рд╕рд░рд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ рдЖрдгрд┐ рд╡рд┐рд╕рд░рд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ. рдЖрдореНрд╣реА рдмрд░реНтАНрдпрд╛рдЪ рдЬреБрдиреНрдпрд╛ рд░реЗрдХреЙрд░реНрдбрдордзреВрди рдЧреЗрд▓реЛ рдЖрд╣реЛрдд рдЖрдгрд┐ рд╕реВрдЪрдирд╛рдВрдЪреА рдЖрдзреБрдирд┐рдХ рдЖрд╡реГрддреНрддреА рд╕рд╛рдорд╛рдпрд┐рдХ рдХрд░рдгреНрдпрд╛рд╕ рддрдпрд╛рд░ рдЖрд╣реЛрдд.

рдЖрдореНрд╣реА рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рддреЛ рдХреА рддреБрдореНрд╣реА рдпрд╛ рдЖрджреЗрд╢рд╛рдВрдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рд╕рдВрдкреВрд░реНрдг рд▓реЗрдЦ рд╡рд╛рдЪрд╛.

рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рддрдпрд╛рд░ рдХрд░рдд рдЖрд╣реЗ

рдпреБрдЯрд┐рд▓рд┐рдЯреА рд╡рд╛рдкрд░реВрди рдлрд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗ рдЬрд╛рдИрд▓ iptables, рдЬреНрдпрд╛рд▓рд╛ GeoIP рдбреЗрдЯрд╛рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд┐рд╕реНрддрд╛рд░ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╣рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдордзреНрдпреЗ рдЖрдврд│реВ рд╢рдХрддреЛ xtables-addons. xtables-addons рд╕реНрд╡рддрдВрддреНрд░ рдХрд░реНрдирд▓ рдореЙрдбреНрдпреВрд▓реНрд╕ рдореНрд╣рдгреВрди iptables рд╕рд╛рдареА рд╡рд┐рд╕реНрддрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ, рддреНрдпрд╛рдореБрд│реЗ OS рдХрд░реНрдирд▓ рдкреБрдиреНрд╣рд╛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА.

рд▓реЗрдЦрдирд╛рдЪреНрдпрд╛ рд╡реЗрд│реА, xtables-addons рдЪреА рд╡рд░реНрддрдорд╛рди рдЖрд╡реГрддреНрддреА 3.9 рдЖрд╣реЗ. рддрдерд╛рдкрд┐, рдорд╛рдирдХ рдЙрдмрдВрдЯреВ 20.04 рдПрд▓рдЯреАрдПрд╕ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЬрдордзреНрдпреЗ рдлрдХреНрдд 3.8 рдЖрдгрд┐ рдЙрдмрдВрдЯреВ 18.04 рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЬрдордзреНрдпреЗ 3.0 рдЖрдврд│реВ рд╢рдХрддрд╛рдд. рддреБрдореНрд╣реА рдЦрд╛рд▓реАрд▓ рдХрдорд╛рдВрдбрд╕рд╣ рдкреЕрдХреЗрдЬ рдореЕрдиреЗрдЬрд░рдордзреВрди рд╡рд┐рд╕реНрддрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рд╢рдХрддрд╛:

apt install xtables-addons-common libtext-csv-xs-perl

рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рдЖрд╡реГрддреНрддреА 3.9 рдЖрдгрд┐ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреА рд╕рджреНрдпрд╕реНрдерд┐рддреА рдпрд╛рдордзреНрдпреЗ рд▓рд╣рд╛рди рдкрдг рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдлрд░рдХ рдЖрд╣реЗрдд, рдЬреНрдпрд╛рдВрдЪреА рдЖрдкрдг рдирдВрддрд░ рдЪрд░реНрдЪрд╛ рдХрд░реВ. рд╕реНрддреНрд░реЛрдд рдХреЛрдбрдордзреВрди рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд╕рд░реНрд╡ рдЖрд╡рд╢реНрдпрдХ рдкреЕрдХреЗрдЬреЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛:

apt install git build-essential autoconf make libtool iptables-dev libxtables-dev pkg-config libnet-cidr-lite-perl libtext-csv-xs-perl

рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рдХреНрд▓реЛрди рдХрд░рд╛:

git clone https://git.code.sf.net/p/xtables-addons/xtables-addons xtables-addons-xtables-addons

cd xtables-addons-xtables-addons

xtables-addons рдордзреНрдпреЗ рдмрд░реЗрдЪ рд╡рд┐рд╕реНрддрд╛рд░ рдЖрд╣реЗрдд, рдкрд░рдВрддреБ рдЖрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рддреНрдпрд╛рдд рд░рд╕ рдЖрд╣реЗ xt_geoip. рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдбреНрд░реЕрдЧ рдХрд░рд╛рдпрдЪреЗ рдирд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣реА рддреНрдпрд╛рдВрдирд╛ рдмрд┐рд▓реНрдбрдордзреВрди рд╡рдЧрд│реВ рд╢рдХрддрд╛. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рдлрд╛рдЗрд▓ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рд╛рд╡реА рд▓рд╛рдЧреЗрд▓ mconfig. рд╕рд░реНрд╡ рдЗрдЪреНрдЫрд┐рдд рдореЙрдбреНрдпреВрд▓реНрд╕рд╕рд╛рдареА, рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛ y, рдЖрдгрд┐ рд╕рд░реНрд╡ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЪрд┐рдиреНрд╣рд╛рдВрдХрд┐рдд рдХрд░рд╛ n. рдЖрдореНрд╣реА рдЧреЛрд│рд╛ рдХрд░рддреЛ:

./autogen.sh

./configure

make

рдЖрдгрд┐ рд╕реБрдкрд░рдпреВрдЬрд░ рдЕрдзрд┐рдХрд╛рд░рд╛рдВрд╕рд╣ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛:

make install

рдХрд░реНрдирд▓ рдореЙрдбреНрдпреВрд▓реНрд╕рдЪреНрдпрд╛ рд╕реНрдерд╛рдкрдиреЗрджрд░рдореНрдпрд╛рди, рдЦрд╛рд▓реАрд▓ рд╕рд╛рд░рдЦреА рддреНрд░реБрдЯреА рдпреЗрдК рд╢рдХрддреЗ:

INSTALL /root/xtables-addons-xtables-addons/extensions/xt_geoip.ko
At main.c:160:
- SSL error:02001002:system library:fopen:No such file or directory: ../crypto/bio/bss_file.c:72
- SSL error:2006D080:BIO routines:BIO_new_file:no such file: ../crypto/bio/bss_file.c:79
sign-file: certs/signing_key.pem: No such file or directory

рд╣реА рдкрд░рд┐рд╕реНрдерд┐рддреА рдХрд░реНрдирд▓ рдореЙрдбреНрдпреВрд▓реНрд╕рд╡рд░ рд╕реНрд╡рд╛рдХреНрд╖рд░реА рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдЕрд╢рдХреНрдпрддреЗрдореБрд│реЗ рдЙрджреНрднрд╡рддреЗ, рдХрд╛рд░рдг рд╕рд╣реА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рд╣реАрд╣реА рдирд╛рд╣реА. рдЖрдкрдг рдпрд╛ рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд╛рд╣реА рдХрдорд╛рдВрдбрд╕рд╣ рдХрд░реВ рд╢рдХрддрд╛:

cd /lib/modules/(uname -r)/build/certs

cat <<EOF > x509.genkey

[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
prompt = no
string_mask = utf8only
x509_extensions = myexts

[ req_distinguished_name ]
CN = Modules

[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
EOF

openssl req -new -nodes -utf8 -sha512 -days 36500 -batch -x509 -config x509.genkey -outform DER -out signing_key.x509 -keyout signing_key.pem

рд╕рдВрдХрд▓рд┐рдд рдХрд░реНрдирд▓ рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдкреНрд░рдгрд╛рд▓реА рддреЗ рд╢реЛрдзрдд рдирд╛рд╣реА. рдЪрд▓рд╛ рд╕рд┐рд╕реНрдЯрдорд▓рд╛ рдирд╡реАрди рдореЙрдбреНрдпреВрд▓ рд▓рдХреНрд╖рд╛рдд рдШреЗрдКрди рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдирдХрд╛рд╢рд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕ рд╕рд╛рдВрдЧреВ рдЖрдгрд┐ рдирдВрддрд░ рддреЗ рд▓реЛрдб рдХрд░реВ:

depmod -a

modprobe xt_geoip

рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ xt_geoip рд▓реЛрдб рдХреЗрд▓реЗ рдЖрд╣реЗ рдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░реВрдпрд╛:

# lsmod | grep xt_geoip
xt_geoip               16384  0
x_tables               40960  2 xt_geoip,ip_tables

рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рд╡рд┐рд╕реНрддрд╛рд░ iptables рдордзреНрдпреЗ рд▓реЛрдб рдХреЗрд▓рд╛ рдЖрд╣реЗ рдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рд╛:

# cat /proc/net/ip_tables_matches 
geoip
icmp

рдЖрдореНрд╣реА рд╕рд░реНрд╡ рдЧреЛрд╖реНрдЯреАрдВрд╕рд╣ рдЖрдирдВрджреА рдЖрд╣реЛрдд рдЖрдгрд┐ рдореЙрдбреНрдпреВрд▓рдЪреЗ рдирд╛рд╡ рдЬреЛрдбрдгреЗ рдмрд╛рдХреА рдЖрд╣реЗ / рдЗ / рдореЙрдбреНрдпреВрд▓рдЬреЗрдгреЗрдХрд░реВрди OS рд░реАрдмреВрдЯ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рдореЙрдбреНрдпреВрд▓ рдХрд╛рд░реНрдп рдХрд░реЗрд▓. рдЖрддрд╛рдкрд╛рд╕реВрди, iptables рд▓рд╛ geoip рдХрдорд╛рдВрдб рд╕рдордЬрддрд╛рдд, рдкрд░рдВрддреБ рддреНрдпрд╛рдд рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреБрд░реЗрд╕рд╛ рдбреЗрдЯрд╛ рдирд╛рд╣реА. рдЪрд▓рд╛ geoip рдбреЗрдЯрд╛рдмреЗрд╕ рд▓реЛрдб рдХрд░рдгреЗ рд╕реБрд░реВ рдХрд░реВрдпрд╛.

рдЬрд┐рдУрдЖрдпрдкреА рдбреЗрдЯрд╛рдмреЗрд╕ рдорд┐рд│рд╡рдгреЗ

рдЖрдореНрд╣реА рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рддрдпрд╛рд░ рдХрд░рддреЛ рдЬреНрдпрд╛рдордзреНрдпреЗ iptables рд╡рд┐рд╕реНрддрд╛рд░рд╛рд╕рд╛рдареА рд╕рдордЬрдгреНрдпрд╛рдпреЛрдЧреНрдп рдорд╛рд╣рд┐рддреА рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реА рдЬрд╛рдИрд▓:

mkdir /usr/share/xt_geoip

рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛, рдЖрдореНрд╣реА рдирдореВрдж рдХреЗрд▓реЗ рдЖрд╣реЗ рдХреА рд╕реНрддреНрд░реЛрдд рдХреЛрдбрдордзреАрд▓ рдЖрд╡реГрддреНрддреА рдЖрдгрд┐ рдкреЕрдХреЗрдЬ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХрд╛рдЪреНрдпрд╛ рдЖрд╡реГрддреНрддреАрдордзреНрдпреЗ рдлрд░рдХ рдЖрд╣реЗрдд. рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд┐рдХреНрд░реЗрддрд╛ рдЖрдгрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреАрд▓ рдмрджрд▓ рд╣рд╛ рд╕рд░реНрд╡рд╛рдд рд▓рдХреНрд╖рдгреАрдп рдлрд░рдХ рдЖрд╣реЗ xt_geoip_dl, рдЬреЗ рдирд╡реАрдирддрдо рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ.

рдкреЕрдХреЗрдЬ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЖрд╡реГрддреНрддреА

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрде /usr/lib/xtables-addons рдордзреНрдпреЗ рд╕реНрдерд┐рдд рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рддреА рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рд╛рд▓, рддреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХ рдлрд╛рд░рд╢реА рдорд╛рд╣рд┐рддреАрдкреВрд░реНрдг рддреНрд░реБрдЯреА рджрд┐рд╕рдд рдирд╛рд╣реА:

# ./xt_geoip_dl 
unzip:  cannot find or open GeoLite2-Country-CSV.zip, GeoLite2-Country-CSV.zip.zip or GeoLite2-Country-CSV.zip.ZIP.

рдкреВрд░реНрд╡реА, рдЬрд┐рдУрд▓рд╛рдЗрдЯ рдЙрддреНрдкрд╛рджрди, рдЖрддрд╛ рдЬрд┐рдУрд▓рд╛рдЗрдЯ рд▓реЗрдЧрд╕реА рдореНрд╣рдгреВрди рдУрд│рдЦрд▓реЗ рдЬрд╛рддреЗ, рдкрд░рд╡рд╛рдиреНрдпрд╛рдЕрдВрддрд░реНрдЧрдд рд╡рд┐рддрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ, рдбреЗрдЯрд╛рдмреЗрд╕ рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдд рд╣реЛрддреЗ рдХреНрд░рд┐рдПрдЯрд┐рд╡реНрд╣ рдХреЙрдордиреНрд╕ ASA 4.0 рдХрдВрдкрдиреА рдореЕрдХреНрд╕рдорд╛рдЗрдВрдб. рдпрд╛ рдЙрддреНрдкрд╛рджрдирд╛рд╕рд╣ рдПрдХрд╛рдЪ рд╡реЗрд│реА рджреЛрди рдШрдЯрдирд╛ рдШрдбрд▓реНрдпрд╛ рдЬреНрдпрд╛рдиреЗ iptables рд╡рд┐рд╕реНрддрд╛рд░рд╛рд╕рд╣ рд╕реБрд╕рдВрдЧрддрддрд╛ "рднрдВрдЧ" рдХреЗрд▓реА.

рд╕рд░реНрд╡рдкреНрд░рдердо, рдЬрд╛рдиреЗрд╡рд╛рд░реА 2018 рдордзреНрдпреЗ рдШреЛрд╖рд┐рдд рдХреЗрд▓реЗ рдЙрддреНрдкрд╛рджрдирд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рд╕рдВрдкреБрд╖реНрдЯрд╛рдд рдЖрдгрдгреНрдпрд╛рдмрджреНрджрд▓ рдЖрдгрд┐ 2019 рдЬрд╛рдиреЗрд╡рд╛рд░реА 2 рд░реЛрдЬреА, рдбреЗрдЯрд╛рдмреЗрд╕рдЪреА рдЬреБрдиреА рдЖрд╡реГрддреНрддреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡ рд▓рд┐рдВрдХ рдЕрдзрд┐рдХреГрдд рд╡реЗрдмрд╕рд╛рдЗрдЯрд╡рд░реВрди рдХрд╛рдвреВрди рдЯрд╛рдХрдгреНрдпрд╛рдд рдЖрд▓реНрдпрд╛. рдирд╡реАрди рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ GeoLite2 рдЙрддреНрдкрд╛рджрди рдХрд┐рдВрд╡рд╛ рддреНрдпрд╛рдЪреА рд╕рд╢реБрд▓реНрдХ рдЖрд╡реГрддреНрддреА GeoIPXNUMX рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХреЗрд▓реА рдЬрд╛рддреЗ.

рджреБрд╕рд░реЗ рдореНрд╣рдгрдЬреЗ, рдбрд┐рд╕реЗрдВрдмрд░ 2019 рдкрд╛рд╕реВрди MaxMind рдирдореВрдж рдХреЗрд▓реЗ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреАрд▓ рдкреНрд░рд╡реЗрд╢рд╛рдордзреНрдпреЗ рд▓рдХреНрд╖рдгреАрдп рдмрджрд▓ рдЭрд╛рд▓реНрдпрд╛рдмрджреНрджрд▓. рдХреЕрд▓рд┐рдлреЛрд░реНрдирд┐рдпрд╛ рдЧреНрд░рд╛рд╣рдХ рдЧреЛрдкрдиреАрдпрддрд╛ рдХрд╛рдпрджреНрдпрд╛рдЪреЗ рдкрд╛рд▓рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, MaxMind рдиреЗ рдиреЛрдВрджрдгреАрд╕рд╣ GeoLite2 рдЪреЗ рд╡рд┐рддрд░рдг "рдХрд╡реНрд╣рд░" рдХрд░рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛.

рдЖрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛рдВрдЪреЗ рдЙрддреНрдкрд╛рджрди рд╡рд╛рдкрд░рд╛рдпрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рдиреЗ рдЖрдореНрд╣реА рдпрд╛ рдкреГрд╖реНрдард╛рд╡рд░ рдиреЛрдВрджрдгреА рдХрд░реВ.

xtables-addons: рджреЗрд╢рд╛рдиреБрд╕рд╛рд░ рдкреЕрдХреЗрдЬ рдлрд┐рд▓реНрдЯрд░ рдХрд░рд╛
рддреНрдпрд╛рдирдВрддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕ рд╕рд╛рдВрдЧрдгрд╛рд░рд╛ рдИрдореЗрд▓ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдИрд▓. рдЖрддрд╛ рдЖрдореНрд╣реА рдЦрд╛рддреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЖрд╣реЗ, рдЖрдореНрд╣рд╛рд▓рд╛ рдкрд░рд╡рд╛рдирд╛ рдХреА рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рддреБрдордЪреНрдпрд╛ рд╡реИрдпрдХреНрддрд┐рдХ рдЦрд╛рддреНрдпрд╛рдд рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдпрдЯрдо рд╕рд╛рдкрдбрддреЛ рдорд╛рдЭреНрдпрд╛ рдкрд░рд╡рд╛рдирд╛ рдХреА, рдЖрдгрд┐ рдирдВрддрд░ рдмрдЯрдгрд╛рд╡рд░ рдХреНрд▓рд┐рдХ рдХрд░рд╛ рдирд╡реАрди рдкрд░рд╡рд╛рдирд╛ рдХреА рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рд╛.

рдХреА рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛, рдЖрдореНрд╣рд╛рд▓рд╛ рдПрдХрдЪ рдкреНрд░рд╢реНрди рд╡рд┐рдЪрд╛рд░рд▓рд╛ рдЬрд╛рдИрд▓: рдЖрдореНрд╣реА рд╣реА рдХреА GeoIP рдЕрдкрдбреЗрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдордордзреНрдпреЗ рд╡рд╛рдкрд░реВ рдХрд╛? рдЖрдореНрд╣реА рдирдХрд╛рд░рд╛рддреНрдордХ рдЙрддреНрддрд░ рджреЗрддреЛ рдЖрдгрд┐ рдмрдЯрдг рджрд╛рдмрддреЛ рдкреБрд╖реНрдЯреА. рдХреА рдкреЙрдк-рдЕрдк рд╡рд┐рдВрдбреЛрдордзреНрдпреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреЗрд▓реА рдЬрд╛рдИрд▓. рд╣реА рдХреА рд╕реБрд░рдХреНрд╖рд┐рдд рдард┐рдХрд╛рдгреА рдЬрддрди рдХрд░рд╛, рддреБрдореНрд╣реА рдПрдХрджрд╛ рдкреЙрдк-рдЕрдк рд╡рд┐рдВрдбреЛ рдмрдВрдж рдХреЗрд▓реНрдпрд╛рд╡рд░, рддреБрдореНрд╣реА рд╕рдВрдкреВрд░реНрдг рдХреА рдкрд╛рд╣реВ рд╢рдХрдгрд╛рд░ рдирд╛рд╣реА.

xtables-addons: рджреЗрд╢рд╛рдиреБрд╕рд╛рд░ рдкреЕрдХреЗрдЬ рдлрд┐рд▓реНрдЯрд░ рдХрд░рд╛
рдЖрдордЪреНрдпрд╛рдХрдбреЗ GeoLite2 рдбреЗрдЯрд╛рдмреЗрд╕реЗрд╕ рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдЖрд╣реЗ, рдкрд░рдВрддреБ рддреНрдпрд╛рдВрдЪреЗ рд╕реНрд╡рд░реВрдк xt_geoip_build рд╕реНрдХреНрд░рд┐рдкреНрдЯрджреНрд╡рд╛рд░реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рд╢реА рд╕реБрд╕рдВрдЧрдд рдирд╛рд╣реА. рдпреЗрдереЗрдЪ GeoLite2xtables рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдЪрд╛рд╡рд╛рд╕рд╛рдареА рдпреЗрддрд╛рдд. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА, NetAddr::IP perl рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛:

wget https://cpan.metacpan.org/authors/id/M/MI/MIKER/NetAddr-IP-4.079.tar.gz

tar xvf NetAddr-IP-4.079.tar.gz

cd NetAddr-IP-4.079

perl Makefile.PL

make

make install

рдкреБрдвреЗ, рдЖрдореНрд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╕рд╣ рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рдХреНрд▓реЛрди рдХрд░рддреЛ рдЖрдгрд┐ рдлрд╛рдИрд▓рдордзреНрдпреЗ рдкреВрд░реНрд╡реА рдкреНрд░рд╛рдкреНрдд рдХреЗрд▓реЗрд▓реА рдкрд░рд╡рд╛рдирд╛ рдХреА рд▓рд┐рд╣рд┐рддреЛ:

git clone https://github.com/mschmitt/GeoLite2xtables.git

cd GeoLite2xtables

echo YOUR_LICENSE_KEY=тАЩ123ertyui123' > geolite2.license

рдЪрд▓рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд▓рд╡реВ:

# ╨б╨║╨░╤З╨╕╨▓╨░╨╡╨╝ ╨┤╨░╨╜╨╜╤Л╨╡ GeoLite2
./00_download_geolite2
# ╨б╨║╨░╤З╨╕╨▓╨░╨╡╨╝ ╨╕╨╜╤Д╨╛╤А╨╝╨░╤Ж╨╕╤О ╨╛ ╤Б╤В╤А╨░╨╜╨░╤Е (╨┤╨╗╤П ╤Б╨╛╨╛╤В╨▓╨╡╤В╤Б╤В╨▓╨╕╤П ╨║╨╛╨┤╤Г)
./10_download_countryinfo
# ╨Ъ╨╛╨╜╨▓╨╡╤А╤В╨╕╤А╤Г╨╡╨╝ GeoLite2 ╨▒╨░╨╖╤Г ╨▓ ╤Д╨╛╤А╨╝╨░╤В GeoLite Legacy 
cat /tmp/GeoLite2-Country-Blocks-IPv{4,6}.csv |
./20_convert_geolite2 /tmp/CountryInfo.txt > /usr/share/xt_geoip/dbip-country-lite.csv

рдореЕрдХреНрд╕рдорд╛рдЗрдВрдб рджрд░рд░реЛрдЬ 2000 рдбрд╛рдЙрдирд▓реЛрдбреНрд╕рдЪреА рдорд░реНрдпрд╛рджрд╛ рдШрд╛рд▓рддреЗ рдЖрдгрд┐ рдореЛрдареНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреЗ рд╕рд░реНрд╡реНрд╣рд░рд╕рд╣, рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЕрдкрдбреЗрдЯ рдХреЕрд╢реЗ рдХрд░рдгреНрдпрд╛рдЪреА рдСрдлрд░ рджреЗрддреЗ.

рдХреГрдкрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛ рдХреА рдЖрдЙрдЯрдкреБрдЯ рдлрд╛рдЗрд▓ рдХреЙрд▓ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ dbip-country-lite.csv... рджреБрд░реНрджреИрд╡рд╛рдиреЗ, 20_convert_geolite2 рдкрд░рд┐рдкреВрд░реНрдг рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХрд░рдд рдирд╛рд╣реА. рд╕реНрдХреНрд░рд┐рдкреНрдЯ xt_geoip_build рддреАрди рд╕реНрддрдВрднрд╛рдВрдЪреА рдЕрдкреЗрдХреНрд╖рд╛ рдЖрд╣реЗ:

  • рдкрддреНрддреНрдпрд╛рдЪреНрдпрд╛ рд╢реНрд░реЗрдгреАрдЪреА рд╕реБрд░реБрд╡рд╛рдд;
  • рдкрддреНрддреНрдпрд╛рдЪреНрдпрд╛ рд╢реНрд░реЗрдгреАрдЪрд╛ рд╢реЗрд╡рдЯ;
  • рджреЗрд╢ рдХреЛрдб iso-3166-alpha2 рдордзреНрдпреЗ.

рдЖрдгрд┐ рдЖрдЙрдЯрдкреБрдЯ рдлрд╛рдЗрд▓рдордзреНрдпреЗ рд╕рд╣рд╛ рд╕реНрддрдВрдн рдЖрд╣реЗрдд:

  • рдкрддреНрддреНрдпрд╛рдЪреНрдпрд╛ рд╢реНрд░реЗрдгреАрдЪреА рд╕реБрд░реБрд╡рд╛рдд (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡);
  • рдкрддреНрддрд╛ рд╢реНрд░реЗрдгреАрдЪрд╛ рд╢реЗрд╡рдЯ (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡);
  • рдкрддреНрддреНрдпрд╛рдЪреНрдпрд╛ рд╢реНрд░реЗрдгреАрдЪреА рд╕реБрд░реБрд╡рд╛рдд (рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡);
  • рдкрддреНрддреНрдпрд╛рдЪреНрдпрд╛ рд╢реНрд░реЗрдгреАрдЪрд╛ рд╢реЗрд╡рдЯ (рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡);
  • рджреЗрд╢рд╛рдЪрд╛ рдХреЛрдб;
  • рджреЗрд╢рд╛рдЪреЗ рдирд╛рд╡.

рд╣реА рд╡рд┐рд╕рдВрдЧрддреА рдЧрдВрднреАрд░ рдЖрд╣реЗ рдЖрдгрд┐ рджреЛрдирдкреИрдХреА рдПрдХрд╛ рдкреНрд░рдХрд╛рд░реЗ рджреБрд░реБрд╕реНрдд рдХреЗрд▓реА рдЬрд╛рдК рд╢рдХрддреЗ:

  1. рд╕реБрдзрд╛рд░рдгреЗ 20_convert_geolite2;
  2. рд╕реБрдзрд╛рд░рдгреЗ xt_geoip_build.

рдкрд╣рд┐рд▓реНрдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд рдЖрдореНрд╣реА рдХрдореА рдХрд░рддреЛ printf рдЖрд╡рд╢реНрдпрдХ рд╕реНрд╡рд░реВрдкрд╛рдд, рдЖрдгрд┐ рджреБрд╕рд▒реНрдпрд╛рдордзреНрдпреЗ - рдЖрдореНрд╣реА рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдордзреНрдпреЗ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдмрджрд▓рддреЛ $cc рд╡рд░ $row->[4]. рдпрд╛рдирдВрддрд░ рдЖрдкрдг рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛:

/usr/lib/xtables-addons/xt_geoip_build -S /usr/share/xt_geoip/ -D /usr/share/xt_geoip

. . .
 2239 IPv4 ranges for ZA
  348 IPv6 ranges for ZA
   56 IPv4 ranges for ZM
   12 IPv6 ranges for ZM
   56 IPv4 ranges for ZW
   15 IPv6 ranges for ZW

рдпрд╛рдЪреА рдиреЛрдВрдж рд▓реЗрдЦрдХрд╛рдиреЗ GeoLite2xtables рддреНрдпрд╛рдЪреНрдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдЙрддреНрдкрд╛рджрди рдЖрдгрд┐ рдСрдлрд░рд╕рд╛рдареА рддрдпрд╛рд░ рдорд╛рдирдд рдирд╛рд╣реАрдд рдЯреНрд░реЕрдХ рдореВрд│ xt_geoip_* рд╕реНрдХреНрд░рд┐рдкреНрдЯрдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рд╕рд╛рдареА. рдореНрд╣рдгреВрди, рд╕реЛрд░реНрд╕ рдХреЛрдбрдордзреВрди рдЕрд╕реЗрдВрдмреНрд▓реАрдХрдбреЗ рдЬрд╛рдК рдпрд╛, рдЬреНрдпрд╛рдордзреНрдпреЗ рдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдЖрдзреАрдЪ рдЕрдкрдбреЗрдЯ рдХреЗрд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд.

рд╕реНрд░реЛрдд рдЖрд╡реГрддреНрддреА

рд╕реНрддреНрд░реЛрдд рдХреЛрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреВрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛рдирд╛ xt_geoip_* рдХреЕрдЯрд▓реЙрдЧ рдордзреНрдпреЗ рд╕реНрдерд┐рдд рдЖрд╣реЗрдд /usr/local/libexec/xtables-addons. рд╕реНрдХреНрд░рд┐рдкреНрдЯрдЪреА рд╣реА рдЖрд╡реГрддреНрддреА рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд╛рдкрд░рддреЗ рдЖрдпрдкреА рддреЗ рдХрдВрдЯреНрд░реА рд▓рд╛рдЗрдЯ. рдкрд░рд╡рд╛рдирд╛ рдХреНрд░рд┐рдПрдЯрд┐рд╡реНрд╣ рдХреЙрдордиреНрд╕ рдЕреЕрдЯреНрд░рд┐рдмреНрдпреБрд╢рди рд▓рд╛рдпрд╕рдиреНрд╕ рдЖрд╣реЗ, рдЖрдгрд┐ рдЙрдкрд▓рдмреНрдз рдбреЗрдЯрд╛рд╡рд░реВрди рдЕрддрд┐рд╢рдп рдЖрд╡рд╢реНрдпрдХ рддреАрди рд╕реНрддрдВрдн рдЖрд╣реЗрдд. рдбреЗрдЯрд╛рдмреЗрд╕ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рд╛ рдЖрдгрд┐ рдПрдХрддреНрд░ рдХрд░рд╛:

cd /usr/share/xt_geoip/

/usr/local/libexec/xtables-addons/xt_geoip_dl

/usr/local/libexec/xtables-addons/xt_geoip_build

рдпрд╛ рдЪрд░рдгрд╛рдВрдирдВрддрд░, iptables рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕ рддрдпрд╛рд░ рдЖрд╣реЗ.

iptables рдордзреНрдпреЗ geoip рд╡рд╛рдкрд░рдгреЗ

рдореЙрдбреНрдпреВрд▓ xt_geoip рдлрдХреНрдд рджреЛрди рдХреА рдЬреЛрдбрддреЗ:

geoip match options:
[!] --src-cc, --source-country country[,country...]
	Match packet coming from (one of) the specified country(ies)
[!] --dst-cc, --destination-country country[,country...]
	Match packet going to (one of) the specified country(ies)

NOTE: The country is inputed by its ISO3166 code.

iptables рд╕рд╛рдареА рдирд┐рдпрдо рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдкрджреНрдзрддреА, рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╛рд╣рддрд╛рдд. рдЕрддрд┐рд░рд┐рдХреНрдд рдореЙрдбреНрдпреВрд▓реНрд╕рдордзреАрд▓ рдХреА рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА -m рд╕реНрд╡рд┐рдЪрд╕рд╣ рдореЙрдбреНрдпреВрд▓рдЪреЗ рдирд╛рд╡ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкреЛрд░реНрдЯ 443 рд╡рд░ рдпреЗрдгрд╛рд░реЗ TCP рдХрдиреЗрдХреНрд╢рди рдЕрд╡рд░реЛрдзрд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдирд┐рдпрдо рд╕рд░реНрд╡ рдЗрдВрдЯрд░рдлреЗрд╕рд╡рд░ рдпреВрдПрд╕рдП рдордзреВрди рдирд╛рд╣реА:

iptables -I INPUT ! -i lo -p tcp --dport 443 -m geoip ! --src-cc US -j DROP

xt_geoip_build рджреНрд╡рд╛рд░реЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдлрд╛рдпрд▓реА рдХреЗрд╡рд│ рдирд┐рдпрдо рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛ рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд, рдкрд░рдВрддреБ рдлрд┐рд▓реНрдЯрд░ рдХрд░рддрд╛рдирд╛ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрддрд▓реНрдпрд╛ рдЬрд╛рдд рдирд╛рд╣реАрдд. рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ, geoip рдбреЗрдЯрд╛рдмреЗрд╕ рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рдЕрджреНрдпрддрдирд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА рдкреНрд░рдердо iv* рдлрд╛рдЗрд▓реНрд╕ рдЕрджреНрдпрддрдирд┐рдд рдХреЗрд▓реНрдпрд╛ рдкрд╛рд╣рд┐рдЬреЗрдд рдЖрдгрд┐ рдирдВрддрд░ iptables рдордзреНрдпреЗ geoip рд╡рд╛рдкрд░рдгрд╛рд░реЗ рд╕рд░реНрд╡ рдирд┐рдпрдо рдкреБрдиреНрд╣рд╛ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗрдд.

рдирд┐рд╖реНрдХрд░реНрд╖

рджреЗрд╢рд╛рдВрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдкреЕрдХреЗрдЯ рдлрд┐рд▓реНрдЯрд░ рдХрд░рдгреЗ рд╣реА рдХрд╛рд╣реАрд╕реЗ рд╡реЗрд│реЛрд╡реЗрд│реА рд╡рд┐рд╕рд░рд▓реЗрд▓реА рд░рдгрдиреАрддреА рдЖрд╣реЗ. рдЕрд╕реЗ рдЕрд╕реВрдирд╣реА, рдЕрд╢рд╛ рдлрд┐рд▓реНрдЯрд░рд┐рдВрдЧрд╕рд╛рдареА рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рд╕рд╛рдзрдиреЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реА рдЬрд╛рдд рдЖрд╣реЗрдд рдЖрдгрд┐ рдХрджрд╛рдЪрд┐рдд, рд▓рд╡рдХрд░рдЪ рдирд╡реАрди geoip рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рддреНрдпрд╛рд╕рд╣ xt_geoip рдЪреА рдирд╡реАрди рдЖрд╡реГрддреНрддреА рдкреЕрдХреЗрдЬ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХрд╛рдВрдордзреНрдпреЗ рджрд┐рд╕реВрди рдпреЗрдИрд▓, рдЬреЗ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХрд╛рдВрдЪреЗ рдЬреАрд╡рди рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рд╕реБрд▓рдн рдХрд░реЗрд▓.

xtables-addons: рджреЗрд╢рд╛рдиреБрд╕рд╛рд░ рдкреЕрдХреЗрдЬ рдлрд┐рд▓реНрдЯрд░ рдХрд░рд╛

рдХреЗрд╡рд│ рдиреЛрдВрджрдгреАрдХреГрдд рд╡рд╛рдкрд░рдХрд░реНрддреЗрдЪ рд╕рд░реНрд╡реЗрдХреНрд╖рдгрд╛рдд рднрд╛рдЧ рдШреЗрдК рд╢рдХрддрд╛рдд. рд╕рд╛рдЗрди рдЗрди рдХрд░рд╛, рдЖрдкрд▓реЗ рд╕реНрд╡рд╛рдЧрдд рдЖрд╣реЗ.

рддреБрдореНрд╣реА рдХрдзреА рджреЗрд╢рд╛рдиреБрд╕рд╛рд░ рдлрд┐рд▓реНрдЯрд░рд┐рдВрдЧ рд╡рд╛рдкрд░рд▓реЗ рдЖрд╣реЗ рдХрд╛?

  • 59,1%рд╣реЛрдп реирежрен

  • 40,9%рдХреНрд░рдорд╛рдВрдХ реирекрек

22 рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдиреА рдорддрджрд╛рди рдХреЗрд▓реЗ. 3 рд╡рд╛рдкрд░рдХрд░реНрддреЗ рджреВрд░ рд░рд╛рд╣рд┐рд▓реЗ.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛