{"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\/it\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux","title":{"rendered":"Milioni di binari dopo. Come si \u00e8 rafforzato Linux","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Milioni di binari dopo. Come si \u00e8 rafforzato Linux\" src=\"\/wp-content\/uploads\/2019\/03\/bf51e5698530d4a6a44ff97f542a2a87.png\" style=\"display:block;margin: 0 auto;\" \/><b>TL;DR<\/b>. In questo articolo esploriamo gli schemi di sicurezza (hardening schemes) che funzionano out-of-the-box in cinque distribuzioni Linux popolari. Per ciascuna di esse abbiamo preso la configurazione predefinita del kernel, caricato tutti i pacchetti e analizzato gli schemi di protezione nei file binari annidati. Le distribuzioni considerate sono OpenSUSE 12.4, Debian 9, CentOS, RHEL 6.10 e 7, oltre a Ubuntu 14.04, 12.04 e 18.04 LTS. <\/p>\n<p>I risultati confermano che anche gli schemi di base, come il canarino nello stack e il codice indipendente dalla posizione, non sono ancora utilizzati da tutti. La situazione \u00e8 ancora peggiore per i compilatori quando si tratta di protezione dalle vulnerabilit\u00e0 come il conflitto dello stack (stack clash), che sono tornate alla ribalta a gennaio dopo la pubblicazione <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/exploiting-systemd-journald-part-1\/\">di informazioni sulle vulnerabilit\u00e0 in systemd<\/a><\/noindex>. Ma non \u00e8 tutto cos\u00ec disperato. Una parte significativa dei binari implementa metodi di protezione di base, e il loro numero cresce di versione in versione. <\/p>\n<p>La verifica ha mostrato che il numero maggiore di metodi di sicurezza \u00e8 implementato in Ubuntu 18.04 a livello di sistema operativo e applicazioni, seguito da Debian 9. D'altra parte, anche OpenSUSE 12.4, CentOS 7 e RHEL 7 implementano schemi di sicurezza di base, mentre la protezione contro il conflitto dello stack \u00e8 applicata ancora pi\u00f9 ampiamente grazie a un set di pacchetti predefiniti decisamente pi\u00f9 robusto.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1>Introduzione<\/h1>\n<p>\nGarantire un'elevata qualit\u00e0 del software \u00e8 difficile. Nonostante la grande variet\u00e0 di strumenti avanzati per l'analisi statica del codice e l'analisi dinamica in fase di esecuzione, nonch\u00e9 i significativi progressi nel sviluppo di compilatori e linguaggi di programmazione, il software moderno continua a soffrire di vulnerabilit\u00e0 che sono costantemente sfruttate dagli aggressori. La situazione \u00e8 ancora pi\u00f9 critica nelle ecosistemi che includono codice obsoleto. In tali casi, ci troviamo non solo ad affrontare il problema eterno di identificare possibili errori sfruttabili, ma ci troviamo anche vincolati a rigide limitazioni di retrocompatibilit\u00e0 che spesso richiedono di mantenere codice obsoleto, vulnerabile o difettoso.<\/p>\n<p>Qui entrano in gioco i metodi di protezione o rafforzamento dei programmi (hardening). Alcuni tipi di errori non possiamo prevenire, ma possiamo rendere la vita pi\u00f9 difficile agli aggressori e risolvere parzialmente il problema, prevenendolo o ostacolandolo. <i>sfruttamento<\/i> di questi errori. Questa protezione \u00e8 utilizzata in tutti i moderni sistemi operativi, ma i metodi variano notevolmente in complessit\u00e0, efficacia e prestazioni: dai canarini nello stack (stack canaries) e <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Address_space_layout_randomization\">ASLR<\/a><\/noindex> fino alle protezioni complete. <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Control-flow_integrity\">CFI<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Return-oriented_programming\">ROP<\/a><\/noindex>. In questo articolo esamineremo quali metodi di protezione sono applicati nelle distribuzioni Linux pi\u00f9 popolari nella configurazione predefinita, e analizzeremo le caratteristiche dei binari distribuiti attraverso i sistemi di gestione dei pacchetti di ciascuna distribuzione.<\/p>\n<h3>CVE e sicurezza<\/h3>\n<p>\nTutti noi abbiamo visto articoli con titoli come \"Le applicazioni pi\u00f9 vulnerabili dell'anno\" o \"I sistemi operativi pi\u00f9 vulnerabili\". Di solito, questi articoli presentano statistiche sul numero totale di registrazioni delle vulnerabilit\u00e0 di tipo <noindex><a rel=\"nofollow\" href=\"https:\/\/cve.mitre.org\/\">CVE (Common Vulnerability and Exposures)<\/a><\/noindex>, ottenute da <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/\">National Vulnerability Database (NVD)<\/a><\/noindex> da <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nist.gov\/\">NIST<\/a><\/noindex> e altre fonti. Successivamente, queste applicazioni o sistemi operativi vengono classificati in base al numero di CVE. Sfortunatamente, sebbene i CVE siano molto utili per monitorare i problemi e informare fornitori e utenti, dicono poco sulla reale sicurezza del software.<\/p>\n<p>Per esempio, consideriamo il numero totale di CVE negli ultimi quattro anni per il kernel Linux e i cinque pi\u00f9 popolari distribuzioni server, ovvero Ubuntu, Debian, Red Hat Enterprise Linux e OpenSUSE.<\/p>\n<p><img decoding=\"async\" alt=\"Milioni di binari dopo. Come si \u00e8 rafforzato Linux\" src=\"\/wp-content\/uploads\/2019\/03\/16d74634f010e340aedbce441513e3f8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 1<\/i><\/p>\n<p>Cosa ci dice questo grafico? Un numero maggiore di CVE significa che una distribuzione \u00e8 pi\u00f9 vulnerabile di un'altra? La risposta \u00e8 no. Ad esempio, in questo articolo vedrete che Debian ha meccanismi di protezione pi\u00f9 rigorosi rispetto, ad esempio, a OpenSUSE o RedHat Linux, eppure Debian ha pi\u00f9 CVE. Tuttavia, ci\u00f2 non significa necessariamente una sicurezza compromessa: anche la presenza di CVE non indica se una vulnerabilit\u00e0 \u00e8 <i>sfruttabile<\/i>. I punteggi di gravit\u00e0 offrono un'idea di quanto sia <i>probabile<\/i> l'uso delle vulnerabilit\u00e0, ma in ultima analisi l'esploitabilit\u00e0 dipende in larga misura dalla protezione presente nei sistemi interessati, cos\u00ec come dalle risorse e dalle capacit\u00e0 degli aggressori. Inoltre, l'assenza di segnalazioni CVE non dice nulla su altre <i>non registrate o sconosciute<\/i> vulnerabilit\u00e0. La differenza nel numero di CVE pu\u00f2 essere spiegata non dalla qualit\u00e0 del software, ma da altri fattori, inclusi i fondi destinati ai test o la dimensione della base utenti. Nel nostro esempio, un numero maggiore di CVE in Debian potrebbe semplicemente indicare che Debian fornisce un numero maggiore di pacchetti software. <\/p>\n<p>Naturalmente, il sistema CVE fornisce informazioni utili che consentono di creare protezioni adeguate. Pi\u00f9 comprendiamo le cause dei guasti del programma, pi\u00f9 \u00e8 facile identificare i possibili modi di sfruttamento e sviluppare meccanismi adeguati <i>di rilevamento e risposta<\/i>. Nella Fig. 2 sono presentate le categorie di vulnerabilit\u00e0 per tutte le distribuzioni negli ultimi quattro anni (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.cvedetails.com\/top-50-products.php\">fonte<\/a><\/noindex>). \u00c8 evidente che la maggior parte delle CVE ricade nelle seguenti categorie: attacchi di negazione del servizio (DoS), esecuzione di codice, overflow, corruzione della memoria, perdita (esfiltrazione) di informazioni ed escalation di privilegi. Sebbene molte CVE siano registrate pi\u00f9 volte in diverse categorie, nel complesso i problemi rimangono sostanzialmente gli stessi di anno in anno. Nella prossima parte dell'articolo, valuteremo l'uso di schemi di protezione diversi per prevenire lo sfruttamento delle vulnerabilit\u00e0 sopra menzionate.<\/p>\n<p><img decoding=\"async\" alt=\"Milioni di binari dopo. Come si \u00e8 rafforzato Linux\" src=\"\/wp-content\/uploads\/2019\/03\/45948bc64673540cfb3e1774c3247634.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 2<\/i><\/p>\n<h3>Attivit\u00e0<\/h3>\n<p>\nIn questo articolo intendiamo rispondere alle seguenti domande:<\/p>\n<ul>\n<li>Qual \u00e8 la sicurezza dei diversi distribuzioni Linux? Quali meccanismi di protezione esistono nel kernel e nelle applicazioni dello spazio utente?\n<\/li>\n<li>Come \u00e8 cambiata nel tempo l'adozione dei meccanismi di protezione per le varie distribuzioni?\n<\/li>\n<li>Quali sono le dipendenze medie di pacchetti e librerie per ciascuna distribuzione?\n<\/li>\n<li>Quali protezioni sono implementate per ogni binario?<\/li>\n<\/ul>\n<p><\/p>\n<h3>Scelta delle distribuzioni<\/h3>\n<p>\nRisulta difficile trovare statistiche precise sulle installazioni di distribuzioni, poich\u00e9 nella maggior parte dei casi il numero di download non riflette le installazioni reali. Tuttavia, le opzioni Unix rappresentano la maggior parte dei sistemi server (69,2% sui server web, secondo <noindex><a rel=\"nofollow\" href=\"https:\/\/w3techs.com\/technologies\/overview\/operating_system\/all\">statistiche<\/a><\/noindex> W3techs e altre fonti), e la loro quota continua a crescere. Pertanto, per la nostra ricerca ci siamo concentrati sulle distribuzioni disponibili di default sulla piattaforma <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/\">Google Cloud<\/a><\/noindex>. In particolare, abbiamo scelto i seguenti sistemi operativi:<\/p>\n<p>Distribuzione\/versione<br \/>\nIl kernel<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>Tabella 1<\/i> <\/p>\n<h1>Analisi<\/h1>\n<p>\nEsamineremo la configurazione predefinita del kernel, cos\u00ec come le propriet\u00e0 dei pacchetti disponibili tramite il gestore di pacchetti di ogni distribuzione di default. In questo modo consideriamo solo i pacchetti dai mirror predefiniti di ogni distribuzione, ignorando quelli provenienti da repository instabili (ad esempio, i mirror 'testing' in Debian) e pacchetti di terze parti (come i pacchetti Nvidia dai mirror standard). Inoltre, non consideriamo compilazioni personalizzate del kernel o configurazioni con maggiore sicurezza.<\/p>\n<h3>Analisi della configurazione del kernel<\/h3>\n<p>\nAbbiamo applicato uno script di analisi basato su <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/a13xp0p0v\/kconfig-hardened-check\">un checker kconfig gratuito<\/a><\/noindex>. Consideriamo i parametri di sicurezza predefiniti delle distribuzioni menzionate e li confrontiamo con l'elenco fornito da <noindex><a rel=\"nofollow\" href=\"http:\/\/kernsec.org\/wiki\/index.php\/Kernel_Self_Protection_Project\/Recommended_Settings\">Kernel Self-Protection Projet<\/a><\/noindex> (KSPP). Per ogni parametro di configurazione, la tabella 2 descrive l'impostazione desiderata: un segno di spunta indica le distribuzioni che seguono le raccomandazioni KSSP (per chiarimenti sui termini vedi <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/kernel-configuration-glossary\/\">qui<\/a><\/noindex>; negli articoli futuri spiegheremo come sono nati molti di questi metodi di protezione e come violare il sistema in loro assenza).<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/dx\/oh\/o0\/dxoho0z-lifjcybajszqb-aiirq.png\"><img decoding=\"async\" alt=\"Milioni di binari dopo. Come si \u00e8 rafforzato Linux\" src=\"\/wp-content\/uploads\/2019\/03\/b1a42826f4afc78a2b25d158100b2ba4.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><img decoding=\"async\" alt=\"Milioni di binari dopo. Come si \u00e8 rafforzato Linux\" src=\"\/wp-content\/uploads\/2019\/03\/2177579e65e4fe6bb320903756a04b9b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn generale, nei nuovi kernel le impostazioni sono pi\u00f9 rigorose di default. Ad esempio, in CentOS 6.10 e RHEL 6.10 con kernel 2.6.32 mancano la maggior parte delle funzionalit\u00e0 critiche implementate nei nuovi kernel, come <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Supervisor_Mode_Access_Prevention\">SMAP<\/a><\/noindex>, rigorose autorizzazioni RWX, randomizzazione degli indirizzi o protezione copy2usr. \u00c8 importante notare che molte delle opzioni di configurazione nella tabella non sono presenti nelle versioni precedenti del kernel e non sono realmente applicabili\u2014nella tabella viene comunque indicato come mancanza di adeguata protezione. Analogamente, se un parametro di configurazione \u00e8 assente in questa versione e per motivi di sicurezza deve essere disattivato, ci\u00f2 \u00e8 considerato una configurazione ragionevole. <\/p>\n<p>Un altro aspetto da considerare nell'interpretazione dei risultati \u00e8 che alcune configurazioni del kernel che aumentano la superficie di attacco potrebbero essere utilizzate anche per la sicurezza. Esempi di questo includono uprobes e kprobes, moduli del kernel e BPF\/eBPF. La nostra raccomandazione \u00e8 di utilizzare i meccanismi sopra citati per garantire una reale protezione, poich\u00e9 non sono banali da usare e la loro sfruttabilit\u00e0 implica che i malintenzionati siano gi\u00e0 stati radicati nel sistema. Tuttavia, se queste opzioni sono abilitate, l'amministratore di sistema deve monitorare attivamente gli abusi.<\/p>\n<p>Analizzando ulteriormente le voci della tabella 2, vediamo che i kernel moderni offrono diverse opzioni per proteggere contro lo sfruttamento di vulnerabilit\u00e0 come le fughe di informazioni e il buffer\/heap overflow. Tuttavia, notiamo che anche le distribuzioni pi\u00f9 recenti non hanno ancora implementato protezioni pi\u00f9 sofisticate (ad esempio, con patch <noindex><a rel=\"nofollow\" href=\"https:\/\/grsecurity.net\/\">grsecurity<\/a><\/noindex>) o protezioni moderne contro gli attacchi di riutilizzo del codice (ad esempio, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.cs.columbia.edu\/~theofilos\/files\/slides\/krx.pdf\">combinando la randomizzazione con schemi come R^X per il codice<\/a><\/noindex>). Ci\u00f2 che \u00e8 peggio, \u00e8 che anche queste soluzioni di protezione pi\u00f9 avanzate non difendono da tutta la gamma di attacchi. Pertanto, \u00e8 fondamentale per gli amministratori di sistema integrare configurazioni adeguate con soluzioni che offrano rilevamento e prevenzione degli exploit durante il runtime.<\/p>\n<h3>Analisi delle applicazioni<\/h3>\n<p>\nNon sorprende che diversi distribuzioni abbiano diverse caratteristiche dei pacchetti, opzioni di compilazione, dipendenze delle librerie, ecc. Ci sono differenze anche per <noindex><a rel=\"nofollow\" href=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/1\/1b\/Linux_Distribution_Timeline.svg\">distribuzioni<\/a><\/noindex> e pacchetti con poche dipendenze (ad esempio, coreutils su Ubuntu o Debian). Per valutare le differenze, abbiamo scaricato tutti i pacchetti disponibili, estratto il loro contenuto e analizzato i file binari e le dipendenze. Per ogni pacchetto, abbiamo tracciato gli altri pacchetti di cui dipende, e per ogni binario abbiamo monitorato le sue dipendenze. In questa sezione riassumeremo le conclusioni.<\/p>\n<h4>Distribuzioni<\/h4>\n<p>\nAbbiamo caricato in totale 361.556 pacchetti per tutte le distribuzioni, estraendo solo pacchetti dai mirror predefiniti. Abbiamo ignorato i pacchetti privi di file eseguibili ELF, come codici sorgente, font, ecc. Dopo la filtrazione, sono rimasti 129.569 pacchetti contenenti complessivamente 584.457 file binari. La distribuzione dei pacchetti e dei file per distribuzione \u00e8 mostrata nella Fig. 3.<\/p>\n<p><img decoding=\"async\" alt=\"Milioni di binari dopo. Come si \u00e8 rafforzato Linux\" src=\"\/wp-content\/uploads\/2019\/03\/a24975fba7413ac8069c07412e5476cc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 3<\/i><\/p>\n<p>Si pu\u00f2 notare che pi\u00f9 moderno \u00e8 il sistema operativo, maggiore \u00e8 il numero di pacchetti e file binari al suo interno, il che \u00e8 logico. Tuttavia, i pacchetti di Ubuntu e Debian includono molti pi\u00f9 file binari (sia eseguibili sia moduli e librerie dinamiche) rispetto a CentOS, SUSE e RHEL, il che potrebbe influenzare potenzialmente la superficie di attacco di Ubuntu e Debian (\u00e8 importante notare che i numeri riflettono tutti i binari di tutte le versioni del pacchetto, quindi alcuni file vengono analizzati pi\u00f9 volte). Questo \u00e8 particolarmente importante considerando le dipendenze tra i pacchetti. Pertanto, una vulnerabilit\u00e0 in un file binario di un pacchetto pu\u00f2 influenzare molte parti dell'ecosistema, proprio come una libreria vulnerabile pu\u00f2 influenzare tutti i file binari che la importano. Come punto di riferimento, diamo un'occhiata alla distribuzione del numero di dipendenze tra i pacchetti nei vari sistemi operativi:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ii\/e3\/e5\/iie3e5-ei26ezg5yvcyvtzqzl80.png\"><img decoding=\"async\" alt=\"Milioni di binari dopo. Come si \u00e8 rafforzato Linux\" src=\"\/wp-content\/uploads\/2019\/03\/c6570e643d92103c87659e61f5d395a6.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<i>Fig. 4<\/i> <\/p>\n<p>In quasi tutte le distribuzioni, il 60% dei pacchetti ha almeno 10 dipendenze. Inoltre, alcuni pacchetti hanno un numero di dipendenze significativamente maggiore (oltre 100). Lo stesso vale per le dipendenze inverse dei pacchetti: come previsto, diversi pacchetti sono utilizzati da molti altri pacchetti nella distribuzione, quindi le vulnerabilit\u00e0 in questi pochi selezionati rappresentano un alto rischio. Ad esempio, nella tabella seguente vengono elencati 20 pacchetti con il maggior numero di dipendenze inverse in SLES, Centos 7, Debian 9 e Ubuntu 18.04 (in ogni cella \u00e8 indicato il pacchetto e il numero di dipendenze inverse).<\/p>\n<p><img decoding=\"async\" alt=\"Milioni di binari dopo. Come si \u00e8 rafforzato Linux\" src=\"\/wp-content\/uploads\/2019\/03\/0aa544db8be1af7bffe21b6314537e18.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tabella 3<\/i><\/p>\n<p>Fatto interessante. Sebbene tutti i sistemi operativi analizzati siano progettati per l'architettura x86_64, e la maggior parte dei pacchetti abbia l'architettura definita come x86_64 e x86, i pacchetti contengono spesso file binari per altre architetture, come mostrato nella fig. 5.<\/p>\n<p><img decoding=\"async\" alt=\"Milioni di binari dopo. Come si \u00e8 rafforzato Linux\" src=\"\/wp-content\/uploads\/2019\/03\/b40f607e0c2f169bd1df21bd9994de8c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 5<\/i><\/p>\n<p>Nella prossima sezione approfondiremo le caratteristiche degli analizati binari.<\/p>\n<h4>Statistiche sulla protezione dei file binari<\/h4>\n<p>\nCome minimo assoluto, \u00e8 necessario studiare il set di base delle opzioni di protezione per i file binari esistenti. Alcune distribuzioni Linux vengono fornite con script che eseguono tali controlli. Ad esempio, in Debian\/Ubuntu esiste uno script di questo tipo. Ecco un esempio del suo funzionamento:<\/p>\n<pre><code class=\"bash\">$ hardening-check $(which docker)\n\/usr\/bin\/docker:\n Eseguibile indipendente dalla posizione: yes\n Stack protetto: yes\n Funzioni di Fortify Source: no, trovate solo funzioni non protette!\n Ritaggi di sola lettura: yes\n Binding immediato: yes<\/code><\/pre>\n<p>\nLo script controlla cinque <noindex><a rel=\"nofollow\" href=\"http:\/\/manpages.ubuntu.com\/manpages\/trusty\/man1\/hardening-check.1.html\">funzioni di protezione<\/a><\/noindex>:<\/p>\n<ul>\n<li>Eseguibile Indipendente dalla posizione (PIE): indica se \u00e8 possibile spostare in memoria la sezione di testo del programma per ottenere la randomizzazione, se ASLR \u00e8 abilitato nel kernel.\n<\/li>\n<li>Stack Protetto: se le canarie dello stack sono attivate per proteggere contro gli attacchi di collisione dello stack.\n<\/li>\n<li>Fortify Source: se le funzioni non sicure (ad esempio, strcpy) vengono sostituite da versioni pi\u00f9 sicure, mentre le chiamate verificate in tempo di esecuzione vengono sostituite da versioni non verificate (ad esempio, memcpy al posto di __memcpy_chk).\n<\/li>\n<li>Ritaggi di sola lettura (RELRO): se le voci della tabella di rilocazione sono contrassegnate come \"sola lettura\", se sono state attivate prima dell'esecuzione.\n<\/li>\n<li>Binding immediato: il linker dell'ambiente di esecuzione consente di risolvere tutte le relocazioni prima dell'esecuzione del programma (equivalente a RELRO completo).<\/li>\n<\/ul>\n<p>\nSono sufficienti i meccanismi sopra elencati? Purtroppo no. Esistono metodi noti per aggirare tutte le protezioni sopra menzionate, ma maggiore \u00e8 la rigidit\u00e0 della protezione, pi\u00f9 alta \u00e8 la barriera per l'attaccante. Ad esempio, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.usenix.org\/system\/files\/conference\/usenixsecurity15\/sec15-paper-di-frederico.pdf\">i metodi di aggiramento di RELRO<\/a><\/noindex> difficilmente possono essere applicati se sono attivi PIE e binding immediato. Allo stesso modo, ASLR completo richiede ulteriori sforzi per creare un exploit funzionante. Tuttavia, i malintenzionati pi\u00f9 esperti sono gi\u00e0 pronti a fronteggiare queste difese: la loro assenza accelererebbe essenzialmente l'attacco. Pertanto, \u00e8 fondamentale che queste misure siano considerate necessarie. <i>un minimo di<\/i>. <\/p>\n<p>Volevamo esaminare quanti file binari nelle distribuzioni considerate sono protetti da questi, oltre ad altri tre metodi:<\/p>\n<ul>\n<li>Il bit non eseguibile (<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Executable_space_protection\">NX<\/a><\/noindex>) impedisce l'esecuzione in qualsiasi regione che non dovrebbe essere eseguibile, ad esempio nello heap o nello stack, ecc.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Rpath\">RPATH\/RUNPATH<\/a><\/noindex> indica il percorso di esecuzione utilizzato dal caricatore dinamico per trovare le librerie appropriate. Il primo \u00e8 <i>obbligatorio.<\/i> per qualsiasi sistema moderno: la sua assenza consente agli attaccanti di registrare liberamente il payload in memoria ed eseguirlo cos\u00ec com'\u00e8. Per il secondo, configurazioni errate del percorso di esecuzione aiutano nell'introduzione di codice non affidabile, il che pu\u00f2 portare a una serie di problemi (ad esempio, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nth-dimension.org.uk\/pub\/BTL.pdf\">escalation delle privilegi<\/a><\/noindex>, cos\u00ec come <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.debian.org\/RpathIssue\">altri problemi<\/a><\/noindex>).<\/li>\n<li>La protezione contro i conflitti di stack fornisce protezione contro attacchi che costringono lo stack a sovrapporsi ad altre aree di memoria (ad esempio, l'heap). Considerando i recenti exploit che abusano <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/exploiting-systemd-journald-part-1\/\">delle vulnerabilit\u00e0 di collisione dell'heap in systemd<\/a><\/noindex>, abbiamo ritenuto opportuno includere questo meccanismo nel nostro set di dati.<\/li>\n<\/ul>\n<p>\nQuindi, senza ulteriori indugi, passiamo ai numeri. Le tabelle 4 e 5 contengono un riepilogo dell'analisi dei file eseguibili e delle librerie di vari distribuzioni, rispettivamente.<\/p>\n<ul>\n<li>Come si pu\u00f2 notare, la protezione NX \u00e8 implementata ovunque, con rare eccezioni. In particolare, si pu\u00f2 notare un uso leggermente pi\u00f9 basso nelle distribuzioni Ubuntu e Debian rispetto a CentOS, RHEL e OpenSUSE.\n<\/li>\n<li>Le stack canary non sono presenti in molti luoghi, specialmente nelle distribuzioni con kernel obsoleti. Progressi sono stati osservati nelle ultime distribuzioni di CentOS, RHEL, Debian e Ubuntu.\n<\/li>\n<li>Tranne Debian e Ubuntu 18.04, la maggior parte delle distribuzioni presenta un supporto scarso per PIE.\n<\/li>\n<li>La protezione contro le collisioni dello stack \u00e8 scarsamente implementata in OpenSUSE, CentOS 7 e RHEL 7 e praticamente assente negli altri.\n<\/li>\n<li>Tutte le distribuzioni con kernel moderni hanno un certo supporto per RELRO, con Ubuntu 18.04 in testa e Debian al secondo posto.<\/li>\n<\/ul>\n<p>\nCome gi\u00e0 accennato, le metriche in questa tabella sono medie su tutte le versioni del file binario. Se si considerano solo le ultime versioni dei file, i numeri saranno diversi (per esempio, vedi. <noindex><a rel=\"nofollow\" href=\"http:\/\/outflux.net\/debian\/hardening\/\">il progresso di Debian con l'implementazione di PIE<\/a><\/noindex>). Inoltre, la maggior parte delle distribuzioni di solito conta le statistiche verificando la protezione solo di alcune funzioni nel codice binario, mentre nella nostra analisi \u00e8 indicato il vero percentuale di funzioni rinforzate. Pertanto, se nel binario sono protette 5 su 50 funzioni, daremo un punteggio di 0,1, che corrisponde al 10% di funzioni rinforzate.<\/p>\n<p><img decoding=\"async\" alt=\"Milioni di binari dopo. Come si \u00e8 rafforzato Linux\" src=\"\/wp-content\/uploads\/2019\/03\/82e881c5ba2a3911f3a0ffae1a3475f4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tabella 4. Caratteristiche di sicurezza per i file eseguibili, come mostrato in Fig. 3 (implementazione delle funzioni corrispondenti in percentuale rispetto al numero totale di file eseguibili)<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Milioni di binari dopo. Come si \u00e8 rafforzato Linux\" src=\"\/wp-content\/uploads\/2019\/03\/57c8e67be7a57341105262c6e956594c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tabella 5. Caratteristiche di sicurezza per le librerie, come mostrato in Fig. 3 (implementazione delle funzioni corrispondenti in percentuale rispetto al numero totale di librerie)<\/i><\/p>\n<p>C'\u00e8 progresso? Assolutamente s\u00ec: \u00e8 evidente dalle statistiche relative ai singoli distribuzioni (ad esempio, <noindex><a rel=\"nofollow\" href=\"http:\/\/outflux.net\/debian\/hardening\/\">Debian<\/a><\/noindex>), e anche dalle tabelle sopra riportate. Come esempio, in Fig. 6 viene mostrata l'implementazione dei meccanismi di sicurezza in tre distribuzioni consecutive di Ubuntu LTS 5 (abbiamo omesso le statistiche sulla protezione contro le collisioni dello stack). Notiamo che da una versione all'altra sempre pi\u00f9 file supportano le canarie dello stack, e progressivamente sempre pi\u00f9 file binari vengono forniti con la protezione completa RELRO.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/d1\/ni\/or\/d1niordj1hmiklmg2-w5rsk6dla.png\"><img decoding=\"async\" alt=\"Milioni di binari dopo. Come si \u00e8 rafforzato Linux\" src=\"\/wp-content\/uploads\/2019\/03\/9130099db6d59106da8f0a0fc760410e.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<i>Fig. 6<\/i><\/p>\n<p>Sfortunatamente, alcuni file eseguibili in diverse distribuzioni non dispongono ancora di nessuna delle protezioni menzionate. Ad esempio, osservando Ubuntu 18.04, si pu\u00f2 notare il binario ngetty (sostituto di getty), cos\u00ec come le shell mksh e lksh, l'interprete picolisp, i pacchetti nvidia-cuda-toolkit (un pacchetto popolare per applicazioni con accelerazione GPU, come i framework di machine learning) e klibc-utils. Analogamente, il binario mandos-client (uno strumento amministrativo che consente di riavviare automaticamente macchine con file system criptati), cos\u00ec come rsh-redone-client (una reimplementazione di rsh e rlogin), vengono forniti senza protezione NX, nonostante abbiano permessi SUID :(. Inoltre, in diversi binari SUID manca la protezione di base, come gli stack canaries (ad esempio, il file binario Xorg.wrap del pacchetto Xorg).<\/p>\n<h1>Riassunto e osservazioni finali<\/h1>\n<p>\nIn questo articolo abbiamo messo in evidenza alcune caratteristiche di sicurezza delle moderne distribuzioni Linux. L'analisi ha mostrato che nell'ultima distribuzione LTS di Ubuntu (18.04) \u00e8 implementata in media la protezione pi\u00f9 robusta a livello di OS e applicazioni tra le distribuzioni con kernel relativamente recenti, come Ubuntu 14.04, 12.04 e Debian 9. Tuttavia, le distribuzioni considerate come CentOS, RHEL e OpenSUSE nel nostro set di dati forniscono di default un pacchetto pi\u00f9 denso, e nelle ultime versioni (CentOS e RHEL) presentano una percentuale pi\u00f9 alta di implementazione della protezione contro il conflitto dello stack, rispetto ai concorrenti basati su Debian (Debian e Ubuntu). Confrontando le versioni di CentOS e RedHat, notiamo significativi miglioramenti nell'implementazione delle canarini dello stack e di RELRO dalle versioni 6 a 7, ma in media CentOS implementa pi\u00f9 funzionalit\u00e0 rispetto a RHEL. In generale, tutte le distribuzioni dovrebbero prestare particolare attenzione alla protezione PIE, che, a eccezione di Debian 9 e Ubuntu 18.04, \u00e8 implementata in meno del 10% dei file binari nel nostro set di dati. <\/p>\n<p>Infine, va notato: sebbene abbiamo condotto la ricerca manualmente, esistono molti strumenti di sicurezza (ad esempio, <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>), che eseguono analisi e aiutano a evitare configurazioni non sicure. Sfortunatamente, anche una protezione robusta con configurazioni ragionevoli non garantisce l'assenza di exploit. Ecco perch\u00e9 crediamo fermamente che sia vitale garantire <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/\">una sorveglianza affidabile e la prevenzione degli attacchi in tempo reale<\/a><\/noindex>, concentrandosi sui modelli di sfruttamento e prevenendoli.<\/p>\n<p>Fonte: <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 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"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\" \/>\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\/it\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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. \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/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\udd47Milioni di binari dopo. Come si \u00e8 rafforzato Linux | ProHoster","description":"TL;DR. In questo articolo esploriamo gli schemi di protezione (hardening schemes) che funzionano out-of-the-box in cinque popolari distribuzioni Linux. Per ciascuna, abbiamo preso la configurazione del kernel di default, caricato tutti i pacchetti e analizzato gli schemi di protezione nei file binari annidati. Sono trattate le distribuzioni OpenSUSE 12.4, Debian 9, CentOS, RHEL 6.10 e 7, oltre a Ubuntu 14.04, 12.04 e","canonical_url":"https:\/\/prohoster.info\/it\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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. \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","og:url":"https:\/\/prohoster.info\/it\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/29880","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=29880"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/29880\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=29880"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=29880"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=29880"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}