ИзползванС Π½Π° скСнСр Π·Π° уязвимости Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Dependency-Check Π² GitlabCI

Π’Π°ΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ уязвимостями, ΠΏΡ€ΠΈ этом Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ поставок Ρ‚Π΅Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ПО, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… состоят соврСмСнныС систСмы. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π³ΠΈΠ±ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ ΠΈ DevOps, Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя ΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ. Но такая ситуация ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈ свои риски: Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡ΡƒΠΆΠΈΠ΅ ошибки ΠΈ уязвимости.

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΈΡ… прилоТСниях, ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Π΅ вСрсии Π·Π°Π³Ρ€ΡƒΠΆΠ°Π»ΠΈΡΡŒ ΠΈΠ· ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Ρ… источников, ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ послС исправлСния вновь ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… уязвимостСй.

Π’ этом постС ΠΌΡ‹ рассмотрим использованиС OWASP Dependency Check для прСрывания сборки Π² случаС обнаруТСния ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с вашим ΠΊΠΎΠ΄ΠΎΠΌ.

Π’ ΠΊΠ½ΠΈΠ³Π΅ Β«Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² Agile-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…Β» ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ OWASP Dependency Check β€” это бСсплатный сканСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΈ выявляСт содСрТащиСся Π² Π½ΠΈΡ… уязвимости. Доступны вСрсии для Java, .NET, Ruby (gemspec), PHP (composer), Node.js ΠΈ Python, Π° Ρ‚Π°ΠΊΠΆΠ΅ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° C/C++. Dependency Check интСгрируСтся с популярными срСдствами сборки, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Ant, Maven ΠΈ Gradle, Π° Ρ‚Π°ΠΊΠΆΠ΅ с сСрвСрами Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Jenkins.

Dependency Check сообщаСт ΠΎΠ±ΠΎ всСх ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… с извСстными уязвимостями ΠΈΠ· ΠΠ°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… уязвимостСй (NVD) NIST ΠΈ обновляСтся Π½Π° основС Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· новостных ΠΊΠ°Π½Π°Π»ΠΎΠ² NVD.

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, всС это ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ автоматичСски с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΊΠΈΡ… инструмСнтов, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ OWASP Dependency Check, ΠΈΠ»ΠΈ коммСрчСских ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Black Duck, JFrog Xray, Snyk, Nexus Lifecycle компания Sonatype ΠΈΠ»ΠΈ SourceClear.

Π­Ρ‚ΠΈ инструмСнты ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² сборочныС ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρ‹ для автоматичСского составлСния пСрСчня зависимостСй с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, выявлСния ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… вСрсий Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ с извСстными уязвимостями, Π° Ρ‚Π°ΠΊΠΆΠ΅ для прСрывания сборки Π² случаС выявлСния ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

OWASP Dependency Check

Для тСстирования ΠΈ дСмонстрации Ρ€Π°Π±ΠΎΡ‚Ρ‹ Dependency Check ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ этот Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ dependency-check-example.

Π—Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ HTML ΠΎΡ‚Ρ‡Π΅Ρ‚Π°, трябва Π΄Π° настроитС ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ nginx Π½Π° вашия gitlab-runner.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° конфигурация Π½Π° nginx:

server {
    listen       9999;
    listen       [::]:9999;
    server_name  _;
    root         /home/gitlab-runner/builds;

    location / {
        autoindex on;
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }

}

Π’ края Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ слСдната ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π°:

ИзползванС Π½Π° скСнСр Π·Π° уязвимости Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Dependency-Check Π² GitlabCI

ΠžΡ‚ΠΈΠ²Π°ΠΌΠ΅ Π½Π° Π»ΠΈΠ½ΠΊΠ° ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° Dependency Check.

ΠŸΡŠΡ€Π²ΠΈΡΡ‚ ΡΠΊΡ€ΠΈΠΉΠ½ΡˆΠΎΡ‚ β€” Π³ΠΎΡ€Π½Π°Ρ‚Π° част Π½Π° ΠΎΡ‚Ρ‡Π΅Ρ‚Π° с ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅.

ИзползванС Π½Π° скСнСр Π·Π° уязвимости Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Dependency-Check Π² GitlabCI

Вторият ΡΠΊΡ€ΠΈΠΉΠ½ΡˆΠΎΡ‚ прСдставя подробности Π·Π° CVE-2017-5638. Π’ΡƒΠΊ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° CVE ΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²Π΅ към Сксплойти.

ИзползванС Π½Π° скСнСр Π·Π° уязвимости Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Dependency-Check Π² GitlabCI

ВрСтият ΡΠΊΡ€ΠΈΠΉΠ½ΡˆΠΎΡ‚ β€” подробности Π·Π° log4j-api-2.7.jar. Π’ΠΈΠΆΠ΄Π°ΠΌΠ΅, Ρ‡Π΅ Π½ΠΈΠ²Π°Ρ‚Π° Π½Π° CVE са 7.5 ΠΈ 9.8.

ИзползванС Π½Π° скСнСр Π·Π° уязвимости Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Dependency-Check Π² GitlabCI

