{"id":78514,"date":"2020-04-20T01:42:32","date_gmt":"2020-04-19T23:42:32","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kak-zashhishhat-proczessy-i-rasshireniya-yadra-v-macos"},"modified":"2020-04-20T01:42:32","modified_gmt":"2020-04-19T23:42:32","slug":"kak-zashhishhat-proczessy-i-rasshireniya-yadra-v-macos","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kak-zashhishhat-proczessy-i-rasshireniya-yadra-v-macos","title":{"rendered":"Kuidas kaitsta protsesse ja tuuma laiendusi macOS-is","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Tere, Habr! T\u00e4na sooviksin r\u00e4\u00e4kida sellest, kuidas saab kaitsta protsesse kurjategijate sissetungi eest macOS-is. N\u00e4iteks on see kasulik viiruset\u00f5rje v\u00f5i backup-s\u00fcsteemi jaoks, eriti arvestades, et macOS-is on mitmeid viise protsessi \"tappa\". Loe edasi selle ja kaitsemeetodite kohta allpool.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/acronis\/blog\/497714\/\"><img decoding=\"async\" alt=\"Kuidas kaitsta protsesse ja tuuma laiendusi macOS-is\" src=\"\/wp-content\/uploads\/2020\/04\/621276e5dd7c90dd48c34c94f3b37cf2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Klassikaline viis protsessi \"tapmiseks\"<\/h3>\n<p>\nK\u00f5igile tuntud viis protsessi \"tapmiseks\" on saata SIGKILL signaal protsessile. Bash'is saab tavaliste k\u00e4skudega \"kill -SIGKILL PID\" v\u00f5i \"pkill -9 NAME\" protsessi tappa. K\u00e4sk \"kill\" on tuntud juba UNIXi aegadest ja on saadaval mitte ainult macOS-is, vaid ka teistes UNIX-i sarnastes s\u00fcsteemides.<\/p>\n<p>Nagu UNIX-i sarnastes s\u00fcsteemides, v\u00f5imaldab macOS ka protsessile saata mis tahes signaale, v\u00e4lja arvatud kaks \u2014 SIGKILL ja SIGSTOP. Selles artiklis k\u00e4sitleme esmajoones SIGKILL signaali, mis on signaal, mis p\u00f5hjustab protsessi tapmise.<\/p>\n<h3>macOS-i omadused<br \/>\n<\/h3>\n<p>\nmacOS-is kutseal sisenev kill-s\u00fcsteemne kutse XNU-s tuletab funktsiooni psignal(SIGKILL,&#8230;). Uurime, milliseid muid tegevusi kasutaja userspace-is v\u00f5ib funktsiooni psignal k\u00e4ivitada. J\u00e4tame k\u00f5rvale funktsiooni psignal kutseid tuumamehhanismides (kuigi need v\u00f5ivad olla erilised, j\u00e4tame need teise artikli jaoks \ud83d\ude42 \u2014 allkirjade kontroll, m\u00e4luvead, exit\/terminate t\u00f6\u00f6tlemine, failide kaitse rikkumise jne. <\/p>\n<p>Alustame \u00fclevaadet funktsiooni ja vastava s\u00fcsteemik\u00f5ne kohta <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/apple\/darwin-xnu\/blob\/a449c6a3b8014d9406c2ddbdc81795da24aa7443\/bsd\/kern\/kern_sig.c#L1672\">terminate_with_payload<\/a><\/noindex>. On n\u00e4ha, et lisaks klassikalisele kill-kutsumisele on olemas alternatiivne l\u00e4henemine, mis on spetsiifiline macOS operatsioonis\u00fcsteemile ja mida ei leidu BSD-s. M\u00f5lema s\u00fcsteemik\u00f5ne t\u00f6\u00f6p\u00f5him\u00f5tted on samuti sarnased. Need on otsesed k\u00f5ned tuuma funktsioonile psignal. J\u00e4tame t\u00e4helepanuta, et enne protsessi tapmist toimub kontroll \"cansignal\" \u2014 kas protsess v\u00f5ib saata signaali teisele protsessile, s\u00fcsteem ei luba \u00fcksk\u00f5ik millisel rakendusel tappa s\u00fcsteemiprotsesse n\u00e4iteks.<\/p>\n<pre><code class=\"cpp\">static int\nterminate_with_payload_internal(struct proc *cur_proc, int target_pid, uint32_t reason_namespace,\n\t\t\t\tuint64_t reason_code, user_addr_t payload, uint32_t payload_size,\n\t\t\t\tuser_addr_t reason_string, uint64_t reason_flags)\n{\n...\n\ttarget_proc = proc_find(target_pid);\n...\n\tif (!cansignal(cur_proc, cur_cred, target_proc, SIGKILL)) {\n\t\tproc_rele(target_proc);\n\t\treturn EPERM;\n\t}\n...\n\tif (target_pid == cur_proc-&gt;p_pid) {\n\t\t\n\t\t * psignal_thread_with_reason() will pend a SIGKILL on the specified thread or\n\t\t * return if the thread and\/or task are already terminating. Either way, the\n\t\t * current thread won't return to userspace.\n\t\t *\n\t\tpsignal_thread_with_reason(target_proc, current_thread(), SIGKILL, signal_reason);\n\t} else {\n\t\tpsignal_with_reason(target_proc, SIGKILL, signal_reason);\n\t}\n...\n}\n<\/code><\/pre>\n<p><\/p>\n<h3>launchd<\/h3>\n<p>\nTavaliselt kasutatakse s\u00fcsteemi k\u00e4ivitamiseks ja deemonite eluea kontrollimiseks launchd. Tahan m\u00e4rkida, et alltoodud originaalid viitavad vanale versioonile launchctl enne macOS 10.10, koodin\u00e4ited on esitatud illustreerimiseks. Kaasaegne launchctl saadab signaalid launchd-le l\u00e4bi XPC, launchctl-i loogika on sinna \u00fcle viidud.<\/p>\n<p>Vaadakem, kuidas t\u00e4pselt rakendusi peatada. Enne SIGTERM signaali saatmist proovib rakendusi peatada s\u00fcsteemi k\u00f5ne \u201cproc_terminate\u201d kaudu.<\/p>\n<pre><code class=\"cpp\">...\n\terror = proc_terminate(j-&gt;p, &amp;sig);\n\tif (error) {\n\t\tjob_log(j, LOG_ERR | LOG_CONSOLE, \"Ei suutnud t\u00f6\u00f6d l\u00f5petada: %d: %s\", error, strerror(error));\n\t\tjob_log(j, LOG_NOTICE | LOG_CONSOLE, \"Kasutame varuv\u00f5imalust t\u00f6\u00f6 l\u00f5petamiseks...\");\n\t\terror = kill2(j-&gt;p, SIGTERM);\n\t\tif (error) {\n\t\t\tjob_log(j, LOG_ERR, \"Ei suutnud saata signaali t\u00f6\u00f6le: %d: %s\", error, strerror(error));\n\t\t} \n...\n<\/code><\/pre>\n<p>\nKuigi proc_terminate v\u00f5ib oma nime j\u00e4rgi saata mitte ainult psignali koos SIGTERM'iga, vaid ka SIGKILL'iga.<\/p>\n<h3>Kaudne tapmine \u2014 ressursipiirangud<\/h3>\n<p>\nHuvitavam juhtum v\u00f5ib ilmneda teises s\u00fcsteemi k\u00f5nes <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/apple\/darwin-xnu\/blob\/a449c6a3b8014d9406c2ddbdc81795da24aa7443\/bsd\/kern\/process_policy.c#L652\">process_policy<\/a><\/noindex>. Tavaotstarbel kasutatakse seda s\u00fcsteemi k\u00f5net rakenduste ressursipiirangute jaoks, n\u00e4iteks indekseerijale seatakse piirang protsessori aja ja m\u00e4lu kvoodi peale, et s\u00fcsteem ei aeglustuks oluliselt failide vahem\u00e4lu toimingute t\u00f5ttu. Kui rakendus saavutab ressursipiirangu, nagu v\u00f5ib n\u00e4ha funktsioonis proc_apply_resource_actions, saadetakse protsessile signaal SIGKILL.<\/p>\n<p>Kuigi see s\u00fcsteemi k\u00f5ne v\u00f5ib potentsiaalselt tappa protsessi, ei kontrollinud s\u00fcsteem piisavalt selle protsessi \u00f5igusi, kes s\u00fcsteemi k\u00f5net tegi. Tegelikult toimus kontroll <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/apple\/darwin-xnu\/blob\/a449c6a3b8014d9406c2ddbdc81795da24aa7443\/bsd\/kern\/process_policy.c#L267\">eksisteeris<\/a><\/noindex>, kuid piisab alternatiivse lipu PROC_POLICY_ACTION_SET kasutamisest selle tingimuse v\u00e4ltimiseks.<\/p>\n<p>Siit, kui \"piirata\" CPU kasutamise kvooti rakendusele (n\u00e4iteks lubada t\u00f6\u00f6tada ainult \u00fchel ns-l), siis saab igas\u00fcsteemi protsessi tappa. Nii saab pahavara tappa igasuguseid protsesse s\u00fcsteemis, sealhulgas ka viirusevastase protsessi. Samuti on huvitav efekt, mis tekib protsessi tapmisel pid 1 (launchctl) \u2013 kernel panic, kui proovida t\u00f6\u00f6delda SIGKILL signaali \ud83d\ude42<\/p>\n<p><img decoding=\"async\" alt=\"Kuidas kaitsta protsesse ja tuuma laiendusi macOS-is\" src=\"\/wp-content\/uploads\/2020\/04\/46adadb9b3f28b78f0b9df410e601bb9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Kuidas probleemi lahendada?<\/h3>\n<p>\nK\u00f5ige otsesem viis protsessi tapmise keelamiseks on s\u00fcsteem kutsumise tabelis funktsiooni osutaja asendamine. Kahjuks on see meetod paljuski mittetavaline.<\/p>\n<p>Esiteks, s\u00fcmbol, mis vastutab sysent'i asukoha eest m\u00e4lus, on mitte ainult XNU tuuma privaatne s\u00fcmbol, vaid seda ei saa leida ka tuuma s\u00fcmbolitest. Peame kasutama heuristikameetodeid, n\u00e4iteks funktsiooni d\u00fcnaamilist disassembliimist ja osutaja otsimist selles.<\/p>\n<p>Teiseks, tabeli kirje struktuur s\u00f5ltub lippudest, millega tuuma on kokku pandud. Kui on kuulutatud lipp CONFIG_REQUIRES_U32_MUNGING, siis struktuuri suurus muutub \u2013 lisatakse t\u00e4iendav v\u00e4li. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/apple\/darwin-xnu\/blob\/a449c6a3b8014d9406c2ddbdc81795da24aa7443\/bsd\/sys\/sysent.h#L45\">sy_arg_munge32<\/a><\/noindex>. Peame tegema t\u00e4iendava kontrolli selle \u00fcle, millise lipuga tuum on kompileeritud, n\u00e4iteks kontrollida osutajaid funktsioonidele tuntud osutajate vahel.<\/p>\n<pre><code class=\"cpp\">struct sysent {         \n        \/* s\u00fcsteemikutsumise tabel *\/\n        sy_call_t       *sy_call;       \/* teostava funktsiooni osutaja *\/\n#if CONFIG_REQUIRES_U32_MUNGING || (__arm__ &amp;&amp; (__BIGGEST_ALIGNMENT__ &gt; 4))\n        sy_munge_t      *sy_arg_munge32; \/* s\u00fcsteemikutsumise argumendi muudatus 32-bitise protsessi jaoks *\/\n#endif\n        int32_t         sy_return_type; \/* s\u00fcsteemikutsumise tagastusliigid *\/\n        int16_t         sy_narg;        \/* argumendide arv *\/\n        uint16_t        sy_arg_bytes;   \/* Argumendide kogusuurus baitidena 32-bitistes s\u00fcsteemikutsumistes *\/\n};\n<\/code><\/pre>\n<p>\n\u00d5nneks pakub Apple kaasaegsetes macOS'i versioonides uut API-d protsesside haldamiseks. Endpoint Security API v\u00f5imaldab klientidel autoriseerida mitmeid p\u00e4ringuid teistele protsessidele. Nii on v\u00f5imalik blokeerida k\u00f5ik signaalid protsessidele, sealhulgas SIGKILL signaali \u00fclaltoodud API abil.<\/p>\n<pre><code class=\"cpp\">#include &lt;bsm\/libbsm.h&gt;\n#include &lt;EndpointSecurity\/EndpointSecurity.h&gt;\n#include &lt;unistd.h&gt;\n\nint main(int argc, const char * argv[]) {\n    es_client_t* cli = nullptr;\n    {\n        auto res = es_new_client(&amp;cli, ^(es_client_t * client, const es_message_t * message) {\n            switch (message-&gt;event_type) {\n                case ES_EVENT_TYPE_AUTH_SIGNAL:\n                {\n                    auto&amp; msg = message-&gt;event.signal;\n                    auto target = msg.target;\n                    auto&amp; token = target-&gt;audit_token;\n                    auto pid = audit_token_to_pid(token);\n                    printf(&quot;signal '%d' sent to pid '%d'n&quot;, msg.sig, pid);\n                    es_respond_auth_result(client, message, pid == getpid() ? ES_AUTH_RESULT_DENY : ES_AUTH_RESULT_ALLOW, false);\n                }\n                    break;\n                default:\n                    break;\n            }\n        });\n    }\n\n    {\n        es_event_type_t evs[] = { ES_EVENT_TYPE_AUTH_SIGNAL };\n        es_subscribe(cli, evs, sizeof(evs) \/ sizeof(*evs));\n    }\n\n    printf(&quot;%dn&quot;, getpid());\n    sleep(60); \/\/ could be replaced with other waiting primitive\n\n    es_unsubscribe_all(cli);\n    es_delete_client(cli);\n\n    return 0;\n}\n<\/code><\/pre>\n<p>\nSarnaselt on tuumas v\u00f5imalik registreerida MAC Policy, mis pakub meetodi signaalide kaitsmiseks (policy proc_check_signal), kuid API-d ei toetata ametlikult.<\/p>\n<h3>Tuuma laiendi kaitse<\/h3>\n<p>\nLisaks s\u00fcsteemi protsesside kaitsmisele on vajalik ka tuumalaienemise (kext) enda kaitse. macOS pakub arendajatele IOKit seadme draiverite mugavaks arendamiseks raamistikku. IOKit mitte ainult ei paku vahendeid seadmete haldamiseks, vaid tagab ka draiverite virnastamise meetodid C++ klasside eksemplaride abil. Userspace'i rakendus suudab \"leida\" registreeritud klassi eksemplari, et luua side kernel-user space'iga.<\/p>\n<p>Klasside eksemplaride arvu leidmiseks s\u00fcsteemis on saadaval utiliit ioclasscount.<\/p>\n<pre><code class=\"cpp\">my_kext_ioservice = 1\nmy_kext_iouserclient = 1\n<\/code><\/pre>\n<p>\nIga tuumalaienemine, mis soovib registreerida end draiverite virnas, peab kuulutama klassi, mis on p\u00e4randatud IOService'ist, n\u00e4iteks my_kext_ioservice antud juhul. Kohandatud rakenduste \u00fchendamine kutsub esile uue klassi eksemplari loomise, mis on p\u00e4randatud IOUserClient'ist, n\u00e4ites my_kext_iouserclient.<\/p>\n<p>Draiveri s\u00fcsteemist v\u00e4ljakandmise katse (k\u00e4sk kextunload) kutsub esile virtuaalse funktsiooni \"bool terminate(IOOptionBits options)\". Piisab, kui tagastada false terminate-funktsiooni kutsumise kaudu, et keelata kextunload.<\/p>\n<pre><code class=\"cpp\">bool Kext::terminate(IOOptionBits options)\n{\n\n  if (!IsUnloadAllowed)\n  {\n    \/\/ V\u00e4lja laadimine ei ole lubatud, tagastame false\n    return false;\n  }\n\n  return super::terminate(options);\n}\n\n<\/code><\/pre>\n<p>\nIsUnloadAllowed lipp v\u00f5ib olla seadistatud IOUserClient'i poolt laadimise ajal. Kui laadimine on piiratud, tagastab k\u00e4sk kextunload j\u00e4rgmise v\u00e4ljundi:<\/p>\n<pre><code class=\"cpp\">admin@admins-Mac drivermanager % sudo kextunload .\/test.kext\nParool:\n(kernel) Ei saa eemaldada kext my.kext.test; teenused ei suutnud l\u00f5petada - 0xe00002c7.\nEba\u00f5nnestus my.kext.test v\u00e4ljaloadimine - (iokit\/common) toetamata funktsioon.\n<\/code><\/pre>\n<p>\nSarnane kaitse tuleb teostada ka IOUserClient'i jaoks. Klasside eksemplaride v\u00e4ljaladimine on v\u00f5imalik userspace'i funktsiooni IOKitLib abil \"IOCatalogueTerminate(mach_port_t, uint32_t flag, io_name_t description);\". V\u00f5ib tagastada false k\u00e4skluse \"terminate\" kutsumise ajal, kuni userspace'i rakendus ei \"sure\", st kuni ei kutsuta funktsiooni \"clientDied\".<\/p>\n<h3>Failide kaitse<\/h3>\n<p>\nFailide kaitsmiseks piisab Kauth API kasutamisest, mis v\u00f5imaldab piirata failidele juurdep\u00e4\u00e4su. Apple annab arendajatele teateid erinevate s\u00fcndmuste kohta ulatuses, mille jaoks on meie jaoks olulised toimingud KAUTH_VNODE_DELETE, KAUTH_VNODE_WRITE_DATA ja KAUTH_VNODE_DELETE_CHILD. Failidele juurdep\u00e4\u00e4su piiramine on k\u00f5ige lihtsam tee kaudu \u2014 kasutame API-d \u201cvn_getpath\u201d faili tee saamiseks ja v\u00f5rdsustame tee prefiksit. Tuleb m\u00e4rkida, et kaustade ja failide nimede muutmise optimeerimise eesm\u00e4rgil ei autoriseeri s\u00fcsteem juurdep\u00e4\u00e4su igale failile, vaid ainult kaustale, mida muudetakse. On vajalik v\u00f5rrelda vanema tee ja piirata KAUTH_VNODE_DELETE selle jaoks.<\/p>\n<p><img decoding=\"async\" alt=\"Kuidas kaitsta protsesse ja tuuma laiendusi macOS-is\" src=\"\/wp-content\/uploads\/2020\/04\/409cf53d1cdbeee6a6f56f5c90574bf6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSelle l\u00e4henemise puuduseks v\u00f5ib olla madal j\u00f5udlus, kui prefiksite arv suureneb. Selleks, et v\u00f5rreldud ei oleks O(prefix*length), kus prefix \u2014 prefiksite arv, length \u2014 stringi pikkus, saab kasutada m\u00e4\u00e4ratletud l\u00f5ppautomaat (DKA), mis on ehitatud prefiksite p\u00f5hjal. <\/p>\n<p>Vaatleme DKA ehitamise viisi antud prefiksite kogumile. Algatame kursoreid iga prefiksi alguses. Kui k\u00f5ik kursored osutavad samale s\u00fcmbolile, siis t\u00f5stame iga kursori \u00fche s\u00fcmboli v\u00f5rra ja m\u00e4letame, et sama pikkuse rida on suurem \u00fchesed. Kui on kaks kursorit, mille all olevad s\u00fcmbolid erinevad, jagame kursoreid gruppideks s\u00fcmboli j\u00e4rgi, millele nad osutavad, ja kordame algoritmi iga grupi jaoks.<\/p>\n<p>Esimesel juhul (kui k\u00f5ik s\u00fcmbolid kursoreid all on samad) saame DKA oleku, millel on ainult \u00fcks \u00fcleminek sama pika rea juurde. Teisel juhul saame \u00fcleminekute tabeli, mille suurus on 256 (s\u00fcmbolite arv ja maksimaalne gruppide arv) j\u00e4rgmistele olekutele, mis saadakse funktsiooni rekursiivsel kutsel.<\/p>\n<p>Vaatleme n\u00e4idet. Antud prefiksite kogumi (\u201c\/foo\/bar\/tmp\/\u201d, \u201c\/var\/db\/foo\/\u201d, \u201c\/foo\/bar\/aba\/\u201d, \u201cfoo\/bar\/aac\/\u201d) korral saab DKA-d. Joonisel on esitatud ainult \u00fcleminekud, mis viivad teistesse olekutesse, teised \u00fcleminekud ei ole l\u00f5plikud.<\/p>\n<p><img decoding=\"async\" alt=\"Kuidas kaitsta protsesse ja tuuma laiendusi macOS-is\" src=\"\/wp-content\/uploads\/2020\/04\/6f5c4734ee6c677749f2f7b55307549d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDKA olekute l\u00e4bimise k\u00e4igus v\u00f5ib esineda 3 juhtumit.<\/p>\n<ol>\n<li>Oleme j\u00f5udnud l\u00f5ppolekusse \u2014 tee on kaitstud, piirame toimingute KAUTH_VNODE_DELETE, KAUTH_VNODE_WRITE_DATA ja KAUTH_VNODE_DELETE_CHILD teostamist.<\/li>\n<li>L\u00f5ppseisundit ei saavutatud, kuid tee \"l\u00f5ppes\" (null-terminaator saavutati) \u2014 tee on vanem, KAUTH_VNODE_DELETE tuleb piirata. Oluline on m\u00e4rkida, et kui vnode on kaust, tuleb l\u00f5ppu lisada \u2018\/\u2019, sest vastasel juhul v\u00f5ib piirang kehtida failile \u201c\/foor\/bar\/t\u201d, mis ei ole \u00f5ige.<\/li>\n<li>L\u00f5ppseisundit ei saavutatud, tee ei l\u00f5petanud. \u00dckski eelnevatest ei vasta antud, piiranguid ei kehtestata.<\/li>\n<\/ol>\n<p><\/p>\n<h3>Kokkuv\u00f5te<\/h3>\n<p>\nArendatavate turvaratsete eesm\u00e4rk on t\u00f5sta kasutaja ja tema andmete turvalisuse taset. \u00dchelt poolt saavutatakse see eesm\u00e4rk Acronis tarkvara arendamisega, mis katab need haavatavused, kus operatsioonis\u00fcsteem ise on \u201cn\u00f5rk\u201d. Teiselt poolt ei tohi alahinnata ka OS k\u00fclje turvaelementide tugevdamist, kuna selliste haavatavuste likvideerimine suurendab meie toote vastupidavust. Haavatavus teavitati Apple'i toote turvameeskonnale ja see parandati macOS 10.14.5 versioonis (https:\/\/support.apple.com\/en-gb\/HT210119).<\/p>\n<p><img decoding=\"async\" alt=\"Kuidas kaitsta protsesse ja tuuma laiendusi macOS-is\" src=\"\/wp-content\/uploads\/2020\/04\/98cd51cb47a81e8262a87bc792d59455.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSeda k\u00f5ike saab teha ainult siis, kui teie t\u00f6\u00f6riist on ametlikult installitud s\u00fcsteemi. Ehkki v\u00e4listel ja soovimatutel tarkvaradel ei ole selliseid tagavee tee. Kuidas aga n\u00e4ha, isegi \u00f5igustatud programmide, nagu viiruset\u00f5rje ja varunduss\u00fcsteemide kaitsmiseks peab vaeva n\u00e4gema. Kuid n\u00fc\u00fcd on Acronis uued tooted macOS-i jaoks varustatud t\u00e4iendava kaitsega s\u00fcsteemist laadimise eest.<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/acronis\/blog\/497714\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043e\u0442 \u043f\u043e\u0441\u044f\u0433\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u043e\u0432 \u0432 macOS. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u0430 \u0438\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 \u0441\u0432\u0435\u0442\u0435 \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u043f\u043e\u0434 macOS \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u201c\u0443\u0431\u0438\u0442\u044c\u201d \u043f\u0440\u043e\u0446\u0435\u0441\u0441. \u041e\u0431 \u044d\u0442\u043e\u043c \u0438 \u043e \u043c\u0435\u0442\u043e\u0434\u0430\u0445 \u0437\u0430\u0449\u0438\u0442\u044b \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c. \u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u201c\u0443\u0431\u0438\u0442\u044c\u201d \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0412\u0441\u0435\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":78515,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-78514","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043e\u0442 \u043f\u043e\u0441\u044f\u0433\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u043e\u0432 \u0432 macOS.\" \/>\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\/et\/blog\/administrirovanie\/kak-zashhishhat-proczessy-i-rasshireniya-yadra-v-macos\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\u041a\u0430\u043a \u0437\u0430\u0449\u0438\u0449\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u044f\u0434\u0440\u0430 \u0432 macOS | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043e\u0442 \u043f\u043e\u0441\u044f\u0433\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u043e\u0432 \u0432 macOS.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kak-zashhishhat-proczessy-i-rasshireniya-yadra-v-macos\" \/>\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=\"2020-04-19T23:42:32+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-19T23:42:32+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\udd47Kuidas kaitsta protsesse ja juhtme extensioone macOS-is | ProHoster","description":"Tere, Habr! T\u00e4na tahaksin r\u00e4\u00e4kida, kuidas kaitsta protsesse kurjategijate r\u00fcnnakute eest macOS-is.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kak-zashhishhat-proczessy-i-rasshireniya-yadra-v-macos","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\u041a\u0430\u043a \u0437\u0430\u0449\u0438\u0449\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u044f\u0434\u0440\u0430 \u0432 macOS | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043e\u0442 \u043f\u043e\u0441\u044f\u0433\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u043e\u0432 \u0432 macOS.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kak-zashhishhat-proczessy-i-rasshireniya-yadra-v-macos","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":"2020-04-19T23:42:32+00:00","article:modified_time":"2020-04-19T23:42:32+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"78514","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":"","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 16:56:36","updated":"2022-09-28 22:19:40","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/78514","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=78514"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/78514\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/78515"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=78514"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=78514"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=78514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}