Seccomp Π² Kubernetes: 7 Π½Π΅Ρ‰Π°, ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° Π·Π½Π°Π΅Ρ‚Π΅ ΠΎΡ‚ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ

ΠŸΡ€ΠΈΠΌ. ΠΏΡ€Π΅Π².: ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡΠΌΠ΅ Π²ΠΈ ΠΏΡ€Π΅Π²ΠΎΠ΄ Π½Π° статия Π½Π° ΡΡ‚Π°Ρ€ΡˆΠΈΡ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ ΠΏΠΎ сигурността Π½Π° прилоТСнията Π½Π° британската компания ASOS.com. Π‘ нСя Ρ‚ΠΎΠΉ Π·Π°ΠΏΠΎΡ‡Π²Π° ΠΏΠΎΡ€Π΅Π΄ΠΈΡ†Π° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, посвСтСни Π½Π° повишаванС Π½Π° сигурността Π² Kubernetes Ρ‡Ρ€Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° seccomp. Ако Π²ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ сС харСса Π½Π° Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅, Ρ‰Π΅ послСдвамС Π°Π²Ρ‚ΠΎΡ€Π° ΠΈ Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΠΌ с Π±ΡŠΠ΄Π΅Ρ‰ΠΈΡ‚Π΅ ΠΌΡƒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈ ΠΏΠΎ Ρ‚Π΅ΠΌΠ°Ρ‚Π°.

Seccomp Π² Kubernetes: 7 Π½Π΅Ρ‰Π°, ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° Π·Π½Π°Π΅Ρ‚Π΅ ΠΎΡ‚ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ

Π’Π°Π·ΠΈ статия Π΅ ΠΏΡŠΡ€Π²Π°Ρ‚Π° ΠΎΡ‚ сСрия ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π° сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ seccomp Π² Π΄ΡƒΡ…Π° Π½Π° SecDevOps, Π±Π΅Π· Π΄Π° сС прибягва Π΄ΠΎ магия ΠΈ заклинания. Π’ ΠΏΡŠΡ€Π²Π°Ρ‚Π° част Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌ основитС ΠΈ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡ‚Π΅ Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈ Π½Π° рСализацията Π½Π° seccomp Π² Kubernetes.

ЕкосистСмата Π½Π° Kubernetes ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ ΠΎΡ‚ Π½Π°Ρ‡ΠΈΠ½ΠΈ Π·Π° осигуряванС Π½Π° сигурност ΠΈ изолация Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅. Бтатията Π΅ посвСтСна Π½Π° Π Π΅ΠΆΠΈΠΌΡŠΡ‚ Π½Π° Π‘ΠΈΠ³ΡƒΡ€Π½ΠΎ Π˜Π·Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠ΅, извСстСн ΡΡŠΡ‰ΠΎ ΠΊΠ°Ρ‚ΠΎ seccomp. НСговата ΡΡŠΡ‰Π½ΠΎΡΡ‚ сС ΡΡŠΡΡ‚ΠΎΠΈ във Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° систСмни повиквания, Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ Π·Π° изпълнСниС ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅.

Π—Π°Ρ‰ΠΎ Ρ‚ΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½ΠΎ? ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ Π΅ просто процСс, стартиран Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° машина. Π’ΠΎΠΉ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ядрото Π½Π°Ρ€Π°Π²Π½ΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ прилоТСния. Ако ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ ΠΌΠΎΠΆΠ΅Ρ…Π° Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ всякакви систСмни повиквания, Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ Π±ΠΈΡ…Π° ΠΌΠΎΠ³Π»ΠΈ Π±ΡŠΡ€Π·ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Ρ‚ΠΎΠ²Π°, Π·Π° Π΄Π° заобиколят изолацията Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈ Π΄Π° Π²ΡŠΠ·Π΄Π΅ΠΉΡΡ‚Π²Π°Ρ‚ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ прилоТСния: Π΄Π° ΠΏΡ€ΠΈΡ…Π²Π°Ρ‰Π°Ρ‚ информация, Π΄Π° промСнят систСмни настройки ΠΈ Ρ‚.Π½.

ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ‚Π΅ seccomp опрСдСлят ΠΊΠΎΠΈ систСмни повиквания трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈ ΠΈΠ»ΠΈ Π·Π°Π±Ρ€Π°Π½Π΅Π½ΠΈ. Π‘Ρ€Π΅Π΄Π°Ρ‚Π° Π½Π° изпълнСниС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° стартиранС, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ядрото Π΄Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° тяхното изпълнСниС. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ позволява Π΄Π° сС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ΡŠΡ‚ Π½Π° Π°Ρ‚Π°ΠΊΠ° ΠΈ Π΄Π° сС Π½Π°ΠΌΠ°Π»ΠΈ Ρ‰Π΅Ρ‚Π°Ρ‚Π° Π² случай, Ρ‡Π΅ някаква ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π²ΡŠΡ‚Ρ€Π΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° (Ρ‚.Π΅. Π²Π°ΡˆΠΈΡ‚Π΅ зависимости ΠΈΠ»ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ зависимости) Π·Π°ΠΏΠΎΡ‡Π½Π΅ Π΄Π° ΠΏΡ€Π°Π²ΠΈ Π½Π΅Ρ‰Π°, ΠΊΠΎΠΈΡ‚ΠΎ нямат Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

