Настольные дистрибутивы Linux сегодня являются наиболее доступными для полных новичков, какими они когда-либо были. Не так давно было время, когда только по-настоящему бесстрашные любители компьютерных острых ощущений осмеливались установить Linux. Теперь можно не только установить Linux на большинство настольных или портативных компьютеров за 15 минут, но и передать его любому, кто плохо разбирается в том, как пользоваться компьютерами, и ожидать, что с ними все будет хорошо.
Все это говорит о том, что однажды попав в синюю луну, человек испытает настоящий ужас перед ошибочной системой Linux. Никакая боевая стойкость также не может обезопасить вас.
Я знаю это, потому что не так давно меня обнаружила пугающая ошибка Linux. Я хотел поделиться этой реальной историей о Linux, чтобы вы были проинформированы и развлечены. Из уважения к трудолюбивым разработчикам дистрибутивов Linux, которые допускают честные ошибки, я не буду называть проблемный дистрибутив, но, чтобы добавить зловещего оттенка, отмечу, что он стабильно входит в десятку лучших дистрибутивов DistroWatch в течение как минимум года.
Тем из вас, кто безоговорочно доверяет «мейнстримным» дистрибутивам: вас предупредили. Итак, давайте начнем.
Содержание статьи
Nowhere Safe
Однажды я решил опробовать дистрибутив, о котором много раз читал. Он также был основан на другом дистрибутиве, который мне очень понравился. Даже лучше. В просмотренных мной видеообзорах он получил высокие оценки и выглядел безупречно. Этого было достаточно, чтобы я захотел увидеть это сам.
Когда я попробовал его, все выглядело хорошо, за исключением одной странности. Где бы я ни находился в браузере, он говорил мне, что посещаемый мной веб-сайт небезопасен. Но так как я пытался просматривать сайты, которые, как я знал, заслуживают доверия, я просто сказал браузеру игнорировать предупреждения, и я был в пути. Это был знак, который я должен был отнестись к этому более серьезно, но, к роковой жизни, этого не сделал.
Я не был готов к установке этого дистрибутива, но, возможно, я смогу это сделать в будущем, — подумал я. Я ушел с достаточно приличным впечатлением и списал странные ошибки браузера на отсутствие обновления. В конце концов, несколько дистрибутивов, которые не работают по модели скользящего выпуска (и даже не все из них), будут публиковать новый установочный образ каждый раз, когда происходит обновление пакета — они публикуют свои основные выпуски каждые несколько месяцев или год и оставляют это пользователям запускать обновления.
Завершив тест, я загрузил операционную систему, постоянно установленную на диске моего компьютера, намереваясь заняться своими делами.
За исключением того, что сеть была нарушена.
NetworkManager, небольшая программа практически на каждой настольной системе Linux, которая заставляет вашу беспроводную карту взаимодействовать с контроллером сетевого интерфейса (NIC) другого устройства, выдавала ожидаемые результаты сканирования активных SSID с помощью беспроводной карты моего устройства, но это не позволило мне подключиться. Независимо от того, к какой сети я пытался подключиться, все попытки подключения терпели неудачу. Для всех этих точек доступа мой компьютер был призраком. Его даже не существовало.
Плохое обновление?
Думая, что может быть что-то не так с моей установленной ОС — возможно, я запустил плохое обновление, которое не вступило в силу до этой перезагрузки, я попытался успокоить себя — я загрузился в реальном времени через секунду , надежно стабильную ОС на базе Linux, чтобы увидеть, не возникнут ли у меня такие же сетевые проблемы. Но и это было бесполезно. Независимо от того, какие настройки я пытался изменить или сколько раз я перезапускал NetworkManager, мне не удавалось заставить его установить соединение ни с одной точкой доступа.
Затем я попытался запустить вживую третий дистрибутив, на котором был основан первый подозреваемый дистрибутив. На этот раз моя сеть работала нормально, хотя и с теми же предупреждениями о просмотре веб-страниц.
Если бы не эта передышка от полного бессвязного забвения, я бы полностью запаниковал. Что я собирался делать? Моя машина сломалась? Подобная проблема, которая сохранялась при загрузке, как при загрузке в реальном времени, так и при загрузке с «голого металла», предполагала, что я смотрел на самую суть аппаратной проблемы — и для ОС, вызывающей аппаратный сбой, очень страшно.
Но в то же время моя машина была в порядке во всех остальных отношениях. Во-первых, это было нормально до начальной загрузки. Во-вторых, я хорошо ухаживаю за своими устройствами, поэтому за неделю до этого инцидента я не сделал ничего, что могло бы повредить его, особенно таким образом, чтобы нарушить только эту конкретную функциональность и ничего больше.
Тайна разгадана
В моем безумном поиске неисправностей я не учел последний компромисс: прошивку. Когда я наконец осознал эту вопиющую оплошность, я поспешно загрузился в прошивку BIOS в поисках малейшей настройки, которая могла быть неуместной, и вот она: были изменены аппаратные часы. Что касается моего компьютера, то это было почти 100 лет в будущем.
Это объясняет предупреждения браузера. Сертификаты TLS, те, которые дают нам эти удобные значки замков в адресной строке браузера, имеют истекший срок. Обычно срок действия этих сертификатов истекает через два-три года, поэтому украденным сертификатом нельзя злоупотреблять, чтобы обмануть ничего не подозревающих пользователей на неопределенный срок. Логической системой отсчета для устройства при оценке действительности сертификата будут его собственные часы.
На моем компьютере истек срок действия всех сертификатов, которые можно было реально создать. Мой компьютер выполнил полную проверку Рипа Ван Винкля, проснувшись одной загрузкой и обнаружив, что все веб-сайты, которые он когда-либо знал, с криптографической точки зрения были мертвы.
Я не мог найти в Интернете ничего, подтверждающего, что неправильно настроенные аппаратные часы могут помешать работе NetworkManager, но такое было возможно, и я не мог придумать другого объяснения. Аппаратные часы — это индикатор, с помощью которого измеряются многие другие состояния оборудования. Было несложно предположить, что сетевая карта устройства была среди них. Не было ничего надуманным и думать, что "live-boot # 1" могла сбросить мои аппаратные часы.
Операционная система находится в пределах своих прав на доступ и в некоторых случаях даже на изменение значений встроенного программного обеспечения устройства. Это обычно включает аппаратные часы. Но для здравомыслия всех участников разработчики ОС должны сделать все возможное, чтобы доступ к микропрограммам был щадящим.
Повесть о двух часах
Почему я не заметил этого раньше, спросите вы? Одним словом, как и в любой хорошей истории ужасов, монстр не ускользнет прямо позади вас, когда вы впервые посмотрите.
Есть разница между аппаратными часами и системными часами. Это сделано для того, чтобы аппаратные часы, которые я к настоящему времени приобрел значительно больше, не меняются в мгновение ока.
Представьте, что вы часто путешествуете по миру. Хотели бы вы рискнуть совершить катастрофическую ошибку, подобную той, которую я терпел, каждый раз, когда вы меняли часовые пояса и настраивали часы? Думаю, нет. Итак, ОС обходит это, просто запоминая смещение между системными часами и часами оборудования.
Допустим, вы находитесь по восточному поясному времени. Если ваши аппаратные часы настроены на UTC, то, поскольку EST на 5 часов отстает от UTC, ваши системные часы просто вычтут 5 часов из ваших аппаратных часов, чтобы установить себя. Переход к стандартному тихоокеанскому времени просто побудит вашу систему сменить часы на 8 часов, отставая от всемирного координированного времени вместо прежних 5. Между тем, аппаратные часы не изменились.
Были ли системные часы в этом роковом дистрибутиве с прямой загрузкой так же искажены, как аппаратные часы, и я не заметил, или, судя по всему, с системными часами все было нормально, я никогда не узнаю. Все, что я знаю, это то, что как только я установил свои аппаратные часы, сеть снова заработала полностью нормально.
Как будто ничего не случилось.
Извлеченный урок
Если у этой истории есть мораль, то, возможно, она такова: эта опасность может таиться чуть ниже программного обеспечения, и вы никогда не узнаете, пока она не поразит. Или, возможно, дело в том, что нет компонента — программного, аппаратного или микропрограммного обеспечения — слишком незначительного, чтобы свергнуть всю систему.
Так или иначе, я с новой бдительностью отслеживаю тиканье аппаратных часов. Я отказываюсь жить в страхе — и вы не должны — и все же иногда пробую дистрибутивы. Но это просто означает, что выдерживать потенциальные риски, хотя они и малочисленны, не означает быть небрежным.
В качестве эпилога к этой истории, через несколько месяцев после того, как это произошло, я решил опубликовать это на форуме нарушившего дистрибутива, на случай, если проблема все еще не исчезнет. Каким бы маловероятным это ни было, это не было чем-то неслыханным.
Я разместил журнал ядра, который я вел, когда был в агонии этой смертельной борьбы, признал, что опоздал из-за нехватки времени (и самоуспокоенности облегчения после того, как я избежал своей опасности). Все ответившие пользователи заверили меня, что такое бедствие вряд ли могло произойти. Они считали меня сумасшедшим! (Не совсем, но позвольте мне проявить художественную свободу.)
Так что, может быть, это все было лихорадочным кошмаром. Но по сей день, когда я загружаю живой дистрибутив, я проверяю темный, заброшенный угол на предмет даты и времени.