{"id":31240,"date":"2019-10-31T21:40:13","date_gmt":"2019-10-31T18:40:13","guid":{"rendered":"https:\/\/prohoster.info\/blog\/linux-quest-pozdravlyaem-pobeditelej-i-rasskazyvaem-pro-resheniya-zadanij\/"},"modified":"2019-10-31T21:40:13","modified_gmt":"2019-10-31T18:40:13","slug":"linux-quest-pozdravlyaem-pobeditelej-i-rasskazyvaem-pro-resheniya-zadanij","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/linux-quest-pozdravlyaem-pobeditelej-i-rasskazyvaem-pro-resheniya-zadanij","title":{"rendered":"Linux Quest. Parab\u00e9ns aos vencedores e solu\u00e7\u00f5es para as tarefas","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Linux Quest. Parab\u00e9ns aos vencedores e solu\u00e7\u00f5es para as tarefas\" src=\"\/wp-content\/uploads\/2019\/04\/a8c28d0ba562680119475609a56136d6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNo dia 25 de mar\u00e7o, abrimos as inscri\u00e7\u00f5es para <noindex><a rel=\"nofollow\" href=\"https:\/\/linux.mail.ru\">Linux Quest<\/a><\/noindex>, um jogo para amantes e conhecedores do sistema operacional Linux. Um pouco de estat\u00edsticas: 1117 pessoas se inscreveram para o jogo, das quais 317 encontraram pelo menos uma chave, 241 conseguiram completar a primeira etapa, 123 a segunda e 70 passaram pela terceira etapa. Hoje, nosso jogo chega ao fim e parabenizamos os vencedores! <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ul>\n<li><b>A primeira posi\u00e7\u00e3o foi conquistada por Alexander Teldikov.<\/b><br \/>\nAlexander disse sobre si mesmo que \u00e9 o t\u00edpico administrador de sistemas. Mora em Volgogrado e faz a administra\u00e7\u00e3o de v\u00e1rios sistemas Unix-like h\u00e1 cerca de 20 anos. J\u00e1 trabalhou em provedores de internet, bancos e integradores de sistemas. Atualmente, trabalha remotamente em uma pequena empresa, cuidando da infraestrutura de nuvem para um grande cliente estrangeiro. Gosta de ler e ouvir m\u00fasica. Sobre o jogo, Alexander comentou que gostou em geral, ele aprecia esse tipo de desafio. Em uma das empresas, durante uma entrevista, fez algo parecido com Hackerrank, e foi interessante.<\/li>\n<li><b>A segunda posi\u00e7\u00e3o \u2014 Roman Suslov.<\/b><br \/>\nRoman \u00e9 de Moscovo. Ele tem 37 anos. Trabalha como engenheiro Linux\/Unix na empresa 'Infossistemas Jet'. No trabalho, precisa lidar com a administra\u00e7\u00e3o e solu\u00e7\u00e3o de problemas de sistemas Linux\/Unix + SAN. Seus interesses s\u00e3o variados: sistemas Linux, programa\u00e7\u00e3o, engenharia reversa, seguran\u00e7a da informa\u00e7\u00e3o, Arduino. Sobre o jogo, Roman ressaltou que gostou em geral. \"Exercitei um pouco minha mente e me distrai da rotina cinza do trabalho cotidiano. \ud83d\ude42 Gostaria de ver mais \u0437\u0430\u0434\u0430\u043d\u0438\u044f, pois n\u00e3o consegui entrar no ritmo antes que o jogo j\u00e1 acabasse.\"<\/li>\n<li><b>Terceiro \u2014 alex3d.<\/b><br \/>\nAlex vive em Moscovo e trabalha com desenvolvimento de software. \"Obrigado pelo contest, foi interessante testar minha habilidade de google-fu.\"<\/li>\n<\/ul>\n<p>\nAl\u00e9m disso, no ranking dos 10 melhores jogadores:<\/p>\n<ul>\n<li>Yevgeniy Saldayev<\/li>\n<li>Markel Mohnachevski<\/li>\n<li>Konstantin Konosov<\/li>\n<li>Pavel Sergeyev<\/li>\n<li>Vladimir Bovaev<\/li>\n<li>Ivan Bubnov<\/li>\n<li>Pavlo Klets<\/li>\n<\/ul>\n<p>\nEntendemos que h\u00e1 muitas maneiras de resolver nossas tarefas, abaixo est\u00e3o algumas das poss\u00edveis solu\u00e7\u00f5es. <\/p>\n<h3>1. Primeira etapa <\/h3>\n<p>\nN\u00f3s a chamamos de 'Voc\u00ea realmente \u00e9 um admin?', pois a tarefa era bastante simples \u2014 consertar um servi\u00e7o quentinho e acolhedor.<\/p>\n<h4>1.1. Fatos interessantes:<\/h4>\n<p>\nDois jogadores encontraram a primeira chave nos primeiros 15 minutos do jogo, e na primeira hora, tr\u00eas l\u00edderes apareceram, que completaram a tarefa. <\/p>\n<h4>1.2. Tarefa<\/h4>\n<p>\nVoc\u00ea come\u00e7ou a trabalhar em uma empresa onde, por muito tempo, n\u00e3o havia um especialista qualificado em tecnologia da informa\u00e7\u00e3o. Antes de come\u00e7ar a organizar as coisas, \u00e9 necess\u00e1rio resolver um problema urgente que est\u00e1 bloqueando o funcionamento do escrit\u00f3rio.<\/p>\n<p>A faxineira prendeu o cabo de alimenta\u00e7\u00e3o do servidor com o mop. A energia foi restaurada, mas um site da web muito importante ainda n\u00e3o est\u00e1 funcionando. Este site \u00e9 importante porque a empresa n\u00e3o se preocupa muito com a seguran\u00e7a da informa\u00e7\u00e3o, e na p\u00e1gina principal pode-se encontrar abertamente a senha de administrador do computador do diretor geral.<\/p>\n<p>Recentemente, a senha foi alterada, mas ningu\u00e9m se lembra da nova, e o diretor n\u00e3o consegue trabalhar. H\u00e1 rumores de que nessa m\u00e1quina havia tamb\u00e9m chaves que poderiam nos ajudar a decifrar o backup dos documentos cont\u00e1beis.<\/p>\n<p>Todos est\u00e3o aguardando uma solu\u00e7\u00e3o r\u00e1pida para a quest\u00e3o!<\/p>\n<h4>1.3. Solu\u00e7\u00e3o<\/h4>\n<p>\n1. Primeiro, precisamos alterar a senha root da m\u00e1quina virtual para poder acess\u00e1-la. Ao iniciar, percebemos que \u00e9 o Ubuntu 16.04 Server.<\/p>\n<p>Para redefinir a senha do root, reinicializamos a m\u00e1quina, e durante a inicializa\u00e7\u00e3o, no momento em que o menu do grub aparece, entramos no modo de edi\u00e7\u00e3o do item Ubuntu pressionando a tecla \u00abe\u00bb. Editamos a linha linux, adicionando ao final <code>init=\\\/bin\\\/bash<\/code>. Iniciamos atrav\u00e9s de Ctrl+x e obtemos o shell. Remontamos a raiz como rw e alteramos a senha:<\/p>\n<pre><code class=\"bash\">$ mount -o remount,rw \\\/dev\\\/mapper\\\/ubuntu--vg-root\n$ passwd<\/code><\/pre>\n<p>\nN\u00e3o esque\u00e7amos do sync, vamos reiniciar.<\/p>\n<p>2. Nas condi\u00e7\u00f5es, \u00e9 dito que nosso servidor web n\u00e3o est\u00e1 funcionando, ent\u00e3o vamos verificar:<\/p>\n<pre><code class=\"bash\">$ curl localhost\nNot Found\nThe requested URL \\\/ was not found on this server.\nApache\\\/2.4.18 <\/code><\/pre>\n<p>\nOu seja, na verdade, o Apache est\u00e1 em execu\u00e7\u00e3o, mas responde com um c\u00f3digo 404. Vamos verificar o config:<\/p>\n<pre><code class=\"bash\">$ vim \\\/etc\\\/apache2\\\/sites-enabled\\\/000-default.conf<\/code><\/pre>\n<p>\nAqui est\u00e1 a chave \u2014 StevenPaulSteveJobs.<\/p>\n<p>Verificamos o caminho <code>\/usr\/share\/WordPress<\/code> \u2014 que n\u00e3o existe, mas h\u00e1 <code>\/usr\/share\/wordpress<\/code>. Corrigimos o config e reiniciamos o Apache.<\/p>\n<pre><code class=\"bash\">$ systemctl restart apache2<\/code><\/pre>\n<p>\n3. Tentamos novamente, e recebemos o erro:<\/p>\n<pre><code class=\"bash\">Warning: mysqli_real_connect(): (HY000\\\/2002): Connection refused in \\\/usr\\\/share\\\/wordpress\\\/wp-includes\\\/wp-db.php on line 1488<\/code><\/pre>\n<p>\nO banco de dados n\u00e3o est\u00e1 rodando?<\/p>\n<pre><code class=\"bash\">$ systemctl status mysql\\nActive: active (running)<\/code><\/pre>\n<p>\nQual \u00e9 o problema ent\u00e3o? Precisamos investigar. Para isso, devemos acessar o MySQL, como descrito em <noindex><a rel=\"nofollow\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/resetting-permissions.html\">documenta\u00e7\u00e3o<\/a><\/noindex>. Um dos pontos da documenta\u00e7\u00e3o nos recomenda incluir a op\u00e7\u00e3o <code>skip-grant-tables<\/code> em <code>\/etc\/mysql\/mysql.conf.d\/mysqld.cnf<\/code>. Aqui tamb\u00e9m encontramos a chave \u2014 AugustaAdaKingByron.<\/p>\n<p>Corrigimos as permiss\u00f5es para o usu\u00e1rio <code>'wp'@'localhost'<\/code>. Iniciamos o MySQL, tornando-o acess\u00edvel pela rede, comentando a op\u00e7\u00e3o no config <code>skip-networking<\/code>.<\/p>\n<p>4. Ap\u00f3s as a\u00e7\u00f5es realizadas, o servidor web \u00e9 iniciado, mas o site ainda n\u00e3o est\u00e1 funcionando, pois <\/p>\n<pre><code class=\"bash\">Aviso: require_once( \/usr\/share\/wordpress\/wp-content\/themes\/twentysixteen\/footer.php): falha ao abrir fluxo: Permiss\u00e3o negada em \/usr\/share\/wordpress\/wp-includes\/template.php na linha 562<\/code><\/pre>\n<p>\nAlteramos as permiss\u00f5es do arquivo.<\/p>\n<pre><code class=\"bash\">$ chmod 644 \/usr\/share\/wordpress\/wp-content\/themes\/twentysixteen\/footer.php\n<\/code><\/pre>\n<p>\nAtualizamos a p\u00e1gina, acessamos o site e encontramos a chave \u2014 BjarneStroustrup! Encontramos as tr\u00eas chaves, nosso diretor pode trabalhar, deciframos os arquivos cont\u00e1beis. Todos est\u00e3o felizes, e voc\u00ea ainda tem muito trabalho pela frente para estabelecer a infraestrutura, backups e seguran\u00e7a na empresa. <\/p>\n<h3>2. Segunda Etapa<\/h3>\n<p>\nEra necess\u00e1rio resolver a tarefa sobre a coleta de an\u00e1lises. Todos amam an\u00e1lises \u2014 quem e de onde e em quantidades est\u00e3o acessando. Pensamos em um caso, mas com o qual todos os engenheiros podem se deparar de alguma forma na vida.<\/p>\n<h4>2.1. Fatos Interessantes<\/h4>\n<p>\nUm dos nossos jogadores inseriu a chave certa nos primeiros 10 minutos do jogo, e na primeira hora tivemos um l\u00edder que completou a tarefa.<\/p>\n<h4>2.2. Tarefa<\/h4>\n<p>\nVoc\u00ea come\u00e7ou a trabalhar na empresa, vieram gerentes e pediram para descobrir para quem foram enviados os e-mails da \u00c1frica. \u00c9 necess\u00e1rio construir um top-21 de endere\u00e7os de destinat\u00e1rios a partir deles. As primeiras letras dos endere\u00e7os dos destinat\u00e1rios s\u00e3o a chave. Um por\u00e9m: o servidor de correio, pelo qual os e-mails foram enviados, n\u00e3o est\u00e1 carregando. Todos aguardam uma solu\u00e7\u00e3o r\u00e1pida para a quest\u00e3o!<\/p>\n<h4>2.3. Solu\u00e7\u00e3o<\/h4>\n<p>\n1. O servidor n\u00e3o est\u00e1 carregando devido \u00e0 se\u00e7\u00e3o de swap inexistente no fstab, ao carregar, o sistema tenta mont\u00e1-la e falha. Como iniciar?<\/p>\n<p>Baixamos a imagem, baixamos o CentOS 7, iniciamos com Live CD\/DVD (Solu\u00e7\u00e3o de Problemas -&gt; Resgate), montamos o sistema, corrigimos <code>\/etc\/fstab<\/code>Aqui encontramos a primeira chave \u2014 GottfriedWilhelm11646Leibniz!<\/p>\n<p>Criamos o swap:<\/p>\n<pre><code class=\"bash\">$ lvcreate -n swap centos -L 256M\n$ sync &amp;&amp; reboot<\/code><\/pre>\n<p>\n2. Como sempre, n\u00e3o h\u00e1 senha, precisamos mudar a senha do root na m\u00e1quina virtual. J\u00e1 fizemos isso na primeira tarefa. Mudamos e conseguimos acessar o servidor, mas ele imediatamente reinicia. O servidor reinicia t\u00e3o rapidamente que nem conseguimos olhar todos os logs com aten\u00e7\u00e3o. Como entender o que est\u00e1 acontecendo?<\/p>\n<p>Novamente, iniciamos com livecd, analisamos atentamente os logs do sistema e, por precau\u00e7\u00e3o, damos uma olhada no cron, dada tal periodicidade. L\u00e1 encontramos o problema e a segunda chave \u2014 Alan1912MathisonTuring!<\/p>\n<p>\u00c9 necess\u00e1rio <code>\/etc\/crontab<\/code> remover ou comentar a linha <code>echo b &gt; \/proc\/sysrq-trigger<\/code>.<\/p>\n<p>3. Ap\u00f3s o servidor ser inicializado, podemos executar a tarefa dos gerentes: \"Quais s\u00e3o os endere\u00e7os da \u00c1frica?\" Essas informa\u00e7\u00f5es s\u00e3o geralmente p\u00fablicas. \u00c9 poss\u00edvel encontr\u00e1-las na internet atrav\u00e9s das express\u00f5es \"endere\u00e7o IP \u00c1frica\", \"banco de dados geoip\". Para resolver a tarefa, podem-se usar bancos de dados de distribui\u00e7\u00e3o de endere\u00e7os dispon\u00edveis gratuitamente (geoip). Como refer\u00eancia, utilizamos o DB <noindex><a rel=\"nofollow\" href=\"https:\/\/dev.maxmind.com\/geoip\/geoip2\/geolite2\/\">MaxMind GeoLite2<\/a><\/noindex>, dispon\u00edvel sob a licen\u00e7a Creative Commons Attribution-ShareAlike 4.0.<\/p>\n<p>Vamos tentar resolver nossa tarefa usando apenas utilit\u00e1rios do Linux, mas, na verdade, existem v\u00e1rias formas de solucion\u00e1-la: utilizando utilit\u00e1rios de filtragem de texto e scripts em v\u00e1rias linguagens de programa\u00e7\u00e3o.<\/p>\n<p>Para come\u00e7ar, vamos obter pares \"IP do remetente - destinat\u00e1rio\" do log de e-mails <code>\/var\/log\/maillog<\/code> (vamos construir uma tabela de destinat\u00e1rios de e-mail - IP do remetente). Isso pode ser feito com o seguinte comando:<\/p>\n<pre><code class=\"bash\">$ cat \/var\/log\/maillog | fgrep -e ' connect from' -e 'status=sent' | sed 's\/[][]\/ \/g' | awk '\/connect from\/ {ip=$11} \/status=sent\/ {print $10\" \"ip}' &gt; log1.txt<\/code><\/pre>\n<p>\nE antes de continuarmos com a compila\u00e7\u00e3o do Banco de Dados de endere\u00e7os da \u00c1frica, vamos dar uma olhada nos principais IPs dos remetentes.<\/p>\n<pre><code class=\"bash\">$ cat log1.txt | cut -d' ' -f1 | sort | uniq -c | sort -r | head -n 40\n5206 L2JhbjAbM67GA99jg@mail.ru\n4165 iHKTBkegOQa6fIALq@mail.ru\n3739 nHkcBl7BdgXxijSYD7@mail.ru\n3405 SMAzPJAzbl9vp4hAXo@mail.ru\n3346 xILz6d7P@mail.ru\n<\/code><\/pre>\n<p>\nEntre todos, destacam-se os tr\u00eas primeiros destinat\u00e1rios com o maior n\u00famero de e-mails. Se buscarmos os endere\u00e7os IP dos remetentes que enviaram para os endere\u00e7os desse top 3, podemos notar um claro predom\u00ednio de certas redes:<\/p>\n<pre><code class=\"bash\">$ cat log1.txt | fgrep 'L2JhbjAbM67GA99jg@mail.ru' | cut -d' ' -f2 | sort | cut -d'.' -f1 | uniq -c | sort -r | head\n831 105\n806 41\n782 197\n664 196\n542 154\n503 102\n266 156\n165 45\n150 160\n108 165<\/code><\/pre>\n<p>\nA maior parte das redes 105\/8, 41\/8, 196\/8, 197\/8 \u00e9 alocada pela AFRINIC \u2014 um dos cinco registradores regionais da internet que realizam a distribui\u00e7\u00e3o de recursos da internet. A AFRINIC distribui o espa\u00e7o de endere\u00e7os na regi\u00e3o da \u00c1frica. E 41\/8 pertence integralmente \u00e0 AFRINIC.<\/p>\n<pre><code class=\"bash\">https:\/\/www.nic.ru\/whois\/?searchWord=105.0.0.0 \nhttps:\/\/www.nic.ru\/whois\/?searchWord=41.0.0.0\n<\/code><\/pre>\n<p>\nAssim, a resposta para a tarefa est\u00e1, de fato, no pr\u00f3prio log.<\/p>\n<pre><code class=\"bash\">$ cat log1.txt | fgrep -e '105.' -e '41.' -e '196.' -e '197.' -e '154.' -e '102.' | awk '{print $1}' | sort | uniq -c | sort -r | head -n 21\n4209 L2JhbjAbM67GA99jg@mail.ru\n3313 iHKTBkegOQa6fIALq@mail.ru\n2704 nHkcBl7BdgXxijSYD7@mail.ru\n2215 uvRbp1O@mail.ru\n1774 sPmMsmmFiV@mail.ru\n1448 BtG3aHgQgCKuze2AKuRH@mail.ru\n1233 eQpuuQ2uQdbwRL3@mail.ru\n958 nJT5dpaBZ@mail.ru\n862 ef4WbQiB@mail.ru\n762 dQCqKL6eVminFfH7wLA@mail.ru\n632 ifq6Rd1HxuCQOdO9@mail.ru\n539 cFwm2ssypMmx1sA7@mail.ru\n531 twtTnr4G@mail.ru\n431 TSrczgYASrR11Hs3qCi@mail.ru\n380 o3r3exc3OL@mail.ru\n357 rzmjr2VAHK@mail.ru\n348 vnPr6YjJ3ndw@mail.ru\n312 anOjFXrwOtLP2Rl1Vcz6@mail.ru\n289 dvny5zHmRW8fiT@mail.ru\n282 sgg9jPxFDYvzw8Kr@mail.ru\n274 tKSevzA7GntJ@mail.ru<\/code><\/pre>\n<p>\nNeste est\u00e1gio, recebemos a string \u00abLinuxBenedictTorvadst\u00bb.<\/p>\n<p>A chave correta: \u00abLinusBenedictTorvalds\u00bb.<\/p>\n<p>A string obtida cont\u00e9m um erro em rela\u00e7\u00e3o \u00e0 chave correta nos 3 \u00faltimos caracteres. Isso se deve ao fato de que as redes selecionadas por n\u00f3s n\u00e3o est\u00e3o totalmente alocadas aos pa\u00edses da \u00c1frica e \u00e0 forma como os e-mails est\u00e3o distribu\u00eddos pelos endere\u00e7os IP em nosso log.<\/p>\n<p>Com um refinamento suficiente das maiores redes alocadas aos pa\u00edses da \u00c1frica, \u00e9 poss\u00edvel obter uma resposta precisa.:<\/p>\n<pre><code class=\"bash\">$ cat log1.txt | fgrep -e' '105.{30..255}. -e' '41. -e' '196.{64..47}. -e' '196.{248..132}. -e' '197.{160..31}. -e' '154.{127..255}. -e' '102.{70..255}. -e' '156.{155..255}. | awk '{print $1}' | sort | uniq -c | sort -r | head -n 21\n3350 L2JhbjAbM67GA99jg@mail.ru\n2662 iHKTBkegOQa6fIALq@mail.ru\n2105 nHkcBl7BdgXxijSYD7@mail.ru\n1724 uvRbp1O@mail.ru\n1376 sPmMsmmFiV@mail.ru\n1092 BtG3aHgQgCKuze2AKuRH@mail.ru\n849 eQpuuQ2uQdbwRL3@mail.ru\n712 nJT5dpaBZ@mail.ru\n584 ef4WbQiB@mail.ru\n463 dQCqKL6eVminFfH7wLA@mail.ru\n365 ifq6Rd1HxuCQOdO9@mail.ru\n269 cFwm2ssypMmx1sA7@mail.ru\n225 twtTnr4G@mail.ru\n168 TSrczgYASrR11Hs3qCi@mail.ru\n142 o3r3exc3OL@mail.ru\n111 rzmjr2VAHK@mail.ru\n 96 vnPr6YjJ3ndw@mail.ru\n 78 anOjFXrwOtLP2Rl1Vcz6@mail.ru\n 56 lHzWiB7ExvRtSbAcU9@mail.ru\n 56 dvny5zHmRW8fiT@mail.ru\n 40 sgg9jPxFDYvzw8Kr@mail.ru<\/code><\/pre>\n<p>\nA tarefa tamb\u00e9m pode ser resolvida de outra maneira.<br \/>\nBaixamos o MaxMind, descompactamos e os pr\u00f3ximos tr\u00eas comandos tamb\u00e9m resolvem nossa tarefa.<\/p>\n<pre><code class=\"bash\">$ cat GeoLite2-Country-Locations-ru.csv | grep \"\u00c1frica\" | cut -d',' -f1 &gt; africaIds.txt\n$ grep -Ff africaIds.txt GeoLite2-Country-Blocks-IPv4.csv | cut -d',' -f1 &gt; africaNetworks.txt\n$ grepcidr -f africaNetworks.txt log1.txt | cut -d' ' -f1 | sort | uniq -c | sort -r | head -n21\n<\/code><\/pre>\n<p>\nDe uma forma ou de outra, acabamos contando as estat\u00edsticas, e os gerentes obtiveram os dados necess\u00e1rios para o seu trabalho! <\/p>\n<h3>3. Terceira etapa<\/h3>\n<p>\nA terceira etapa \u00e9 um pouco parecida com a primeira \u2014 voc\u00ea tamb\u00e9m precisa consertar o servi\u00e7o quente a l\u00e2mpada, mas tudo \u00e9 mais complicado do que na primeira tarefa.<\/p>\n<h4>3.1. Fatos interessantes<\/h4>\n<p>\nNos primeiros 15 minutos, tr\u00eas jogadores encontraram a primeira chave, e 2 horas e 20 minutos ap\u00f3s o in\u00edcio da etapa, nosso vencedor resolveu a tarefa.<\/p>\n<h4>3.2. Tarefa<\/h4>\n<p>\nVoc\u00ea come\u00e7ou a trabalhar em uma empresa onde todos os documentos da empresa s\u00e3o armazenados em um servidor interno Wiki. No ano passado, um engenheiro encomendou 3 novos discos para o servidor, al\u00e9m de um existente, argumentando que, para garantir a resist\u00eancia a falhas do sistema, os discos precisam ser configurados em certos arranjos. Infelizmente, algumas semanas ap\u00f3s a instala\u00e7\u00e3o, o engenheiro foi de f\u00e9rias para a \u00cdndia e n\u00e3o retornou.<\/p>\n<p>Durante v\u00e1rios anos, o servidor funcionou sem falhas, mas h\u00e1 alguns dias a rede da empresa foi invadida. De acordo com as instru\u00e7\u00f5es, os funcion\u00e1rios de seguran\u00e7a removeram os discos do servidor e os enviaram para voc\u00ea. No processo de transporte, um disco foi irremediavelmente perdido.<\/p>\n<p>\u00c9 necess\u00e1rio restaurar a funcionalidade do Wiki, principalmente o conte\u00fado das p\u00e1ginas do wiki. Um trecho de texto que estava em uma das p\u00e1ginas desse wiki \u00e9 a senha do servidor 1C e \u00e9 urgentemente necess\u00e1rio para desbloque\u00e1-lo.<\/p>\n<p>Al\u00e9m disso, em algum lugar das p\u00e1ginas do wiki ou em outro local, estavam as senhas do servidor de logs e do servidor de videovigil\u00e2ncia, que tamb\u00e9m \u00e9 desej\u00e1vel recuperar, sem elas a investiga\u00e7\u00e3o do incidente \u00e9 imposs\u00edvel. Como sempre, esperam uma solu\u00e7\u00e3o r\u00e1pida para o problema!<\/p>\n<h4>3.3. Solu\u00e7\u00e3o<\/h4>\n<p>\n1. Tentamos inicializar sequencialmente a partir dos discos que temos e em todos recebemos a mesma mensagem:<\/p>\n<pre><code class=\"bash\">No bootable medium found! System halted \n<\/code><\/pre>\n<p>\n\u00c9 preciso inicializar de algum lugar. Novamente, a inicializa\u00e7\u00e3o a partir do Live CD\/DVD ajuda (Solu\u00e7\u00e3o de Problemas -&gt; Resgate). Ao inicializar, tentamos encontrar a parti\u00e7\u00e3o inicializ\u00e1vel, n\u00e3o conseguimos, e vamos parar no shell. Tentamos estudar como as coisas funcionam com os discos. Sabe-se que h\u00e1 tr\u00eas. Ferramentas para isso s\u00e3o mais abundantes na 7\u00aa vers\u00e3o do CentOS, onde existem comandos <code>blkid<\/code> ou <code>lsblk<\/code>, que nos mostram todas as informa\u00e7\u00f5es sobre os discos. <\/p>\n<p>Como e o que fazemos:<\/p>\n<pre><code class=\"bash\">$ ls \/dev\/sd*<\/code><\/pre>\n<p>\nLogo se v\u00ea que <\/p>\n<pre><code class=\"bash\">\/dev\/sdb1 - ext4\n\/dev\/sdb2 - \u0447\u0430\u0441\u0442\u044c lvm\n\/dev\/sda1 \u0438 \/dev\/sdc1 - \u0447\u0430\u0441\u0442\u0438 \u0440\u0435\u0439\u0434\u0430\n\/dev\/sda2 \u0438 \/dev\/sdc2 - \u043f\u0440\u043e \u043d\u0438\u0445 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442<\/code><\/pre>\n<p>\nMontamos sdb1, e fica claro que \u00e9 a parti\u00e7\u00e3o inicializ\u00e1vel do CentOS 6.<\/p>\n<pre><code class=\"bash\">$ mkdir \/mnt\/sdb1 &amp;&amp; mount \/dev\/sdb1 \/mnt\/sdb1<\/code><\/pre>\n<p>\nObviamente, vamos para a parti\u00e7\u00e3o grub e encontramos a primeira chave \u2014 James191955Gosling em um arquivo incomum.<\/p>\n<p>2. Estudamos pvs e lvs, j\u00e1 que estamos trabalhando com LVM. Vemos que deve haver 2 volumes f\u00edsicos, um n\u00e3o est\u00e1 presente e reclama de uid perdido. Vemos que deve haver 2 volumes l\u00f3gicos: root e swap, sendo que o root est\u00e1 parcialmente perdido (atributo P no volume). N\u00e3o conseguimos mont\u00e1-lo, o que \u00e9 uma pena! Precisamos muito dele.<\/p>\n<p>H\u00e1 mais 2 discos, olhamos para eles, reunimos e montamos:<\/p>\n<pre><code class=\"bash\">$ mdadm --examine --verbose --scan\n$ mdadm --assemble --verbose --scan\n$ mkdir \/mnt\/md127 &amp;&amp; mount \/dev\/md127 \/mnt\/md127 <\/code><\/pre>\n<p>\nObservamos que este \u00e9 a parti\u00e7\u00e3o inicializ\u00e1vel do CentOS 6 e uma duplicata do que j\u00e1 est\u00e1 em <code>\/dev\/sdb1<\/code>, e aqui novamente a mesma chave \u2014 DennisBMacAlistairCRitchie!<br \/>\nVemos como foi montado <code>\/dev\/md127<\/code>.<\/p>\n<pre><code class=\"bash\">$ mdadm --detail \/dev\/md127\n<\/code><\/pre>\n<p>\nVemos que deveria ter sido montado a partir de 4 discos, mas foi montado a partir de dois <code>\/dev\/sda1<\/code> e <code>\/dev\/sdc1<\/code>, que deveriam ser os n\u00fameros 2 e 4 no sistema. Presumimos que <code>\/dev\/sda2<\/code> e <code>\/dev\/sdc2<\/code> tamb\u00e9m pode-se formar um arranjo. N\u00e3o est\u00e1 claro por que n\u00e3o h\u00e1 metadados neles, mas isso \u00e9 responsabilidade do administrador que est\u00e1 em algum lugar em Goa. Presumimos que deve haver RAID10 aqui, embora haja op\u00e7\u00f5es. Montamos: <\/p>\n<pre><code class=\"bash\">$ mdadm --create --verbose \/dev\/md0 --assume-clean --level=10 --raid-devices=4 missing \/dev\/sda2 missing \/dev\/sdc2\n<\/code><\/pre>\n<p>\nVemos blkid, pvs, lvs. Descobrimos que montamos o volume f\u00edsico que nos faltava anteriormente.<\/p>\n<p>O lvroot foi corrigido imediatamente, vamos mont\u00e1-lo, mas primeiro ativamos o VG:<\/p>\n<pre><code class=\"bash\">$ vgchange -a y\n$ mkdir \/mnt\/lvroot &amp;&amp; mount \/dev\/mapper\/vg_c6m1-lv_root \/mnt\/lvroot \n<\/code><\/pre>\n<p>\nE l\u00e1 est\u00e1 tudo, incluindo a chave no diret\u00f3rio home do root \u2014 \/root\/sweet.<\/p>\n<p>3. Estamos tentando revive nosso servidor para que ele inicie normalmente. Todos os volumes l\u00f3gicos do nosso <code>\/dev\/md0<\/code> (onde encontramos tudo) est\u00e3o sendo movidos para <code>\/dev\/sdb2<\/code>, onde originalmente todo o servidor funcionava.<\/p>\n<pre><code class=\"bash\">$ pvmove \/dev\/md0 \/dev\/sdb2\n$ vgreduce vg_c6m1 \/dev\/md0<\/code><\/pre>\n<p>\nDesligamos o servidor, removemos os discos 1 e 3, deixamos o segundo, e iniciamos com um Live CD\/DVD em Rescue. Localizamos a parti\u00e7\u00e3o de inicializa\u00e7\u00e3o e restauramos o carregador de inicializa\u00e7\u00e3o no grub:<\/p>\n<pre><code class=\"bash\">root (hd0,0)\nsetup (hd0)\n<\/code><\/pre>\n<p>\nRemovemos o disco de inicializa\u00e7\u00e3o e conseguimos iniciar, mas o site n\u00e3o funciona.<\/p>\n<p>4. Existem duas op\u00e7\u00f5es para iniciar o site: configurar o Apache do zero ou usar o nginx j\u00e1 configurado com php-fpm:<\/p>\n<pre><code class=\"bash\">$ \/etc\/init.d\/nginx start\n$ \/etc\/init.d\/php-fpm start\n<\/code><\/pre>\n<p>\nFinalmente, precisamos iniciar o MySQL:<\/p>\n<pre><code class=\"bash\">$ \/etc\/init.d\/mysqld start<\/code><\/pre>\n<p>\nEle n\u00e3o inicia, e a solu\u00e7\u00e3o est\u00e1 em <code>\/var\/log\/mysql<\/code>. Assim que voc\u00ea resolver o problema com o MySQL, o site funcionar\u00e1, na p\u00e1gina inicial haver\u00e1 uma chave \u2014 RichardGCCMatthewGNUStallman! Agora temos acesso ao 1C, e os funcion\u00e1rios poder\u00e3o receber seus sal\u00e1rios. E voc\u00ea, como sempre, ainda tem muito trabalho pela frente para ajustar a infraestrutura e a seguran\u00e7a da empresa.<\/p>\n<p>Tamb\u00e9m podemos compartilhar novamente a lista de livros que ajudaram a n\u00f3s e nossos participantes a se prepararem para o jogo: <noindex><a rel=\"nofollow\" href=\"https:\/\/linux.mail.ru\/books\">linux.mail.ru\/books<\/a><\/noindex>.<\/p>\n<p>Obrigado por estarem conosco! Fiquem atentos \u00e0s not\u00edcias dos pr\u00f3ximos jogos!<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/447222\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>25 \u043c\u0430\u0440\u0442\u0430 \u043c\u044b \u043e\u0442\u043a\u0440\u044b\u043b\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044e \u043d\u0430 Linux Quest, \u044d\u0442\u043e \u0418\u0433\u0440\u0430 \u0434\u043b\u044f \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439 \u0438 \u0437\u043d\u0430\u0442\u043e\u043a\u043e\u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b Linux. \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438: \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043d\u0430 \u0438\u0433\u0440\u0443 1117 \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u0438\u0437 \u043d\u0438\u0445 317 \u2014 \u043d\u0430\u0448\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u043a\u043b\u044e\u0447, 241 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438\u0441\u044c \u0441 \u0437\u0430\u0434\u0430\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430, 123 \u2014 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0438 70 \u043f\u0440\u043e\u0448\u043b\u0438 \u0442\u0440\u0435\u0442\u0438\u0439 \u044d\u0442\u0430\u043f. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043d\u0430\u0448\u0430 \u0438\u0433\u0440\u0430 \u043f\u043e\u0434\u043e\u0448\u043b\u0430 \u043a \u043a\u043e\u043d\u0446\u0443, \u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23206,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31240","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.3 - aioseo.com -->\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\/pt\/blog\/administrirovanie\/linux-quest-pozdravlyaem-pobeditelej-i-rasskazyvaem-pro-resheniya-zadanij\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\udd47Linux Quest. \u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u0435\u0439 \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u0439 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/linux-quest-pozdravlyaem-pobeditelej-i-rasskazyvaem-pro-resheniya-zadanij\" \/>\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:40:13+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:40:13+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\udd47Linux Quest. Parab\u00e9ns aos vencedores e apresentamos as solu\u00e7\u00f5es das tarefas | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/linux-quest-pozdravlyaem-pobeditelej-i-rasskazyvaem-pro-resheniya-zadanij","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\udd47Linux Quest. \u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u0435\u0439 \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u0439 | ProHoster","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/linux-quest-pozdravlyaem-pobeditelej-i-rasskazyvaem-pro-resheniya-zadanij","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:40:13+00:00","article:modified_time":"2019-10-31T18:40:13+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31240","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":"2026-01-21 05:12:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:20:31","updated":"2026-01-21 05:12:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/31240","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=31240"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/31240\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/23206"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=31240"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=31240"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=31240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}