Π Π°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ основитС

Базовият ΠΏΡ€ΠΎΡ„ΠΈΠ» seccomp Π²ΠΊΠ»ΡŽΡ‡Π²Π° Ρ‚Ρ€ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π°: defaultAction, architectures (ΠΈΠ»ΠΈ archMap) ΠΈ syscalls:

{
    "defaultAction": "SCMP_ACT_ERRNO",
    "architectures": [
        "SCMP_ARCH_X86_64",
        "SCMP_ARCH_X86",
        "SCMP_ARCH_X32"
    ],
    "syscalls": [
        {
            "names": [
                "arch_prctl",
                "sched_yield",
                "futex",
                "write",
                "mmap",
                "exit_group",
                "madvise",
                "rt_sigprocmask",
                "getpid",
                "gettid",
                "tgkill",
                "rt_sigaction",
                "read",
                "getpgrp"
            ],
            "action": "SCMP_ACT_ALLOW"
        }
    ]
}

(medium-basic-seccomp.json)

defaultAction опрСдСля систСмното ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° всяко систСмно ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π΅ Π΅ посочСно Π² сСкцията syscalls. Π—Π° Π΄Π° улСсним Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π°, Π½Π΅ΠΊΠ° сС ΡΡŠΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΠΌ Π²ΡŠΡ€Ρ…Ρƒ Π΄Π²Π΅ основни стойности, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚:

  • SCMP_ACT_ERRNO β€” Π±Π»ΠΎΠΊΠΈΡ€Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° систСмното ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅,
  • SCMP_ACT_ALLOW β€” Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°.

Π’ сСкцията architectures сС изброяват Ρ†Π΅Π»Π΅Π²ΠΈΡ‚Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ. Π’Π°ΠΆΠ½ΠΎ Π΅, Π·Π°Ρ‰ΠΎΡ‚ΠΎ самият Ρ„ΠΈΠ»Ρ‚ΡŠΡ€, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ Π½Π° Π½ΠΈΠ²ΠΎ ядро, зависи ΠΎΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ Π½Π° систСмнитС извиквания, Π° Π½Π΅ ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°Ρ‚Π° ΠΈΠΌ, посочСни Π² ΠΏΡ€ΠΎΡ„ΠΈΠ»Π°. ΠŸΡ€Π΅Π΄ΠΈ ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ срСдата Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Ρ‰Π΅ Π³ΠΈ сопостави с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅. Π˜Π΄Π΅ΡΡ‚Π° Π΅, Ρ‡Π΅ систСмнитС извиквания ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ°Ρ‚ напълно Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ID Π² зависимост ΠΎΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° систСмата. НапримСр, систСмното ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ recvfrom (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° сС Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° информация ΠΎΡ‚ сокСт) ΠΈΠΌΠ° ID = 64 Π² x64 систСми ΠΈ ID = 517 Π² x86. Π’ΡƒΠΊ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ списък Π½Π° всичкитС систСмни извиквания Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈΡ‚Π΅ x86-x64.

Π’ сСкцията syscalls сС изброяват всички систСмни извиквания ΠΈ сС ΡƒΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊΠ²ΠΎ трябва Π΄Π° сС ΠΏΡ€Π°Π²ΠΈ с тях. НапримСр, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ бял списък, ΠΊΠ°Ρ‚ΠΎ Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ defaultAction Π½Π° SCMP_ACT_ERRNO, Π° Π½Π° извикванията Π² сСкцията syscalls Π΄Π° присвоитС SCMP_ACT_ALLOW. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Ρ‚Π΅ само извикванията, посочСни Π² сСкцията syscalls, ΠΈ забраняватС всички останали. Π—Π° чСрния списък трябва Π΄Π° смСнитС стойноститС defaultAction ΠΈ дСйствията Π½Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΈ.