Π§Π΅Ρ‚Π²ΡŠΡ€Ρ‚ΠΈΡΡ‚ ΡΠΊΡ€ΠΈΠΉΠ½ΡˆΠΎΡ‚ β€” подробности Π·Π° commons-fileupload-1.3.2.jar. Π’ΠΈΠΆΠ΄Π°ΠΌΠ΅, Ρ‡Π΅ Π½ΠΈΠ²Π°Ρ‚Π° Π½Π° CVE са 7.5 ΠΈ 9.8.

ИзползванС Π½Π° скСнСр Π·Π° уязвимости Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Dependency-Check Π² GitlabCI

Ако искатС Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ gitlab pages, Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ възмоТно β€” ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ»Π°Ρ‚Π° сС Π·Π°Π΄Π°Ρ‡Π° няма Π΄Π° създадС Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΡƒΠΊ https://gitlab.com/anton_patsev/dependency-check-example-gitlab-pages.

Π˜Π·Ρ…ΠΎΠ΄ ΠΎΡ‚ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ: Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΈ няма, html ΠΎΡ‚Ρ‡Π΅Ρ‚Π° Π½Π΅ Π²ΠΈΠΆΠ΄Π°ΠΌ. Врябва Π΄Π° ΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅ Artifact: always

https://gitlab.com/anton_patsev/dependency-check-example-gitlab-pages/-/jobs/400004246

ИзползванС Π½Π° скСнСр Π·Π° уязвимости Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Dependency-Check Π² GitlabCI

Π Π΅Π³ΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° CVE уязвимоститС

Най-Π²Π°ΠΆΠ½Π°Ρ‚Π° линия Π² Ρ„Π°ΠΉΠ»Π° gitlab-ci.yaml:

mvn $MAVEN_CLI_OPTS test org.owasp:dependency-check-maven:check -DfailBuildOnCVSS=7

Π‘ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° failBuildOnCVSS ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€Π°Ρ‚Π΅ Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° CVE уязвимоститС, Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ Π΄Π° Ρ€Π΅Π°Π³ΠΈΡ€Π°Ρ‚Π΅.

Π˜Π·Ρ‚Π΅Π³Π»ΡΠ½Π΅ Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ с уязвимости (NVD) NIST ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚

ЗабСлязахтС, Ρ‡Π΅ постоянно изтСгля Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ с уязвимости (NVD) NIST ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚:

ИзползванС Π½Π° скСнСр Π·Π° уязвимости Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Dependency-Check Π² GitlabCI

Π—Π° изтСглянС ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° nist_data_mirror_golang

НСка я инсталирамС ΠΈ стартирамС.

yum -y install yum-plugin-copr
yum copr enable antonpatsev/nist_data_mirror_golang
yum -y install nist-data-mirror
systemctl start nist-data-mirror

Nist-data-mirror изтСгля CVE JSON NIST Π² /var/www/repos/nist-data-mirror/ ΠΏΡ€ΠΈ стартиранС ΠΈ обновява Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π½Π° всСки 24 часа.

Π—Π° Π΄Π° ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΡ‚Π΅ CVE JSON NIST, трябва Π΄Π° настроитС ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ nginx (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° вашия gitlab-runner).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° конфигурация Π½Π° nginx:

server {
    listen       12345;
    listen       [::]:12345;
    server_name  _;
    root         /var/www/repos/nist-data-mirror/;

    location / {
        autoindex on;
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }

}

Π—Π° Π΄Π° Π½Π΅ ΠΏΡ€Π°Π²ΠΈΠΌ дълга ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π² която сС стартира mvn, Π΄Π° изнСсСм ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π² ΠΎΡ‚Π΄Π΅Π»Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° DEPENDENCY_OPTS.

Π˜Ρ‚ΠΎΠ³ΠΎΠ²Π°Ρ‚Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° конфигурация Π½Π° .gitlab-ci.yml Ρ‰Π΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°:

ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ:
  MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
  MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
  DEPENDENCY_OPTS: "-DfailBuildOnCVSS=7 -DcveUrlModified=http://localhost:12345/nvdcve-1.1-modified.json.gz -DcveUrlBase=http://localhost:12345/nvdcve-1.1-%d.json.gz"

кСш:
  ΠΏΡŠΡ‚ΠΈΡ‰Π°:
    - .m2/repository

ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°:
  Π΅Ρ‚Π°ΠΏ: тСст
  скрипт:
    - set +e
    - mvn $MAVEN_CLI_OPTS install org.owasp:dependency-check-maven:check $DEPENDENCY_OPTS || EXIT_CODE=$?
    - export PATH_WITHOUT_HOME=$(pwd | sed -e "s//home/gitlab-runner/builds//g")
    - echo "************************* URL Dependency-check-report.html *************************"
    - echo "http://$HOSTNAME:9999$PATH_WITHOUT_HOME/target/dependency-check-report.html"
    - set -e
    - exit ${EXIT_CODE}
  Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ:
    - shell

Telegram Ρ‡Π°Ρ‚ Π·Π° DevOps ΠΈ Бигурност
Telegram ΠΊΠ°Π½Π°Π» DevSecOps / SSDLC - БСзопасна Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster