{"id":29880,"date":"2019-10-31T21:32:27","date_gmt":"2019-10-31T18:32:27","guid":{"rendered":"https:\/\/prohoster.info\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux\/"},"modified":"2019-10-31T21:32:27","modified_gmt":"2019-10-31T18:32:27","slug":"milliony-binarnikov-spustya-kak-ukreplyalsya-linux","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux","title":{"rendered":"Miliony binarek p\u00f3\u017aniej. Jak wzmacnia\u0142 si\u0119 Linux","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Miliony binarek p\u00f3\u017aniej. Jak wzmacnia\u0142 si\u0119 Linux\" src=\"\/wp-content\/uploads\/2019\/03\/bf51e5698530d4a6a44ff97f542a2a87.png\" style=\"display:block;margin: 0 auto;\" \/><b>TL;DR<\/b>. W tym artykule badamy schematy zabezpiecze\u0144 (hardening schemes), kt\u00f3re dzia\u0142aj\u0105 \u201eprosto z pude\u0142ka\u201d w pi\u0119ciu popularnych dystrybucjach Linuksa. Dla ka\u017cdej z nich przyj\u0119li\u015bmy domy\u015bln\u0105 konfiguracj\u0119 j\u0105dra, zainstalowali\u015bmy wszystkie pakiety i przeanalizowali\u015bmy schematy ochrony w zagnie\u017cd\u017conych plikach binarnych. Rozwa\u017cane s\u0105 dystrybucje OpenSUSE 12.4, Debian 9, CentOS, RHEL 6.10 i 7, oraz Ubuntu 14.04, 12.04 i 18.04 LTS. <\/p>\n<p>Wyniki potwierdzaj\u0105, \u017ce nawet podstawowe schematy, takie jak kanarki na stosie i kod niezale\u017cny od pozycji, nadal nie s\u0105 powszechnie stosowane. Sytuacja jest jeszcze gorsza w przypadku kompilator\u00f3w, je\u015bli chodzi o zabezpieczanie przed podatno\u015bciami, takimi jak ataki na stos (stack clash), kt\u00f3re znalaz\u0142y si\u0119 w centrum uwagi w styczniu po opublikowaniu <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/exploiting-systemd-journald-part-1\/\">informacji o podatno\u015bciach w systemd<\/a><\/noindex>. Ale nie wszystko jest beznadziejne. W znacznej cz\u0119\u015bci binari\u00f3w wdro\u017cono podstawowe metody ochrony, a ich liczba ro\u015bnie z wersji na wersj\u0119. <\/p>\n<p>Kontrola wykaza\u0142a, \u017ce najwi\u0119cej metod zabezpiecze\u0144 wdro\u017cono w Ubuntu 18.04 na poziomie systemu operacyjnego i aplikacji, nast\u0119pnie w Debianie 9. Z drugiej strony, podstawowe schematy ochrony zosta\u0142y r\u00f3wnie\u017c wdro\u017cone w OpenSUSE 12.4, CentOS 7 i RHEL 7, a zabezpieczanie przed atakami na stos stosowane jest szerzej w kontek\u015bcie bardziej zwartej podstawowej puli pakiet\u00f3w.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1>Wprowadzenie<\/h1>\n<p>\nTrudno jest zapewni\u0107 wysok\u0105 jako\u015b\u0107 oprogramowania. Pomimo ogromnej liczby zaawansowanych narz\u0119dzi do statycznej analizy kodu i dynamiki analizy w czasie wykonywania, oraz znacznego post\u0119pu w rozwoju kompilator\u00f3w i j\u0119zyk\u00f3w programowania, wsp\u00f3\u0142czesne oprogramowanie wci\u0105\u017c cierpi na podatno\u015bci, kt\u00f3re s\u0105 stale wykorzystywane przez przest\u0119pc\u00f3w. Sytuacja jest jeszcze gorsza w ekosystemach, kt\u00f3re obejmuj\u0105 przestarza\u0142y kod. W takich przypadkach nie tylko stykamy si\u0119 z nieustannym problemem poszukiwania potencjalnych b\u0142\u0119d\u00f3w do wykorzystania, ale jeste\u015bmy r\u00f3wnie\u017c ograniczeni przez sztywne ramy zgodno\u015bci wstecznej, kt\u00f3re cz\u0119sto wymagaj\u0105 zachowania ograniczonego, a jeszcze gorzej, podatnego lub wadliwego kodu.<\/p>\n<p>Tutaj w gr\u0119 wchodz\u0105 metody ochrony lub wzmocnienia oprogramowania (hardening). Niekt\u00f3rych typ\u00f3w b\u0142\u0119d\u00f3w nie jeste\u015bmy w stanie unikn\u0105\u0107, ale mo\u017cemy utrudni\u0107 \u017cycie przest\u0119pcy i cz\u0119\u015bciowo rozwi\u0105za\u0107 problem, zapobiegaj\u0105c lub uniemo\u017cliwiaj\u0105c <i>eksploatacj\u0119<\/i> tych b\u0142\u0119d\u00f3w. Taka ochrona jest stosowana w nowoczesnych systemach operacyjnych, jednak metody znacznie r\u00f3\u017cni\u0105 si\u0119 pod wzgl\u0119dem z\u0142o\u017cono\u015bci, skuteczno\u015bci i wydajno\u015bci: od kanarek stosowych (stack canaries) i <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Address_space_layout_randomization\">ASLR<\/a><\/noindex> do pe\u0142nych zabezpiecze\u0144 <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Control-flow_integrity\">CFI<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Return-oriented_programming\">ROP<\/a><\/noindex>. W tym artykule om\u00f3wimy, jakie metody ochrony s\u0105 stosowane w najpopularniejszych dystrybucjach Linuxa w konfiguracji domy\u015blnej oraz przyjrzymy si\u0119 w\u0142a\u015bciwo\u015bciom binari\u00f3w dystrybuowanych za po\u015brednictwem system\u00f3w zarz\u0105dzania pakietami ka\u017cdej dystrybucji.<\/p>\n<h3>CVE i bezpiecze\u0144stwo<\/h3>\n<p>\nWszyscy widzieli\u015bmy artyku\u0142y o tytu\u0142ach takich jak \u201eNajbardziej podatne aplikacje roku\u201d lub \u201eNajbardziej podatne systemy operacyjne\u201d. Zwykle zawieraj\u0105 one statystyki og\u00f3lnej liczby zg\u0142osze\u0144 o podatno\u015bci typu <noindex><a rel=\"nofollow\" href=\"https:\/\/cve.mitre.org\/\">CVE (Common Vulnerability and Exposures)<\/a><\/noindex>, uzyskanej z <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/\">Krajowej bazy podatno\u015bci (NVD)<\/a><\/noindex> od <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nist.gov\/\">NIST<\/a><\/noindex> i innych \u017ar\u00f3de\u0142. Nast\u0119pnie te aplikacje lub systemy operacyjne s\u0105 klasyfikowane wed\u0142ug liczby CVE. Niestety, chocia\u017c CVE s\u0105 bardzo pomocne w \u015bledzeniu problem\u00f3w i informowaniu dostawc\u00f3w oraz u\u017cytkownik\u00f3w, niewiele m\u00f3wi\u0105 o rzeczywistym bezpiecze\u0144stwie oprogramowania.<\/p>\n<p>Na przyk\u0142ad, przyjrzyjmy si\u0119 ca\u0142kowitej liczbie CVE w ci\u0105gu ostatnich czterech lat dla j\u0105dra Linux oraz pi\u0119ciu najpopularniejszych dystrybucji serwerowych, a mianowicie Ubuntu, Debian, Red Hat Enterprise Linux i OpenSUSE.<\/p>\n<p><img decoding=\"async\" alt=\"Miliony binarek p\u00f3\u017aniej. Jak wzmacnia\u0142 si\u0119 Linux\" src=\"\/wp-content\/uploads\/2019\/03\/16d74634f010e340aedbce441513e3f8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Rys. 1<\/i><\/p>\n<p>Co m\u00f3wi nam ten wykres? Czy wi\u0119ksza liczba CVE oznacza, \u017ce jedna dystrybucja jest bardziej podatna ni\u017c inna? Odpowiedzi na to nie ma. Na przyk\u0142ad w tym artykule zobaczycie, \u017ce w Debianie zaimplementowano bardziej rygorystyczne mechanizmy zabezpiecze\u0144 w por\u00f3wnaniu do OpenSUSE czy Red Hat Linux, a mimo to Debian ma wi\u0119cej CVE. Jednak nie oznacza to koniecznie os\u0142abienia bezpiecze\u0144stwa: nawet obecno\u015b\u0107 CVE nie m\u00f3wi, czy podatno\u015b\u0107 <i>jest wykorzystywalna<\/i>. Wyniki powagi daj\u0105 wyobra\u017cenie o tym, jak <i>prawdopodobne<\/i> jest wykorzystanie podatno\u015bci, ale ostatecznie wykorzystywalno\u015b\u0107 w du\u017cej mierze zale\u017cy od zabezpiecze\u0144 obecnych w dotkni\u0119tych systemach oraz od zasob\u00f3w i mo\u017cliwo\u015bci przest\u0119pc\u00f3w. Co wi\u0119cej, brak zg\u0142osze\u0144 CVE niewiele m\u00f3wi o innych <i>niezarejestrowanych lub nieznanych<\/i> W zakresie luk. R\u00f3\u017cnice w CVE mog\u0105 by\u0107 wynikiem nie tylko jako\u015bci oprogramowania, ale tak\u017ce innych czynnik\u00f3w, takich jak zasoby przeznaczone na testowanie czy wielko\u015b\u0107 bazy u\u017cytkownik\u00f3w. W naszym przyk\u0142adzie wi\u0119ksza liczba CVE w Debianie mo\u017ce po prostu wskazywa\u0107 na to, \u017ce Debian dostarcza wi\u0119cej pakiet\u00f3w oprogramowania. <\/p>\n<p>Oczywi\u015bcie system CVE daje przydatne informacje, kt\u00f3re pozwalaj\u0105 na tworzenie odpowiednich zabezpiecze\u0144. Im lepiej rozumiemy przyczyny awarii programu, tym \u0142atwiej okre\u015bli\u0107 mo\u017cliwe sposoby wykorzystania i opracowa\u0107 odpowiednie mechanizmy <i>wykrywania i reagowania<\/i>. Na rys. 2 pokazane s\u0105 kategorie luk dla wszystkich dystrybucji w ci\u0105gu ostatnich czterech lat (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.cvedetails.com\/top-50-products.php\">ClickHouse-Ninja\/Proton<\/a><\/noindex>). Od razu wida\u0107, \u017ce wi\u0119kszo\u015b\u0107 CVE trafia do nast\u0119puj\u0105cych kategorii: atak typu denial of service (DoS), wykonanie kodu, przepe\u0142nienie, uszkodzenie pami\u0119ci, wyciek informacji i eskalacja przywilej\u00f3w. Chocia\u017c wiele CVE jest uj\u0119tych kilkakrotnie w r\u00f3\u017cnych kategoriach, w og\u00f3lnym uj\u0119ciu te same problemy utrzymuj\u0105 si\u0119 z roku na rok. W nast\u0119pnej cz\u0119\u015bci artyku\u0142u ocenimy wykorzystanie r\u00f3\u017cnych schemat\u00f3w ochrony w celu zapobie\u017cenia eksploatacji wskazanych luk.<\/p>\n<p><img decoding=\"async\" alt=\"Miliony binarek p\u00f3\u017aniej. Jak wzmacnia\u0142 si\u0119 Linux\" src=\"\/wp-content\/uploads\/2019\/03\/45948bc64673540cfb3e1774c3247634.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Rys. 2<\/i><\/p>\n<h3>Zadania<\/h3>\n<p>\nW tym artykule zamierzamy odpowiedzie\u0107 na nast\u0119puj\u0105ce pytania:<\/p>\n<ul>\n<li>Jakie jest bezpiecze\u0144stwo r\u00f3\u017cnych dystrybucji Linuxa? Jakie mechanizmy ochrony istniej\u0105 w j\u0105drze i aplikacjach przestrzeni u\u017cytkownika?\n<\/li>\n<li>Jak w czasie zmienia\u0142o si\u0119 przyj\u0119cie mechanizm\u00f3w ochrony dla r\u00f3\u017cnych dystrybucji?\n<\/li>\n<li>Jakie s\u0105 \u015brednie zale\u017cno\u015bci pakiet\u00f3w i bibliotek dla ka\u017cdej dystrybucji?\n<\/li>\n<li>Jakie zabezpieczenia wprowadzono dla ka\u017cdego binarnego pliku?<\/li>\n<\/ul>\n<p><\/p>\n<h3>Wyb\u00f3r dystrybucji<\/h3>\n<p>\nOkazuje si\u0119, \u017ce trudno znale\u017a\u0107 dok\u0142adn\u0105 statystyk\u0119 dotycz\u0105c\u0105 instalacji dystrybucji, poniewa\u017c w wi\u0119kszo\u015bci przypadk\u00f3w liczba pobra\u0144 nie wskazuje na liczb\u0119 rzeczywistych instalacji. Niemniej jednak, systemy Unix stanowi\u0105 wi\u0119kszo\u015b\u0107 serwer\u00f3w (na serwerach WWW 69,2%, wed\u0142ug <noindex><a rel=\"nofollow\" href=\"https:\/\/w3techs.com\/technologies\/overview\/operating_system\/all\">statystyk<\/a><\/noindex> W3techs i innych \u017ar\u00f3de\u0142), a ich udzia\u0142 stale ro\u015bnie. W zwi\u0105zku z tym w naszym badaniu skoncentrowali\u015bmy si\u0119 na dystrybucjach dost\u0119pnych z pude\u0142ka na platformie <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/\">Google Cloud<\/a><\/noindex>. W szczeg\u00f3lno\u015bci wybrali\u015bmy nast\u0119puj\u0105ce systemy operacyjne:<\/p>\n<p>Dystrybucja\/wersja<br \/>\nJ\u0105dro<br \/>\nBuild<\/p>\n<p>OpenSUSE 12.4<br \/>\n4.12.14-95.3-default<br \/>\n#1 SMP Wed Dec 5 06:00:48 UTC 2018 (63a8d29)<\/p>\n<p>Debian 9 (stretch)<br \/>\n4.9.0-8-amd64<br \/>\n#1 SMP Debian 4.9.130-2 (2018-10-27)<\/p>\n<p>CentOS 6.10<br \/>\n2.6.32-754.10.1.el6.x86_64<br \/>\n#1 SMP Tue Jan 15 17:07:28 UTC 2019<\/p>\n<p>CentOS 7<br \/>\n3.10.0-957.5.1.el7.x86_64<br \/>\n#1 SMP Fri Feb 1 14:54:57 UTC 2019<\/p>\n<p>Red Hat Enterprise Linux Server 6.10 (Santiago)<br \/>\n2.6.32-754.9.1.el6.x86_64<br \/>\n#1 SMP Wed Nov 21 15:08:21 EST 2018<\/p>\n<p>Red Hat Enterprise Linux Server 7.6 (Maipo)<br \/>\n3.10.0-957.1.3.el7.x86_64<br \/>\n#1 SMP Thu Nov 15 17:36:42 UTC 2018<\/p>\n<p>Ubuntu 14.04 (Trusty Tahr)<br \/>\n4.4.0\u2013140-generic<br \/>\n <br \/>\n#166~14.04.1-Ubuntu SMP Sat Nov 17 01:52:43 UTC 20\u2026<\/p>\n<p>Ubuntu 16.04 (Xenial Xerus)<br \/>\n4.15.0\u20131026-gcp<br \/>\n#27~16.04.1-Ubuntu SMP Fri Dec 7 09:59:47 UTC 2018<\/p>\n<p>Ubuntu 18.04 (Bionic Beaver)<br \/>\n4.15.0\u20131026-gcp<br \/>\n#27-Ubuntu SMP Thu Dec 6 18:27:01 UTC 2018<\/p>\n<p><i>Tabela 1<\/i> <\/p>\n<h1>Analiza<\/h1>\n<p>\nPrzeanalizujemy domy\u015bln\u0105 konfiguracj\u0119 j\u0105dra oraz w\u0142a\u015bciwo\u015bci pakiet\u00f3w dost\u0119pnych przez mened\u017cera pakiet\u00f3w w ka\u017cdym dystrybucji z pude\u0142ka. W ten spos\u00f3b bierzemy pod uwag\u0119 tylko pakiety z domy\u015blnych lustrzanych odbi\u0107 ka\u017cdej dystrybucji, ignoruj\u0105c pakiety z niestabilnych repozytori\u00f3w (np. lustra 'testing' w Debianie) oraz pakiety zewn\u0119trzne (np. pakiety Nvidia z domy\u015blnych lustrzanek). Ponadto nie uwzgl\u0119dniamy niestandardowych kompilacji j\u0105dra ani konfiguracji z podwy\u017cszonym poziomem zabezpiecze\u0144.<\/p>\n<h3>Analiza konfiguracji j\u0105dra<\/h3>\n<p>\nZastosowali\u015bmy skrypt analizy oparty na <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/a13xp0p0v\/kconfig-hardened-check\">wolnym narz\u0119dziu kconfig<\/a><\/noindex>. Rozwa\u017camy domy\u015blne parametry zabezpiecze\u0144 w wymienionych dystrybucjach i por\u00f3wnujemy je z list\u0105 od <noindex><a rel=\"nofollow\" href=\"http:\/\/kernsec.org\/wiki\/index.php\/Kernel_Self_Protection_Project\/Recommended_Settings\">Projektu samoutrzymania j\u0105dra<\/a><\/noindex> (KSPP). Dla ka\u017cdego parametru konfiguracji tabela 2 opisuje po\u017c\u0105dan\u0105 konfiguracj\u0119: zaznaczenie dotyczy dystrybucji, kt\u00f3re spe\u0142niaj\u0105 zalecenia KSSP (wyja\u015bnienie termin\u00f3w przedstawione jest <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/kernel-configuration-glossary\/\">tutaj<\/a><\/noindex>; w przysz\u0142ych artyku\u0142ach opiszemy, jak powsta\u0142y wiele z tych metod zabezpiecze\u0144 i jak zhakowa\u0107 system w ich braku).<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/dx\/oh\/o0\/dxoho0z-lifjcybajszqb-aiirq.png\"><img decoding=\"async\" alt=\"Miliony binarek p\u00f3\u017aniej. Jak wzmacnia\u0142 si\u0119 Linux\" src=\"\/wp-content\/uploads\/2019\/03\/b1a42826f4afc78a2b25d158100b2ba4.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><img decoding=\"async\" alt=\"Miliony binarek p\u00f3\u017aniej. Jak wzmacnia\u0142 si\u0119 Linux\" src=\"\/wp-content\/uploads\/2019\/03\/2177579e65e4fe6bb320903756a04b9b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOg\u00f3lnie rzecz bior\u0105c, nowsze j\u0105dra maj\u0105 bardziej rygorystyczne ustawienia z pude\u0142ka. Na przyk\u0142ad w CentOS 6.10 i RHEL 6.10 na j\u0105drze 2.6.32 brakuje wi\u0119kszo\u015bci krytycznych funkcji wprowadzanych w nowszych j\u0105drach, takich jak <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Supervisor_Mode_Access_Prevention\">SMAP<\/a><\/noindex>, rygorystyczne uprawnienia RWX, randomizacja adres\u00f3w czy ochrona copy2usr. Nale\u017cy zauwa\u017cy\u0107, \u017ce wiele opcji konfiguracyjnych z tabeli jest niedost\u0119pnych w starszych wersjach j\u0105dra i nie ma zastosowania w rzeczywisto\u015bci - w tabeli mimo to zaznaczone jest to jako brak odpowiednich zabezpiecze\u0144. Podobnie, je\u015bli dany parametr konfiguracyjny jest niedost\u0119pny w danej wersji, a dla bezpiecze\u0144stwa ten parametr nale\u017cy wy\u0142\u0105czy\u0107, to uznaje si\u0119 to za rozs\u0105dne ustawienie. <\/p>\n<p>Kolejny aspekt interpretacji wynik\u00f3w: niekt\u00f3re konfiguracje j\u0105dra, kt\u00f3re zwi\u0119kszaj\u0105 powierzchni\u0119 ataku, mog\u0105 jednocze\u015bnie by\u0107 u\u017cywane dla zapewnienia bezpiecze\u0144stwa. Przyk\u0142ady to uprobes i kprobes, modu\u0142y j\u0105dra oraz BPF\/eBPF. Nasza rekomendacja to wykorzystanie powy\u017cszych mechanizm\u00f3w w celu zapewnienia rzeczywej ochrony, poniewa\u017c ich u\u017cycie nie jest proste, a ich eksploatacja zak\u0142ada, \u017ce z\u0142o\u015bliwi podmioty ju\u017c osiedli\u0142y si\u0119 w systemie. Je\u015bli jednak te opcje s\u0105 w\u0142\u0105czone, administrator systemu powinien aktywnie monitorowa\u0107 nadu\u017cycia.<\/p>\n<p>Analizuj\u0105c dalej zapisy z tabeli 2, widzimy, \u017ce nowoczesne j\u0105dra oferuj\u0105 kilka opcji ochrony przed eksploatacj\u0105 takich luk, jak wycieki informacji oraz nadpisanie stosu\/sterty. Jednak zauwa\u017camy, \u017ce nawet najnowsze popularne dystrybucje jeszcze nie wdro\u017cy\u0142y bardziej zaawansowanej ochrony (na przyk\u0142ad z \u0142atkami <noindex><a rel=\"nofollow\" href=\"https:\/\/grsecurity.net\/\">grsecurity<\/a><\/noindex>), ani nowoczesnej ochrony przed atakami ponownego u\u017cycia kodu (na przyk\u0142ad, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.cs.columbia.edu\/~theofilos\/files\/slides\/krx.pdf\">kombinacja randomizacji z schematami typu R^X dla kodu<\/a><\/noindex>). Co gorsza, nawet te bardziej zaawansowane \u015brodki ochrony nie chroni\u0105 przed pe\u0142nym zakresem atak\u00f3w. Dlatego niezwykle wa\u017cne jest, aby administratorzy systemu uzupe\u0142niali rozs\u0105dne konfiguracje rozwi\u0105zaniami, kt\u00f3re oferuj\u0105 wykrywanie i zapobieganie eksploatom w czasie rzeczywistym.<\/p>\n<h3>Analiza aplikacji<\/h3>\n<p>\nNic dziwnego, \u017ce r\u00f3\u017cne dystrybucje maj\u0105 r\u00f3\u017cne specyfikacje pakiet\u00f3w, opcje kompilacji, zale\u017cno\u015bci bibliotek itp. R\u00f3\u017cnice istniej\u0105 nawet dla <noindex><a rel=\"nofollow\" href=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/1\/1b\/Linux_Distribution_Timeline.svg\">pokrewnych<\/a><\/noindex> dystrybucji i pakiet\u00f3w z niewielk\u0105 ilo\u015bci\u0105 zale\u017cno\u015bci (na przyk\u0142ad coreutils w Ubuntu lub Debianie). Aby oceni\u0107 r\u00f3\u017cnice, pobrali\u015bmy wszystkie dost\u0119pne pakiety, wyodr\u0119bnili\u015bmy ich zawarto\u015b\u0107 i przeanalizowali\u015bmy pliki binarne oraz zale\u017cno\u015bci. Dla ka\u017cdego pakietu \u015bledzili\u015bmy inne pakiety, od kt\u00f3rych zale\u017cy, a dla ka\u017cdego binarnego \u015bledzili\u015bmy jego zale\u017cno\u015bci. W tej cz\u0119\u015bci kr\u00f3tko podsumujemy wnioski.<\/p>\n<h4>Dystrybucje<\/h4>\n<p>\n\u0141\u0105cznie za\u0142adowali\u015bmy 361 556 pakiet\u00f3w dla wszystkich dystrybucji, pobieraj\u0105c tylko pakiety z domy\u015blnych luster. Zignorowali\u015bmy pakiety bez plik\u00f3w wykonywalnych ELF, takie jak kody \u017ar\u00f3d\u0142owe, czcionki itd. Po filtracji pozosta\u0142o 129 569 pakiet\u00f3w, zawieraj\u0105cych \u0142\u0105cznie 584 457 plik\u00f3w binarnych. Rozk\u0142ad pakiet\u00f3w i plik\u00f3w wed\u0142ug dystrybucji przedstawiono na rys. 3.<\/p>\n<p><img decoding=\"async\" alt=\"Miliony binarek p\u00f3\u017aniej. Jak wzmacnia\u0142 si\u0119 Linux\" src=\"\/wp-content\/uploads\/2019\/03\/a24975fba7413ac8069c07412e5476cc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Rys. 3<\/i><\/p>\n<p>Mo\u017cna zauwa\u017cy\u0107, \u017ce im nowsza dystrybucja, tym wi\u0119cej zawiera pakiet\u00f3w i plik\u00f3w binarnych, co jest logiczne. Pakiety Ubuntu i Debian zawieraj\u0105 znacznie wi\u0119cej plik\u00f3w binarnych (zar\u00f3wno wykonywalnych, jak i dynamicznych modu\u0142\u00f3w i bibliotek) ni\u017c CentOS, SUSE i RHEL, co potencjalnie wp\u0142ywa na powierzchni\u0119 ataku Ubuntu i Debiana (warto zauwa\u017cy\u0107, \u017ce liczby odzwierciedlaj\u0105 wszystkie binarki wszystkich wersji pakietu, co oznacza, \u017ce niekt\u00f3re pliki s\u0105 analizowane wielokrotnie). Jest to szczeg\u00f3lnie wa\u017cne, bior\u0105c pod uwag\u0119 zale\u017cno\u015bci mi\u0119dzy pakietami. W ten spos\u00f3b, luka w binarze jednego pakietu mo\u017ce wp\u0142yn\u0105\u0107 na wiele cz\u0119\u015bci ekosystemu, jak podatna biblioteka mo\u017ce wp\u0142yn\u0105\u0107 na wszystkie pliki binarne, kt\u00f3re j\u0105 importuj\u0105. Jako punkt odniesienia przyjrzyjmy si\u0119 rozk\u0142adowi liczby zale\u017cno\u015bci w pakietach w r\u00f3\u017cnych systemach operacyjnych:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ii\/e3\/e5\/iie3e5-ei26ezg5yvcyvtzqzl80.png\"><img decoding=\"async\" alt=\"Miliony binarek p\u00f3\u017aniej. Jak wzmacnia\u0142 si\u0119 Linux\" src=\"\/wp-content\/uploads\/2019\/03\/c6570e643d92103c87659e61f5d395a6.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<i>Rys. 4<\/i> <\/p>\n<p>W prawie wszystkich dystrybucjach 60% pakiet\u00f3w ma co najmniej 10 zale\u017cno\u015bci. Ponadto, niekt\u00f3re pakiety maj\u0105 znacznie wi\u0119ksz\u0105 liczb\u0119 zale\u017cno\u015bci (ponad 100). To samo dotyczy odwrotnych zale\u017cno\u015bci pakiet\u00f3w: jak mo\u017cna si\u0119 spodziewa\u0107, kilka pakiet\u00f3w jest u\u017cywanych przez wiele innych pakiet\u00f3w w dystrybucji, dlatego luki w tych nielicznych wybranych maj\u0105 wysokie ryzyko. Jako przyk\u0142ad w poni\u017cszej tabeli wymieniono 20 pakiet\u00f3w z najwi\u0119ksz\u0105 liczb\u0105 odwrotnych zale\u017cno\u015bci w SLES, CentOS 7, Debian 9 i Ubuntu 18.04 (w ka\u017cdej kom\u00f3rce podano oznaczenie pakietu oraz liczb\u0119 odwrotnych zale\u017cno\u015bci).<\/p>\n<p><img decoding=\"async\" alt=\"Miliony binarek p\u00f3\u017aniej. Jak wzmacnia\u0142 si\u0119 Linux\" src=\"\/wp-content\/uploads\/2019\/03\/0aa544db8be1af7bffe21b6314537e18.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tabela 3<\/i><\/p>\n<p>Ciekawostka. Chocia\u017c wszystkie analizowane systemy operacyjne s\u0105 zbudowane dla architektury x86_64, a u wi\u0119kszo\u015bci pakiet\u00f3w architektura okre\u015blona jest jako x86_64 i x86, pakiety cz\u0119sto zawieraj\u0105 pliki binarne dla innych architektur, jak pokazano na rys. 5.<\/p>\n<p><img decoding=\"async\" alt=\"Miliony binarek p\u00f3\u017aniej. Jak wzmacnia\u0142 si\u0119 Linux\" src=\"\/wp-content\/uploads\/2019\/03\/b40f607e0c2f169bd1df21bd9994de8c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Rys. 5<\/i><\/p>\n<p>W nast\u0119pnej sekcji zag\u0142\u0119bimy si\u0119 w charakterystyki analizowanych binarek.<\/p>\n<h4>Statystyka ochrony plik\u00f3w binarnych<\/h4>\n<p>\nJako absolutne minimum nale\u017cy zapozna\u0107 si\u0119 z podstawowym zestawem opcji zabezpiecze\u0144 dla dost\u0119pnych plik\u00f3w binarnych. Kilka dystrybucji Linuxa dostarczane jest ze skryptami, kt\u00f3re wykonuj\u0105 takie kontrole. Na przyk\u0142ad w Debianie\/Ubuntu znajduje si\u0119 taki skrypt. Oto przyk\u0142ad jego dzia\u0142ania:<\/p>\n<pre><code class=\"bash\">$ hardening-check $(which docker)\n\/usr\/bin\/docker:\n Wykonywalny niezale\u017cny od pozycji: tak\n Stos chroniony: tak\n Funkcje Fortify Source: nie, znaleziono tylko funkcje niezabezpieczone!\n Przenoszenia tylko do odczytu: tak\n Natychmiastowe wi\u0105zanie: tak<\/code><\/pre>\n<p>\nSkrypt sprawdza pi\u0119\u0107 <noindex><a rel=\"nofollow\" href=\"http:\/\/manpages.ubuntu.com\/manpages\/trusty\/man1\/hardening-check.1.html\">funkcji zabezpiecze\u0144<\/a><\/noindex>:<\/p>\n<ul>\n<li>Wykonywalny niezale\u017cny od pozycji (PIE): wskazuje, czy mo\u017cna przenie\u015b\u0107 w pami\u0119ci sekcj\u0119 tekstow\u0105 programu, aby osi\u0105gn\u0105\u0107 losowo\u015b\u0107, je\u015bli w j\u0105drze jest w\u0142\u0105czony ASLR.\n<\/li>\n<li>Chroniony stos: czy w\u0142\u0105czono kanarki stosu w celu ochrony przed atakami na kolizj\u0119 stosu.\n<\/li>\n<li>Fortify Source: czy niebezpieczne funkcje (np. strcpy) s\u0105 zast\u0119powane ich bezpiecznymi odpowiednikami, a wywo\u0142ania kontrolowane w czasie wykonywania \u2013 ich niekontrolowanymi odpowiednikami (np. memcpy zamiast __memcpy_chk).\n<\/li>\n<li>Przeniesienia tylko do odczytu (RELRO): czy wpisy tabeli przeniesie\u0144 s\u0105 oznaczone jako \u00abtylko do odczytu\u00bb, je\u015bli zosta\u0142y zastosowane przed rozpocz\u0119ciem wykonywania.\n<\/li>\n<li>Natychmiastowe wi\u0105zanie: czy linker czasu wykonania za\u0142atwia wszystkie przeniesienia przed rozpocz\u0119ciem wykonywania programu (to jest r\u00f3wnoznaczne z pe\u0142nym RELRO).<\/li>\n<\/ul>\n<p>\nCzy powy\u017csze mechanizmy s\u0105 wystarczaj\u0105ce? Niestety, nie. S\u0105 znane sposoby omijania wszystkich wymienionych zabezpiecze\u0144, ale im bardziej rygorystyczna ochrona, tym wy\u017cszy pr\u00f3g dla atakuj\u0105cego. Na przyk\u0142ad, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.usenix.org\/system\/files\/conference\/usenixsecurity15\/sec15-paper-di-frederico.pdf\">metody obej\u015bcia RELRO<\/a><\/noindex> s\u0105 trudniejsze do zastosowania, je\u015bli dzia\u0142a PIE i natychmiastowe wi\u0105zanie. Podobnie pe\u0142ny ASLR wymaga dodatkowej pracy w celu stworzenia dzia\u0142aj\u0105cego exploit. Jednak wyrafinowani przest\u0119pcy s\u0105 ju\u017c gotowi na takie zabezpieczenia: ich brak zasadniczo przyspieszy w\u0142amanie. Dlatego niezwykle wa\u017cne jest, aby te \u015brodki by\u0142y traktowane jako niezb\u0119dne <i>minimum<\/i>. <\/p>\n<p>Chcieli\u015bmy zbada\u0107, jak wiele plik\u00f3w binarnych w badanych dystrybucjach jest zabezpieczonych tymi, a tak\u017ce trzema innymi metodami:<\/p>\n<ul>\n<li>Bit niewykonywalny (<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Executable_space_protection\">NX<\/a><\/noindex>) zapobiega wykonywaniu w ka\u017cdym obszarze, kt\u00f3ry nie powinien by\u0107 wykonywalny, na przyk\u0142ad w stosie pami\u0119ci itp.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Rpath\">RPATH\/RUNPATH<\/a><\/noindex> oznacza \u015bcie\u017ck\u0119 wykonywania, u\u017cywan\u0105 przez dynamicznego \u0142adowacza do wyszukiwania odpowiednich bibliotek. Pierwszy jest <i>obowi\u0105zkowy<\/i> dla ka\u017cdego nowoczesnego systemu: jego brak pozwala napastnikom na dowolne zapisywanie \u0142adunku w pami\u0119ci i wykonywanie go tak, jak jest. Po drugie, niew\u0142a\u015bciwe konfiguracje \u015bcie\u017cek wykonywania sprzyjaj\u0105 wprowadzaniu niepewnego kodu, co mo\u017ce prowadzi\u0107 do szeregu problem\u00f3w (na przyk\u0142ad, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nth-dimension.org.uk\/pub\/BTL.pdf\">eskalacja uprawnie\u0144<\/a><\/noindex>, a tak\u017ce <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.debian.org\/RpathIssue\">inne problemy<\/a><\/noindex>).<\/li>\n<li>Ochrona przed kolizj\u0105 stos\u00f3w zapewnia ochron\u0119 przed atakami, kt\u00f3re powoduj\u0105, \u017ce stos nak\u0142ada si\u0119 na inne obszary pami\u0119ci (na przyk\u0142ad, na stert\u0119). Bior\u0105c pod uwag\u0119 niedawne exploity wykorzystuj\u0105ce <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/exploiting-systemd-journald-part-1\/\">uginywania z kolizj\u0105 sterty w systemd<\/a><\/noindex>, uznali\u015bmy za stosowne w\u0142\u0105czy\u0107 ten mechanizm do naszego zestawu danych.<\/li>\n<\/ul>\n<p>\nTak wi\u0119c, bez dalszych ceremonii, przejd\u017amy do liczb. Tabele 4 i 5 zawieraj\u0105 skr\u00f3t analizy plik\u00f3w wykonywalnych i bibliotek r\u00f3\u017cnych dystrybucji, odpowiednio.<\/p>\n<ul>\n<li>Jak mo\u017cna zauwa\u017cy\u0107, ochrona NX jest wdra\u017cana wsz\u0119dzie, z nielicznymi wyj\u0105tkami. W szczeg\u00f3lno\u015bci nale\u017cy zauwa\u017cy\u0107 nieco ni\u017csze jej wykorzystanie w dystrybucjach Ubuntu i Debian w por\u00f3wnaniu do CentOS, RHEL i OpenSUSE.\n<\/li>\n<li>Wielu dystrybucji brak jest canary stacks, szczeg\u00f3lnie w tych z przestarza\u0142ymi j\u0105drami. Znacz\u0105cy post\u0119p odnotowano w ostatnich dystrybucjach CentOS, RHEL, Debian i Ubuntu.\n<\/li>\n<li>Z wyj\u0105tkiem Debiana i Ubuntu 18.04, w wi\u0119kszo\u015bci dystrybucji s\u0142abo obs\u0142ugiwane jest PIE.\n<\/li>\n<li>Ochrona przed kolizjami stos\u00f3w jest s\u0142abo wdra\u017cana w OpenSUSE, CentOS 7 i RHEL 7 oraz praktycznie nie wyst\u0119puje w innych.\n<\/li>\n<li>Wszystkie dystrybucje z nowoczesnymi j\u0105drami maj\u0105 pewne wsparcie dla RELRO, przy czym liderem jest Ubuntu 18.04, a na drugim miejscu jest Debian.<\/li>\n<\/ul>\n<p>\nJak ju\u017c wspomniano, metryki w tej tabeli s\u0105 \u015brednie dla wszystkich wersji pliku binarnego. Je\u015bli spojrzymy tylko na najnowsze wersje plik\u00f3w, to liczby b\u0119d\u0105 inne (na przyk\u0142ad, zob. <noindex><a rel=\"nofollow\" href=\"http:\/\/outflux.net\/debian\/hardening\/\">post\u0119p Debiana w wdro\u017ceniu PIE<\/a><\/noindex>). Co wi\u0119cej, wi\u0119kszo\u015b\u0107 dystrybucji podczas liczenia statystyk zazwyczaj sprawdza ochron\u0119 tylko kilku funkcji w kodzie binarnym, a w naszej analizie podany jest rzeczywisty procent wzmocnionych funkcji. Dlatego je\u015bli w binarce chronione jest 5 z 50 funkcji, przyznamy mu ocen\u0119 0,1, co odpowiada 10% wzmocnionych funkcji.<\/p>\n<p><img decoding=\"async\" alt=\"Miliony binarek p\u00f3\u017aniej. Jak wzmacnia\u0142 si\u0119 Linux\" src=\"\/wp-content\/uploads\/2019\/03\/82e881c5ba2a3911f3a0ffae1a3475f4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tabela 4. Cecha ochrony dla plik\u00f3w wykonywalnych przedstawionych na rys. 3 (wdro\u017cenie odpowiednich funkcji w procentach od ca\u0142kowitej liczby plik\u00f3w wykonywalnych)<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Miliony binarek p\u00f3\u017aniej. Jak wzmacnia\u0142 si\u0119 Linux\" src=\"\/wp-content\/uploads\/2019\/03\/57c8e67be7a57341105262c6e956594c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tabela 5. Cechy zabezpiecze\u0144 dla bibliotek pokazanych na rys. 3 (realizacja odpowiednich funkcji w procentach od og\u00f3lnej liczby bibliotek)<\/i><\/p>\n<p>Czy jest post\u0119p? Zdecydowanie tak: wida\u0107 to w statystykach dotycz\u0105cych poszczeg\u00f3lnych dystrybucji (na przyk\u0142ad, <noindex><a rel=\"nofollow\" href=\"http:\/\/outflux.net\/debian\/hardening\/\">Debian<\/a><\/noindex>), a tak\u017ce w przedstawionych wy\u017cej tabelach. Jako przyk\u0142ad na rys. 6 pokazano wdra\u017canie mechanizm\u00f3w zabezpiecze\u0144 w trzech kolejnych dystrybucjach Ubuntu LTS 5 (pomin\u0119li\u015bmy statystyki zabezpiecze\u0144 przed kolizj\u0105 stosu). Zauwa\u017camy, \u017ce z wersji na wersj\u0119 coraz wi\u0119cej plik\u00f3w obs\u0142uguje kanarki stosu, a tak\u017ce sukcesywnie coraz wi\u0119cej plik\u00f3w binarnych dostarczanych jest z pe\u0142n\u0105 ochron\u0105 RELRO.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/d1\/ni\/or\/d1niordj1hmiklmg2-w5rsk6dla.png\"><img decoding=\"async\" alt=\"Miliony binarek p\u00f3\u017aniej. Jak wzmacnia\u0142 si\u0119 Linux\" src=\"\/wp-content\/uploads\/2019\/03\/9130099db6d59106da8f0a0fc760410e.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<i>Rys. 6<\/i><\/p>\n<p>Niestety, szereg plik\u00f3w wykonywalnych w r\u00f3\u017cnych dystrybucjach nadal nie posiada \u017cadnej z wymienionych powy\u017cej ochron. Na przyk\u0142ad, patrz\u0105c na Ubuntu 18.04, mo\u017cna zauwa\u017cy\u0107 binark\u0119 ngetty (zamiennik getty), a tak\u017ce pow\u0142oki mksh i lksh, interpreter picolisp, pakiety nvidia-cuda-toolkit (popularny pakiet dla aplikacji z akceleracj\u0105 GPU, takich jak ramy uczenia maszynowego) oraz klibc-utils. Podobnie, binarka mandos-client (narz\u0119dzie administracyjne, kt\u00f3re automatycznie restartuje maszyny z zaszyfrowanymi systemami plik\u00f3w), a tak\u017ce rsh-redone-client (ponowna implementacja rsh i rlogin) s\u0105 dostarczane bez ochrony NX, mimo \u017ce maj\u0105 uprawnienia SUID :(. Ponadto w kilku binarkach SUID nie ma podstawowej ochrony, takiej jak kanarki stosu (na przyk\u0142ad, plik binarny Xorg.wrap z pakietu Xorg).<\/p>\n<h1>Podsumowanie i uwagi ko\u0144cowe<\/h1>\n<p>\nW tym artykule przedstawili\u015bmy kilka w\u0142a\u015bciwo\u015bci bezpiecze\u0144stwa nowoczesnych dystrybucji Linuxa. Analiza wykaza\u0142a, \u017ce w najnowszej wersji Ubuntu LTS (18.04) osi\u0105gni\u0119to na og\u00f3\u0142 najsilniejsze zabezpieczenia na poziomie systemu operacyjnego i aplikacji w\u015br\u00f3d dystrybucji z relatywnie nowymi j\u0105drami, takimi jak Ubuntu 14.04, 12.04 i Debian 9. Jednak omawiane dystrybucje CentOS, RHEL i OpenSUSE w naszym zbiorze danych domy\u015blnie dostarczaj\u0105 bardziej rozbudowany zestaw pakiet\u00f3w, a w najnowszych wersjach (CentOS i RHEL) maj\u0105 wy\u017cszy wska\u017anik realizacji ochrony przed przepe\u0142nieniem stosu w por\u00f3wnaniu do rywali opartych na Debianie (Debian i Ubuntu). Por\u00f3wnuj\u0105c wersje CentOS i RedHat, zauwa\u017camy znaczne poprawy w wdra\u017caniu kanarek stosowych i RELRO z wersji 6 do 7, ale przeci\u0119tnie w CentOS jest wdro\u017conych wi\u0119cej funkcji ni\u017c w RHEL. Og\u00f3lnie rzecz bior\u0105c, wszystkie dystrybucje powinny zwr\u00f3ci\u0107 szczeg\u00f3ln\u0105 uwag\u0119 na ochron\u0119 PIE, kt\u00f3ra, poza Debianem 9 i Ubuntu 18.04, wyst\u0119puje w mniej ni\u017c 10% plik\u00f3w binarnych z naszego zbioru danych. <\/p>\n<p>Na koniec warto zauwa\u017cy\u0107: chocia\u017c badanie przeprowadzili\u015bmy r\u0119cznie, istnieje wiele narz\u0119dzi bezpiecze\u0144stwa (np. <noindex><a rel=\"nofollow\" href=\"https:\/\/cisofy.com\/lynis\/\">Lynis<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nongnu.org\/tiger\/\">Tiger<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/hubblestack\/hubble\">Hubble<\/a><\/noindex>), kt\u00f3re wykonuj\u0105 analiz\u0119 i pomagaj\u0105 unika\u0107 niebezpiecznych konfiguracji. Niestety, nawet silne zabezpieczenia w rozs\u0105dnych konfiguracjach nie gwarantuj\u0105 braku exploit\u00f3w. Dlatego jeste\u015bmy g\u0142\u0119boko przekonani, \u017ce kluczowe jest zapewnienie <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/\">niezawodnego monitorowania i zapobiegania atakom w czasie rzeczywistym<\/a><\/noindex>, koncentruj\u0105c si\u0119 na wzorcach eksploatacji i zapobiegaj\u0105c im.<\/p>\n<p>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/444418\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>TL;DR. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c \u0437\u0430\u0449\u0438\u0442\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b (hardening schemes), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 \u043f\u044f\u0442\u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445 Linux. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u044b \u0432\u0437\u044f\u043b\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u044f\u0434\u0440\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0438 \u0432\u0441\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u0438 \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0441\u0445\u0435\u043c\u044b \u0437\u0430\u0449\u0438\u0442\u044b \u0432\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445. \u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u044b OpenSUSE 12.4, Debian 9, CentOS, RHEL 6.10 \u0438 7, \u0430 \u0442\u0430\u043a\u0436\u0435 Ubuntu 14.04, 12.04 \u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-29880","post","type-post","status-publish","format-standard","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"TL;DR.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u043e\u0432 \u0441\u043f\u0443\u0441\u0442\u044f. \u041a\u0430\u043a \u0443\u043a\u0440\u0435\u043f\u043b\u044f\u043b\u0441\u044f Linux | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"TL;DR.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:32:27+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:32:27+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Miliardy plik\u00f3w binarnych p\u00f3\u017aniej. Jak wzmacniano Linux | ProHoster","description":"TL;DR.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u043e\u0432 \u0441\u043f\u0443\u0441\u0442\u044f. \u041a\u0430\u043a \u0443\u043a\u0440\u0435\u043f\u043b\u044f\u043b\u0441\u044f Linux | ProHoster","og:description":"TL;DR.","og:url":"https:\/\/prohoster.info\/pl\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:32:27+00:00","article:modified_time":"2019-10-31T18:32:27+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"29880","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-20 22:50:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:46:28","updated":"2026-01-20 22:50:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/29880","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=29880"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/29880\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=29880"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=29880"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=29880"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}