Π‘Π΅Π³Π° трябва Π΄Π° ΠΊΠ°ΠΆΠ° няколко Π΄ΡƒΠΌΠΈ Π·Π° Π½ΡŽΠ°Π½ΡΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΈ. ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΠΊΠΈΡ‚Π΅ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ ΠΈΠ΄Π²Π°Ρ‚ ΠΎΡ‚ Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ Π²ΠΈΠ΅ Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Ρ‚Π΅ линия бизнСс прилоТСния Π² Kubernetes ΠΈ Π΅ Π²Π°ΠΆΠ½ΠΎ Π·Π° вас Π΄Π° работят с Π½Π°ΠΉ-ниски ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ.

1. AllowPrivilegeEscalation=false

Π’ securityContext Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈΠΌΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ AllowPrivilegeEscalation. Ако Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π° false, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ Ρ‰Π΅ сС стартират с Π·Π°Π΄Π°Π΄Π΅Π½ (on) Π±ΠΈΡ‚ no_new_priv. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ Π΅ ясно ΠΎΡ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ: Π½Π΅ позволява Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π΄Π° стартира Π½ΠΎΠ²ΠΈ процСси с ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ, ΠΏΠΎ-Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π²Π΅Ρ‡Π΅ ΠΈΠΌΠ°.

НСТСлан Π΅Ρ„Π΅ΠΊΡ‚ ΠΎΡ‚ Π·Π°Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ Π½Π° true (стойност ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅) Π΅, Ρ‡Π΅ срСдата Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΏΡ€ΠΈΠ»Π°Π³Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»Π° seccomp Π² самото Π½Π°Ρ‡Π°Π»ΠΎ Π½Π° процСса Π½Π° стартиранС. Π’Π°ΠΊΠ° всички систСмни извиквания, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° стартиранС Π½Π° Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡ‚Π΅ процСси Π½Π° срСдата Π·Π° изпълнСниС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»/Π³Ρ€ΡƒΠΏΠ°, ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅ Π½Π° някои capabilities), трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈ Π² ΠΏΡ€ΠΎΡ„ΠΈΠ»Π°.

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΠΉΡ‚ΠΎ изпълнява простото echo hi, Ρ‰Π΅ изисква слСднитС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

{
    "defaultAction": "SCMP_ACT_ERRNO",
    "architectures": [
        "SCMP_ARCH_X86_64",
        "SCMP_ARCH_X86",
        "SCMP_ARCH_X32"
    ],
    "syscalls": [
        {
            "names": [
                "arch_prctl",
                "brk",
                "capget",
                "capset",
                "chdir",
                "close",
                "execve",
                "exit_group",
                "fstat",
                "fstatfs",
                "futex",
                "getdents64",
                "getppid",
                "lstat",
                "mprotect",
                "nanosleep",
                "newfstatat",
                "openat",
                "prctl",
                "read",
                "rt_sigaction",
                "statfs",
                "setgid",
                "setgroups",
                "setuid",
                "stat",
                "uname",
                "write"
            ],
            "action": "SCMP_ACT_ALLOW"
        }
    ]
}

(hi-pod-seccomp.json)

… вмСсто Ρ‚Π΅Π·ΠΈ:

{
    "defaultAction": "SCMP_ACT_ERRNO",
    "architectures": [
        "SCMP_ARCH_X86_64",
        "SCMP_ARCH_X86",
        "SCMP_ARCH_X32"
    ],
    "syscalls": [
        {
            "names": [
                "arch_prctl",
                "brk",
                "close",
                "execve",
                "exit_group",
                "futex",
                "mprotect",
                "nanosleep",
                "stat",
                "write"
            ],
            "action": "SCMP_ACT_ALLOW"
        }
    ]
}

(hi-container-seccomp.json)

Но ΠΎΡ‚Π½ΠΎΠ²ΠΎ, Π·Π°Ρ‰ΠΎ Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ? Π›ΠΈΡ‡Π½ΠΎ Π°Π· Π±ΠΈΡ… сС Π²ΡŠΠ·Π΄ΡŠΡ€ΠΆΠ°Π» ΠΎΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π² бял списък Π½Π° слСднитС систСмни извиквания (освСн Π°ΠΊΠΎ наистина Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ): capset, set_tid_address, setgid, setgroups ΠΈ setuid. ВсС ΠΏΠ°ΠΊ истинската слоТност Π΅ Π² Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°ΠΉΠΊΠΈ процСси, ΠΊΠΎΠΈΡ‚ΠΎ изцяло Π½Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Ρ‚Π΅, ΡΠ²ΡŠΡ€Π·Π²Π°Ρ‚Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ‚Π΅ с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° срСдата Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ. Π‘ Π΄Ρ€ΡƒΠ³ΠΈ Π΄ΡƒΠΌΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ извСднъТ Π΄Π° сС ΡΠ±Π»ΡŠΡΠΊΠ°Ρ‚Π΅ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Ρ‡Π΅ слСд ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° срСдата Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° (ΠΎΡ‚ вас ΠΈΠ»ΠΈ, ΠΏΠΎ-вСроятно, ΠΎΡ‚ доставчика Π½Π° ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ услуги) ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ спират Π΄Π° стартират.

Π‘ΡŠΠ²Π΅Ρ‚ β„–1: Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ с AllowPrivilegeEscaltion=false. Π’ΠΎΠ²Π° Ρ‰Π΅ Π½Π°ΠΌΠ°Π»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° seccomp ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ‚Π΅ ΠΈ Ρ‰Π΅ Π³ΠΈ Π½Π°ΠΏΡ€Π°Π²ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ чувствитСлни към ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² срСдата Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

2. Π—Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° seccomp ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€

Seccomp ΠΏΡ€ΠΎΡ„ΠΈΠ» ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π° Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° pod-Π°:

annotations:
  seccomp.security.alpha.kubernetes.io/pod: "localhost/profile.json"

… ΠΈΠ»ΠΈ Π½Π° Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°:

annotations:
  container.security.alpha.kubernetes.io/: "localhost/profile.json"

ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡΡŠΡ‚ ΠΏΠΎ-Π³ΠΎΡ€Π΅ Ρ‰Π΅ сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Kubernetes seccomp станС GA (Ρ‚ΠΎΠ²Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ сС ΠΎΡ‡Π°ΠΊΠ²Π° Π² слСдващото ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° Kubernetes β€” 1.18 β€” Π±Π΅Π». Ρ€Π΅Π΄.).

Малко Ρ…ΠΎΡ€Π° знаят, Ρ‡Π΅ Π² Kubernetes Π²ΠΈΠ½Π°Π³ΠΈ Π΅ ΠΈΠΌΠ°Π»ΠΎ Π±Π°Π³, ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ seccomp ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ‚Π΅ са сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Π»ΠΈ към pause-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π˜Π·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π°Ρ‚Π° срСда частично компСнсира Ρ‚ΠΎΠ·ΠΈ нСдостиг, Π½ΠΎ Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π½Π΅ ΠΈΠ·Ρ‡Π΅Π·Π²Π° ΠΎΡ‚ pod-ΠΎΠ²Π΅Ρ‚Π΅, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° тяхната инфраструктура.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅, Ρ‡Π΅ Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π²ΠΈΠ½Π°Π³ΠΈ сС стартира с AllowPrivilegeEscalation=true, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΎΠΏΠΈΡ‚ΠΈΡ‚Π΅, спомСнати Π² Ρ‚ΠΎΡ‡ΠΊΠ° 1, ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ΠΎ.

Използвайки seccomp ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, избягватС Ρ‚Π°Π·ΠΈ ΠΊΠ°ΠΏΠ°Π½Π° ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ», ΠΊΠΎΠΉΡ‚ΠΎ Π΅ "настроСн" Π·Π° конкрСтния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Π’ΠΎΠ²Π° Ρ‰Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π΅ поправят бъга ΠΈ Π½ΠΎΠ²Π°Ρ‚Π° вСрсия (ΠΌΠΎΠΆΠ΅ Π±ΠΈ 1.18?) станС Π΄ΠΎΡΡ‚ΡŠΠΏΠ½Π° Π·Π° всички заинтСрСсовани.

Π‘ΡŠΠ²Π΅Ρ‚ β„–2: Π—Π°Π΄Π°Π²Π°ΠΉΡ‚Π΅ seccomp ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.

Π’ практичСски смисъл, Ρ‚ΠΎΠ²Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ слуТи ΠΊΠ°Ρ‚ΠΎ унивСрсалСн ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π½Π° Π²ΡŠΠΏΡ€ΠΎΡΠ°: "Π—Π°Ρ‰ΠΎ моят seccomp ΠΏΡ€ΠΎΡ„ΠΈΠ» Ρ€Π°Π±ΠΎΡ‚ΠΈ с docker run, Π½ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ слСд Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ Π² Kubernetes ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°?".

3. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ runtime/default само Π² ΠΊΡ€Π°ΠΉΠ½ΠΈ случаи

Π’ Kubernetes ΠΈΠΌΠ° Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π½Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ: runtime/default ΠΈ docker/default. И Π΄Π²Π°Ρ‚Π° сС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ ΠΎΡ‚ срСдата Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π° Π½Π΅ ΠΎΡ‚ Kubernetes. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π°Ρ‚ Π² зависимост ΠΎΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π°Ρ‚Π° срСда ΠΈ Π½Π΅ΠΉΠ½Π°Ρ‚Π° вСрсия.

Π‘ Π΄Ρ€ΡƒΠ³ΠΈ Π΄ΡƒΠΌΠΈ, ΠΏΡ€ΠΈ смяна Π½Π° runtime ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π΄Ρ€ΡƒΠ³ Π½Π°Π±ΠΎΡ€ систСмни повиквания, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ»ΠΈ Π½Π΅. ΠŸΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ срСди Π·Π° изпълнСниС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Docker рСализация.Ако искатС Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ», ΡƒΠ²Π΅Ρ€Π΅Ρ‚Π΅ сС, Ρ‡Π΅ Ρ‚ΠΎΠΉ отговаря Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ изисквания.

ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŠΡ‚ docker/default сС счита Π·Π° остарял с Kubernetes 1.11, Π·Π°Ρ‚ΠΎΠ²Π° избягвайтС Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅.

Π‘ΠΏΠΎΡ€Π΅Π΄ ΠΌΠ΅Π½, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŠΡ‚ runtime/default Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π΅Π½ Π·Π° Ρ†Π΅Π»ΠΈΡ‚Π΅, Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ Π΅ създадСн: Π·Π°Ρ‰ΠΈΡ‚Π° Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ ΠΎΡ‚ рисковСтС, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ docker run Π½Π° Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ машини. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π°ΠΊΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° бизнСс прилоТСния, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ Π² Kubernetes ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ, Π±ΠΈΡ… сС осмСлил Π΄Π° Ρ‚Π²ΡŠΡ€Π΄Ρ, Ρ‡Π΅ Ρ‚Π°ΠΊΡŠΠ² ΠΏΡ€ΠΎΡ„ΠΈΠ» Π΅ Ρ‚Π²ΡŠΡ€Π΄Π΅ ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ трябва Π΄Π° сС фокусират Π²ΡŠΡ€Ρ…Ρƒ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ Π·Π° своитС прилоТСния (ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ прилоТСния).

Π‘ΡŠΠ²Π΅Ρ‚ β„–3: Π‘ΡŠΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ seccomp ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ прилоТСния. Ако Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ възмоТно, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ Π·Π° Π²ΠΈΠ΄ΠΎΠ²Π΅ прилоТСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ ΠΏΡ€ΠΎΡ„ΠΈΠ», ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° всички ΡƒΠ΅Π±-API Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Golang. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ runtime/default СдинствСно Π² ΠΊΡ€Π°ΠΉΠ½ΠΈ случаи.

Π’ прСдстоящих публикациях Ρ‰Π΅ сподСлям ΠΊΠ°ΠΊ Π΄Π° сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ seccomp Π² Π΄ΡƒΡ…Π° Π½Π° SecDevOps, Π΄Π° Π³ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ ΠΈ тСстватС Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΈ. Π‘ Π΄Ρ€ΡƒΠ³ΠΈ Π΄ΡƒΠΌΠΈ, няма Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ оправдания Π΄Π° Π½Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ към ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ прилоТСния.

4. Unconfined β€” Π½Π΅ Π΅ опция

ΠžΡ‚ ΠΏΡŠΡ€Π²ΠΈΡ ΠΎΠ΄ΠΈΡ‚ Π½Π° сигурността Π½Π° Kubernetes сС установи, Ρ‡Π΅ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ seccomp Π΅ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Π°ΠΊΠΎ Π½Π΅ Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ PodSecurityPolicy, която Π΄Π° Π³ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, всички pod-ΠΎΠ²Π΅, Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ seccomp ΠΏΡ€ΠΎΡ„ΠΈΠ», Ρ‰Π΅ работят Π² Ρ€Π΅ΠΆΠΈΠΌ seccomp=unconfined.

Π Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π² Ρ‚Π°ΠΊΡŠΠ² Ρ€Π΅ΠΆΠΈΠΌ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ сС Π·Π°Π³ΡƒΠ±Π²Π° цСлия слой Π½Π° изолация, ΠΊΠΎΠΉΡ‚ΠΎ осигурява Π·Π°Ρ‰ΠΈΡ‚Π° Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. ПодобСн ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π½Π΅ сС ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° ΠΎΡ‚ спСциалиститС ΠΏΠΎ сигурност.

Π‘ΡŠΠ²Π΅Ρ‚ #4: Никакъв ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π½Π΅ трябва Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌ seccomp=unconfined, особСно Π² производствСни срСди.

5. Β«Π Π΅ΠΆΠΈΠΌ Π½Π° ΠΎΠ΄ΠΈΡ‚Β»

Π’Π°Π·ΠΈ Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π΅ Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»Π½Π° Π·Π° Kubernetes, Π½ΠΎ всС ΠΏΠ°ΠΊ ΠΏΠΎΠΏΠ°Π΄Π° Π² катСгорията Β«Π½Π° ΠΊΠ°ΠΊΠ²ΠΎ трябва Π΄Π° сС Π·Π½Π°Π΅ ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅Β».

Π‘ΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° seccomp ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Π±ΠΈΠ»ΠΎ слоТно ΠΈ основно Π΅ Ρ€Π°Π·Ρ‡ΠΈΡ‚Π°Π»ΠΎ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π½Π° ΠΏΡ€ΠΎΠ±Π° ΠΈ Π³Ρ€Π΅ΡˆΠΊΠ°. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅, Ρ‡Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ просто нямат Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° тСстват ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ‚Π΅ си Π² производствСни срСди, Π±Π΅Π· Π΄Π° рискуват Π΄Π° β€žΡΡŠΠ±ΠΎΡ€ΡΡ‚β€œ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

Π‘Π»Π΅Π΄ вСрсия 4.14 Π½Π° ядрото Π½Π° Linux стана възмоТно Π΄Π° сС стартират части ΠΎΡ‚ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π° Π² Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΎΠ΄ΠΈΡ‚, записвайки информация Π·Π° всички систСмни повиквания Π² syslog, Π±Π΅Π· Π΄Π° Π³ΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚. Π’ΠΎΠ·ΠΈ Ρ€Π΅ΠΆΠΈΠΌ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ Ρ‡Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° SCMT_ACT_LOG:

SCMP_ACT_LOG: seccomp няма Π΄Π° влияС Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ°, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π°Π²ΠΈ систСмно ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅, освСн Π°ΠΊΠΎ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π° ΠΏΠΎΠ΄ някоС ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π½Π° Ρ„ΠΈΠ»Ρ‚ΡŠΡ€Π°, Π½ΠΎ информацията Π·Π° систСмното ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ Ρ‰Π΅ бъдС записана Π² ΠΆΡƒΡ€Π½Π°Π»Π°.

Π•Ρ‚ΠΎ Ρ‚ΠΈΠΏΠΈΡ‡Π½Π° стратСгия Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Ρ‚Π°Π·ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚:

  1. Π Π°Π·Ρ€Π΅ΡˆΠ΅Ρ‚Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ систСмни повиквания.
  2. Π‘Π»ΠΎΠΊΠΈΡ€Π°ΠΉΡ‚Π΅ систСмни повиквания, Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Π΅ няма Π΄Π° са ΠΏΠΎΠ»Π΅Π·Π½ΠΈ.
  3. ЗаписвайтС информация Π·Π° всички останали повиквания Π² ΠΆΡƒΡ€Π½Π°Π»Π°.

ΠŸΡ€ΠΎΡΡ‚ΠΈΡΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°:

{
    "defaultAction": "SCMP_ACT_LOG",
    "architectures": [
        "SCMP_ARCH_X86_64",
        "SCMP_ARCH_X86",
        "SCMP_ARCH_X32"
    ],
    "syscalls": [
        {
            "names": [
                "arch_prctl",
                "sched_yield",
                "futex",
                "write",
                "mmap",
                "exit_group",
                "madvise",
                "rt_sigprocmask",
                "getpid",
                "gettid",
                "tgkill",
                "rt_sigaction",
                "read",
                "getpgrp"
            ],
            "action": "SCMP_ACT_ALLOW"
        },
        {
            "names": [
                "add_key",
                "keyctl",
                "ptrace"
            ],
            "action": "SCMP_ACT_ERRNO"
        }
    ]
}

(medium-mixed-seccomp.json)

Но Π·Π°ΠΏΠΎΠΌΠ½Π΅Ρ‚Π΅, Ρ‡Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚Π΅ всички извиквания, Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Π΅ няма Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° наврСдят Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. Π”ΠΎΠ±ΡŠΡ€ основа Π·Π° ΡΡŠΡΡ‚Π°Π²ΡΠ½Π΅ Π½Π° списък Π΅ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π°Ρ‚Π° докумСнтация Π½Π° Docker. Π’ нСя ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ сС обяснява ΠΊΠΎΠΈ систСмни извиквания са Π±Π»ΠΎΠΊΠΈΡ€Π°Π½ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΈ Π·Π°Ρ‰ΠΎ.

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, ΠΈΠΌΠ° Π΅Π΄Π½ΠΎ ΡƒΠ»ΠΎΠ²ΠΊΠ°. ΠœΠ°ΠΊΠ°Ρ€ Ρ‡Π΅ SCMT_ACT_LOG Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½ΠΎ ΠΎΡ‚ ядрото Π½Π° Linux ΠΎΡ‚ края Π½Π° 2017 Π³., Ρ‚ΠΎ Π½Π°Π²Π»Π΅Π·Π΅ Π² СкосистСмата Π½Π° Kubernetes сравнитСлно наскоро. Π—Π°Ρ‚ΠΎΠ²Π°, Π·Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ‚ΠΎΠ·ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ‰Π΅ Π²ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ядро Linux 4.14 ΠΈ runC вСрсия Π½Π΅ ΠΏΠΎ-ниска ΠΎΡ‚ v1.0.0-rc9.

Π‘ΡŠΠ²Π΅Ρ‚ β„–5: ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŠΡ‚ Π½Π° Ρ€Π΅ΠΆΠΈΠΌΠ° Π½Π° ΠΎΠ΄ΠΈΡ‚ Π·Π° тСстванС Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΎΠ½Π½Π° срСда ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС създадСн, ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°ΠΉΠΊΠΈ Ρ‡Π΅Ρ€Π΅Π½ ΠΈ бял списък, Π° всички ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄Π° сС записват Π² Π΄Π½Π΅Π²Π½ΠΈΠΊΠ°.

6. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Π±Π΅Π»ΠΈ ΡΠΏΠΈΡΡŠΡ†ΠΈ

Π‘ΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π±Π΅Π»ΠΈ ΡΠΏΠΈΡΡŠΡ†ΠΈ изисква Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ усилия, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ трябва Π΄Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Ρ‚Π΅ всяко ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π½ΠΎ Ρ‚ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ повишава сигурността:

ΠŸΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° сС настоятСлно Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° Π±Π΅Π»ΠΈ ΡΠΏΠΈΡΡŠΡ†ΠΈ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠΉ Π΅ ΠΏΠΎ-лСсСн ΠΈ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½. ЧСрният списък Ρ‰Π΅ трябва Π΄Π° бъдС Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ всСки ΠΏΡŠΡ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ опасно систСмно ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ (ΠΈΠ»ΠΈ опасСн Ρ„Π»Π°Π³/опция, Π°ΠΊΠΎ Ρ‚Π΅ са Π² чСрния списък). ОсвСн Ρ‚ΠΎΠ²Π°, чСсто ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ прСдставянСто Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π°, Π±Π΅Π· Π΄Π° сС промСня Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° ΡΡŠΡ‰Π½ΠΎΡΡ‚, ΠΈ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ Π΄Π° сС заобиколят ограничСнията Π½Π° чСрния списък.

Π—Π° прилоТСния Π½Π° Π΅Π·ΠΈΠΊΠ° Go Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΈΡ… спСциалСн инструмСнт, ΠΊΠΎΠΉΡ‚ΠΎ слСди ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ ΡΡŠΠ±ΠΈΡ€Π° всички извиквания, ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Π½ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС. НапримСр, Π·Π° слСдното ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:

package main

import "fmt"

func main() {
	fmt.Println("test")
}

… Ρ‰Π΅ стартирамС gosystract Ρ‚Π°ΠΊΠ°:

go install https://github.com/pjbgf/gosystract
gosystract --template='{{- range . }}{{printf "%s", .Name}}{{- end}}' application-path

… ΠΈ Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ слСдния Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚:

"sched_yield",
"futex",
"write",
"mmap",
"exit_group",
"madvise",
"rt_sigprocmask",
"getpid",
"gettid",
"tgkill",
"rt_sigaction",
"read",
"getpgrp",
"arch_prctl",

ВсС ΠΎΡ‰Π΅ Ρ‚ΠΎΠ²Π° Π΅ само ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” подробности Π·Π° инструмСнтитС Ρ‰Π΅ послСдват.

Π‘ΡŠΠ²Π΅Ρ‚ β„–6: Π Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°ΠΉΡ‚Π΅ само Ρ‚Π΅Π·ΠΈ ΠΏΠΎΠ²ΠΈΡ†ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ наистина Π²ΠΈ трябват, ΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π°ΠΉΡ‚Π΅ всички останали.

7. ΠŸΠΎΡΡ‚Π°Π²Π΅Ρ‚Π΅ основитС ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ (ΠΈΠ»ΠΈ сС ΠΏΡ€ΠΈΠ³ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π·Π° Π½Π΅ΠΎΡ‡Π°ΠΊΠ²Π°Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅)

Π―Π΄Ρ€ΠΎΡ‚ΠΎ Ρ‰Π΅ слСди Π·Π° спазванСто Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»Π° нСзависимо ΠΎΡ‚ Π·Π°Π΄Π°Π΄Π΅Π½ΠΎΡ‚ΠΎ. Π”ΠΎΡ€ΠΈ ΠΈ Π΄Π° Π½Π΅ Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ искатС. НапримСр, Π°ΠΊΠΎ Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ ΠΏΠΎΠ²ΠΈΡ†ΠΈ ΠΊΠ°Ρ‚ΠΎ exit ΠΈΠ»ΠΈ exit_group, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ няма Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠΈ Ρ€Π°Π±ΠΎΡ‚Π° ΠΈ Π΄ΠΎΡ€ΠΈ проста ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΊΠ°Ρ‚ΠΎ echo hi ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎΠ·Π°Π΄ΡŠΡ€ΠΆΠΈ Π·Π° Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ висока CPU натоварСност Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°:

Seccomp Π² Kubernetes: 7 Π½Π΅Ρ‰Π°, ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° Π·Π½Π°Π΅Ρ‚Π΅ ΠΎΡ‚ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ

Π’ Ρ‚Π°ΠΊΠΈΠ²Π° случаи Π½Π° ΠΏΠΎΠΌΠΎΡ‰ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠΉΠ΄Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ‚Π° strace β€” тя Ρ‰Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ Π² ΠΊΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚:

Seccomp Π² Kubernetes: 7 Π½Π΅Ρ‰Π°, ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° Π·Π½Π°Π΅Ρ‚Π΅ ΠΎΡ‚ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ
sudo strace -c -p 9331

Π£Π±Π΅Π΄Π΅Ρ‚Π΅ сС, Ρ‡Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ‚Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ всички систСмни ΠΏΠΎΠ²ΠΈΡ†ΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°.

Π‘ΡŠΠ²Π΅Ρ‚ β„–7: Π’Π½ΠΈΠΌΠ°Π²Π°ΠΉΡ‚Π΅ Π·Π° Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈΡ‚Π΅ ΠΈ провСрявайтС, Ρ‡Π΅ всички Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ систСмни ΠΏΠΎΠ²ΠΈΡ†ΠΈ са Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ Π² бял списък.

Π’Π°Π·ΠΈ част ΠΎΡ‚ Ρ†ΠΈΠΊΡŠΠ»Π° статии Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° seccomp Π² Kubernetes Π² Π΄ΡƒΡ…Π° Π½Π° SecDevOps ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π²Π°. Π’ слСдващитС части Ρ‰Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° Ρ‚ΠΎΠ²Π°, Π·Π°Ρ‰ΠΎ Π΅ Π²Π°ΠΆΠ½ΠΎ ΠΈ ΠΊΠ°ΠΊ Π΄Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ процСса.

P.S. ΠΎΡ‚ ΠΏΡ€Π΅Π²ΠΎΠ΄Π°Ρ‡Π°

ΠŸΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π² нашия Π±Π»ΠΎΠ³:

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

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