Настройка сети, (сетевых карт) интерфейсов Ubuntu. Безопасный серфинг в Ubuntu Небезопасная авторизация x window ubuntu



Дата публикации: четверг, 18 декабря 2008
Перевод: Коваленко А.М.
Дата перевода: 7 августа 2009 г.

Существует общее убеждение, что если кто-то переходит на использование дистрибутива Linux, например, такого как Ubuntu на настольном компьютере, то проблемы обеспечения безопасности решаются сами собой. К сожалению, в реальности этого не происходит. Подобно любой сегодняшней операционной системе, в Ubuntu также существуют потенциальные цели для эксплойтов. Переполнение буфера, переполнение стека, "грязный" код, ошибки пользователей - и это неполный список угроз, который можно было бы еще продолжить. Для противодействия этим и другим возможным угрозам, я покажу вам, как выполнить простые шаги, которые гарантируют, что вы используете разумные стратегии для безопасной работы в Ubuntu.

Анти-вирусная защита?

Один из наиболее часто возникающих споров - использовать или нет на компьютерах с Linux защиту от вирусов. Мое мнение следующее: руткиты и вирусы, чьей целью является Linux, существуют на самом деле. С одной стороны, они - бледная тень чистого объема эксплойтов, нацеленных на Microsoft Windows, и отсюда становится понятным тот факт, что обманчивое чувство безопасности, появляющееся от такой статистики, усыпляет бдительность людей.
С другой стороны, и я хочу это подчеркнуть, - идея сканировать содержание вашего компьютера для поиска опасных вирусов очень здравая. Использование съемных носителей, дисков, электронной почты - каждое из этих действий вполне может привести к случайному получению вирусов совместно с пользователями Windows. Обратите внимание, что я не призываю к излишней подозрительности, но предупреждаю об опасности любого пользователя, в чью домашнюю сеть входят без предупреждения.
Поэтому я должен дать вам совет, логично проистекающий из вышеизложенного - используйте какую-либо программу (например, ClamAV) для выполнения еженедельного вирусного сканирования. Хотя сейчас мы и живем в окружении компьютеров Windows, выполнение еженедельного сканирования - это на самом деле та важная операция, о которой каждый должен не только помнить, но и которую непременно должен выполнять.

Защита от злонамеренного программного обеспечения?

Значительная угроза со стороны злонамеренного программного обеспечения все еще существует. В свете этого, уже сам по себе отказ от установки или запуска неизвестных приложений может оказать большую помощь. Весьма неразумно устанавливать подозрительную программу, которую вы не знаете, на любую из платформ путем "слепой" установки вновь обнаруженного программного обеспечения без его предварительного изучения. Потому, как в случае, если оно использует закрытый программный код - вы не сможете даже узнать, что же эта программа делает с вашим компьютером на самом деле.
Статьи на эту тему:
  • Облегчение написания скриптов SSH и SFTP с использованием Python
  • Сайт электронной коммерции Firefox + Greasemonkey Turbocharge со стороны клиента
  • Интерфейс командной строки Linux для начинающих, или, Не бойтесь командную строку Linux!
  • Графическое удаленное управление компьютерами для Linux, часть 3
Подобная угроза существует и со стороны web браузера, поэтому я полагаю, что просто отключив Java и отказавшись от "слепой" установки расширений Firefox, без предварительного их изучения, вы сможете практически избежать любой будущей угрозы установки злонамеренного ПО и с этой стороны. Объединив обе эти рекомендации вы убедитесь, что даже если однажды злонамеренное ПО и станет проблемой, вам будет уже гораздо легче диагностировать способ попадания его на ваш компьютер.

Возможности защиты с использованием брандмауэра

Как и для любой операционной системы подключенной к Интернет в наши дни, для ОС Ubuntu, использование брандмауэра - обязательно. Для пользователей Ubuntu это означает использование IPTables через UFW (Uncomplicated Firewall (Простой Брандмауэр)).
Грустно, что идею использования брандмауэра, как и большинство идей придуманных инженерами, обычные пользователи не считают "простой", а все по причине того, что брандмауэр требует использования командной строки. Эта очевидная брешь в удобстве использования привела к разработке графического интерфейса - Gufw .
Gufw обеспечивает очень простые возможности для включения/выключения настроек IPTables во всех современных инсталляциях Ubuntu. Gufw также позволяет буквально "одним щелчком" управлять портами, применяя заранее настроенные или расширенные опции перенаправления портов.
Использование этого вида защиты будет обеспечивать подходящий уровень безопасности брандмауэра практически сразу при первом запуске. К несчастью, сам по себе брандмауэр ничего не делает с трафиком, передаваемым через вашу сеть или даже через Интернет. Резюмирую, - брандмауэр - это скорее "привратник" на входе, чем "полицейский на мотоцикле", отлавливающий потенциальные угрозы для вашей сети.

OpenVPN и OpenSSH

Несмотря на тот факт, что большинству корпоративных пользователей требуется использовать OpenVPN для подключения к сети предприятия, я был разочарован тем, что большинство людей не обращают внимания на OpenSSH как альтернативу для домашних работников, которым требуется подключение к безопасным не-VPN сетям.
Не вдаваясь в подробности реализации двух этих программ, скажу, что идея состоит в том, что пользователь может безопасно подключаться к удаленному компьютеру/серверу, получать доступ к удаленным разделяемым ресурсам/электронной почте/документам и т.п. без беспокойства о том, что его трафик на всем пути прохождения (туда и обратно) не будет скомпрометирован злоумышленником.
Что касается OpenVPN, - это программное обеспечение позволяет находящимся дома корпоративным пользователям подключаться к серверу виртуальной частной сети (VPN) их компании настолько просто, насколько это вообще возможно. Оттуда они могут получить доступ к своим рабочим компьютерам, управлять документами или просто проверять почту. Суть в том, что работники за пределами локального офиса могут спокойно пользоваться протоколами безопасности, которые установил IT персонал для подключения к сети предприятия снаружи, находясь где-либо вне корпоративной сети, будь то домашний офис или любая другая небезопасная сеть.
Установку OpenVPN соединения выполнить достаточно просто, необходимо только установить пакет network-manager-openvpn из вашего репозитория Ubuntu. После этого и установки других зависимостей, просто щелкните мышью на значке менеджера сети (network-manager) и начните процесс настройки VPN. В сегодняшнем, последнем релизе Ubuntu, 8.10 (прим. переводчика: на момент перевода статьи последним стабильным релизом Ubuntu является 9.04 ), пользователи сразу после установки ОС могут воспользоваться VPN соединениями, предварительно настроив их.

Усиление Удаленной и Локальной безопасности

Теперь вернемся домой. Лично я частично использую OpenSSH для соединения из дома с беспроводной сетью моего собственного кофе-магазина. Использование OpenSSH позволяет мне работать с такими Интернет приложениями, как Evolution (клиент электронной почты), Firefox (web-браузер) и т.п., которые иначе я не стал бы использовать в кофе-магазине для передачи информации.
OpenSSH так же обеспечивает замечательную возможность совместного доступа к файлам и папкам компьютеров в вашей локальной сети. Однако, используя совместный доступ вместе с No-IP (прим. переводчика: сервис, подменяющий динамически назначаемый IP-адрес компьютера каким-либо постоянным именем, доступным через Интернет ), вы можете организовать однообразный совместный доступ к файлам и папкам независимо от места, где вы находитесь в данный момент. При этом, где бы вы не находились, дома или на другом конце земного шара, вы получите одинаково надежный совместный доступ к файлам.
Подведем итог всего вышесказанного. SSH и VPN - это виртуальные безопасные мосты от компьютера к серверу или от компьютера к компьютеру. Но насколько бы безопасными не казались эти средства, это не означает, что при просматре Интернет-страницы или отправке электронной почты данные остаются в безопасности в процессе их передачи. Возможно, вы захотите внедрить дополнительно какие-то средства SSL, чтобы использовать протокол HTTPS для просмотра веб-страниц и SSL безопасность для передачи электронной почты туда и обратно.

Обеспечение безопасности вашего компьютера с Ubuntu для локального использования

На сегодняшний день, единственный и, пожалуй, самый большой риск для безопасности вашего компьютера, в общем случае, находится между монитором и стулом. Пользователи, особенно на совместно используемых компьютерах, обеспечивают больше проблем безопасности, чем любые вирусы или зловредное программное обеспечение, случайно проникшее на ваш компьютер.
Поскольку мы не можем проконтролировать, что делают другие пользователи на общем компьютере, я предлагаю список некоторых полезных инструментов и техник, которые наилучшим образом подготовят вас к ответным действиям на любые безрассудные поступки, совершенные другими пользователями.
Совет: Сохранение обновлений под контролем . Отказ от поддержания системы Ubuntu в актуальном состоянии - путь, приводящий к получению множества проблем в дальнейшем, уж лучше получить несколько ошибок, в случае выполнения регулярных обновлений. Обновления безопасности - первостепенны.
Совет: Блокирование других пользователей . Немедленное преимущество вы можете получить, спрятав ранее работающую рабочую инсталляцию Ubuntu от менее опытного члена семьи или друга. Наилучший путь для того, чтобы это выполнить - добавить ограниченную в правах учетную запись обычного пользователя для всех тех, кто еще помимо вас работает за компьютером. Из меню администрирования пользователей и групп, под своей собственной учетной записью супер-пользователя, просто отключите любые опции, которые вы хотите запретить, для вновь создаваемой ограниченной учетной записи пользователя.
Совет: Обеспечение безопасности вашего домашнего каталога . Больше для обеспечения тайны, чем для безопасности, избежав головной боли от использования шифрования, вы можете легко и просто поменять привилегии пользователей для доступа к каталогу, например, выполнив команду chmod 0700 /home/$USER в терминале. Предположим, только вы один имеете права суперпользователя (super user/root) на данном компьютере, больше никто не может видеть содержания вашего каталога. Если шифрование обязательно, то есть несколько замечательных HOWTO, лучший из которых . Да, сделать это очень нелегко.
Совет: OpenDNS для базовой фильтрации содержимого . Одним из наилучших путей оградить пользователей вашей системы Ubuntu от доступа к потенциально мошенническим сайтам или узлам со злонамеренным программным обеспечением является использование OpenDNS. Изменение настроек DNS в вашей сети может быть выполнено как на каждом компьютере в отдельности, так и на шлюзе, выполняющем роль маршрутизатора.

Ubuntu настолько безопасна, насколько вы ее таковой сделаете

Используя советы, которые я дал выше, вы несомненно встанете на путь безопасного использования Ubuntu. Но, несмотря на наличие этих рекомендаций, вы всегда можете нарваться на неприятности.
Поскольку Linux действительно весьма мощная система, любой у кого есть права супер-пользователя должен осознавать, что есть команды или сценарии оболочки, которые могут быть запущены в терминале и нанести при выполнении существенный вред . Один из типов такого вреда выражается в потере данных.
И еще, — вместо того, чтобы метаться по форумам, разыскивая решение проблемы, которая возникла сама по себе, лучше каждый раз консультироваться с доверенным источником перед запуском кода, с которым вы незнакомы. Один этот совет творит чудеса, гарантируя, что Ubuntu используется безопасно.
Благодарим за статью Datamation
А чтобы обеспечить безопасность территории вокруг вашего реального дома портебуеться настоящая защита. От несанкционированного проникновения дом защитит металлическая сетка рабитца натянутая по периметру участка.

Всем привет… У всех начинающих админов под Ubuntu появляется задача настройки сетевых интерфейсов (сети, сетевых карт) В этой статье я покажу как это делать… Это делается очень просто…

Если каким то способом вы пропустили настройку сети или увидели сложность в при установке дистрибутива то сейчас мы это проделаем в ручную. И так дистрибутив у нас установлен и ждёт нас в рукоприкладстве… Нам необходимо настроить 2 сетевые карты….. Одна у нас смотрит в сторону провайдера а другая в локальную сеть. Сразу договоримся и обозначим наши интерфейсы и адреса.

eth0 — 192.168.0.1 (допустим это адрес который выдал провайдер) Интерфейс который смотрит в интернет (провайдер)
eth1 — 10.0.0.1 (адрес который мы с вами хотим дать этому интерфейсу) Интерфейс смотрящий в локальную сеть

Первым делом проверим какие у нас интерфейсы уже запущены командой ifconfig Вы увидите что то подобное (только со своими данными вместо ххххх)

Eth0 Link encap:Ethernet HWaddr хх:хх:хх:хх:хх:хх inet addr:ххх.ххх.ххх.ххх Bcast:ххх.ххх.хххх.ххх Mask:255.255.255.252 inet6 addr: ххх::ххх:ххх:ххх:хххх/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:31694097 errors:0 dropped:0 overruns:0 frame:0 TX packets:15166512 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:2215593127 (2.2 GB) TX bytes:1577680249 (1.5 GB) Память:b8820000-b8840000 eth1 Link encap:Ethernet HWaddr хх:хх:хх:хх:хх:хх inet addr:10.0.0.1 Bcast:10.0.0.255 Mask:255.255.255.0 inet6 хххх: хххх::хххх:хххf:ххх:хххх/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:11352041 errors:0 dropped:0 overruns:0 frame:0 TX packets:21539638 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:1262641422 (1.2 GB) TX bytes:1922838889 (1.9 GB) Память:b8800000-b8820000 lo Link encap:Локальная петля (Loopback) inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:3823 errors:0 dropped:0 overruns:0 frame:0 TX packets:3823 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:717663 (717.6 KB) TX bytes:717663 (717.6 KB)

Если у вас будет не будет отображаться один из интерфейсов, то ничего страшного. Он всего лишь отключен, Включим его командой sudo ifconfig eth1 up (вместо eth1 впечатайте ваш интерфейс, если у вас 2 сетевые карты значит всего есть 2 интерфейса это eth0 и eth1) И так включаем наш интерфейс:

sudo ifconfig eth1 up

И так начнём настройку.

Присвоим интерфейсу eth0 ip адрес выданнsq провайдером следующей командой:

sudo ifconfig eth1 inet 192.168.0.2

И укажем маску сети:

sudo ifconfig eth0 netmask 255.255.255.0

Сделанные настройки таким способом сбрасываются после перезагрузки сервера.
Чтобы такого не происходил необходимо поменять настройки в конфигурационном файле сетевых интерфейсов. Для этого нужны Root права. Получим права Root следующей командой:

sudo su

Конфигурационный файл сетевых интерфейсов находится по адресу /etc/network/interfaces Для его редактирования используем редактор Nano (вы можете пользоваться своим редактором) мне нравится Nano

nano /etc/network/interfaces

Видиим следующее:

# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface //Первичный сетевой интерфейс auto eth0 //Присвоение сетевому интерфейсу следующие атрибуты iface eth0 inet static //Автоматическое включение сетевого интерфейса address 192.168.0.2 //ip адрес нашей сетевой карты (выдаваемый провайдером) netmask 255.255.255.0 //Маска сети в которой находится наш IP network 192.168.0.0 //Сеть всего диапозона broadcast 192.168.0.255 //Макс. кол.адресов gateway 192.168.0.1 //Шлюз # dns-* options are implemented by the resolvconf package, if installed

Необходимо привести к следующему виду

# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 192.168.0.2 netmask 255.255.255.0 network 192.168.0.0 gateway 192.168.0.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 192.168.22.22 192.168.33.33 #Интерфейс который смотрит в локальную сеть auto eth1 iface eth1 inet static address 10.0.0.1 netmask 255.255.255.0

Сохраним изменения нажатием клавиш Ctrl + O и выходим нажатием Ctrl + X

Адреса DNS серверов можно задать в файле /etc/network/interfaces , но управление адресами DNS серверов в Ubuntu осуществляется через файл /etc/resolv.conf, у меня он выглядит так:

nameserver хх.хх.хх.хх nameserver хх.хх.хх.хх

Настроим DNS, для этого вводим следующую команду в строке:

Sudo nano /etc/resolv.conf # IP адреса DNS серверов вашего провайдера nameserver хх.ххх.ххх.ххх nameserver ххх.ххх.хх.ххх

Сохраняемся Ctrl + O и выходим Ctrl +x также нужно перезагрузить сеть следующей командой.

Всем нам известно, что операционная система Linux намного безопаснее Windows благодаря своей архитектуре и особой системе распределения доступа между пользователями. Но программисты тоже люди, как бы нам это ненравилось они тоже ошибаются. И из-за этих ошибок в системе появляются дыры, через которые злоумышленники могут обойти системы защиты.

Эти ошибки называются уязвимости, они могут встречаться в различных программах и даже в самом ядре системы подрывая ее безопасность. За последние годы популярность Linux начала расти и исследователи безопасности обращают больше внимания на эту систему. Обнаруживаются все новые и новые уязвимости, а благодаря открытому исходному коду получается их очень быстро устранить. В этой статье мы рассмотрим самые опасные уязвимости Linux которые были обнаружены за последние несколько лет.

Перед тем как перейти к самому списку уязвимостей важно понять что это такое и какими они бывают. Как я уже сказал, уязвимость - это ошибка в программе, с помощью которой пользователь может использовать программу так, как это не было запланировано ее разработчиком.

Это может быть отсутствие проверки на правильность полученных данных, проверки источника данных и самое интересное - размера данных. Самые опасные уязвимости - это те, которые позволяют выполнять произвольный код. В оперативной памяти все данные имеют определенный размер и программа рассчитана на запись в память данных от пользователя определенного размера. Если пользователь передаст больше данных, то она должна выдать ошибку.

Но если программист допустил ошибку, то данные перезапишут код программы и процессор будет пытаться их выполнить, таким образом и возникают уязвимости переполнения буфера.

Также все уязвимости можно поделить на локальные, которые работают только если у хакера есть доступ к локальному компьютеру и удаленные, когда достаточно доступа через интернет. А теперь перейдем к списку уязвимостей.

1. Dirty COW

Первой в нашем списке будет свежая уязвимость, которая была обнаружена этой осенью. Название Dirty COW расшифровывается как Copy on Write. Ошибка возникает в файловой системе во время копирования при записи. Это локальная уязвимость, которая позволяет получить полный доступ к системе любому непривилегированному пользователю.

Если коротко, то для использования уязвимости нужно два файла, один доступен на запись только от имени суперпользователя, второй для нас. Начинаем очень много раз записывать данные в наш файл и читать из файла суперпользователя, через определенное время настанет момент, когда буферы обеих файлов смешаются и пользователь сможет записать данные в файл, запись которого ему недоступна, таким образом можно выдать себе права root в системе.

Уязвимость была в ядре около 10 лет, но после обнаружения была быстро устранена, хотя остались еще миллионы устройств Andoid в которых ядро не обновлялось и не думает и где эту уязвимость можно эксплуатировать. Уязвимость получила код CVE-2016-5195.

2. Уязвимость Glibc

Уязвимость получила код CVE-2015-7547. Это была одна из наиболее обсуждаемых уязвимостей среди проектов с открытым исходным кодом. В феврале 2016 выяснилось, что библиотека Glibc имеет очень серьезную уязвимость, которая позволяет злоумышленнику выполнить свой код на удаленной системе.

Важно заметить что Glibc - это реализация стандартной библиотеки Си и С++, которая используется в большинстве программ Linux, в том числе сервисов и языков программирования таких как PHP, Python, Perl.

Ошибка была допущена в коде разбора ответа DNS сервера. Таким образом, уязвимость могли использовать хакеры, к DNS которых обращались уязвимые машины, а также выполняющие MITM атаку. Но уязвимость давала полный контроль над системой

Уязвимость была в библиотеке еще с 2008 года, но после обнаружения достаточно быстро были выпущены патчи.

3. Heartbleed

В 2014 году была обнаружена одна из самых серьезных по масштабу и последствиям уязвимость. Она была вызвана ошибкой в модуле heartdead программы OpenSSL, отсюда и название Heartbleed. Уязвимость позволяла злоумышленникам получить прямой доступ к 64 килобайтам оперативной памяти сервера, атаку можно было повторять, пока вся память не будет прочитана.

Несмотря на то, что исправление было выпущено очень быстро, пострадало очень много сайтов и приложений. Фактически уязвимыми были все сайты, использующие HTTPS для защиты трафика. Злоумышленники могли получить пароли пользователей, их личные данные и все что находилось в памяти в момент атаки. Уязвимость получила код CVE-2014-0160.

4. Stagefright

Если уязвимость получила кодовое имя, это однозначно означает, что она заслуживает внимания. Уязвимость Stagerfight не исключение. Правда, это не совсем проблема Linux. Stagefright - это библиотека для обработки мультимедийных форматов в Android.

Она реализована на C++, а значит обходит все защитные механизмы Java. В 2015 году было обнаружено целую группу уязвимостей, которые позволяли выполнить удаленно произвольный код в системе. Вот они CVE-2015-1538, CVE-2015-1539, CVE-2015-3824, CVE-2015-3826, CVE-2015-3827, CVE-2015-3828 и CVE-2015-3829.

Злоумышленнику было достаточно отправить MMS на уязвимый смартфон со специально модифицированным медиафайлом, и он получал полный контроль над устройством с возможностью записывать и читать данные с карты памяти. Уязвимость была исправлена разработчиками Android но до сих пор миллионы устройств остаются уязвимыми.

5. Уязвимость нулевого дня ядра

Это локальная уязвимость, которая позволяет повысить права текущего пользователя до root из-за ошибки в системе работы с криптографическими данными ядра, которые хранятся в памяти. Она была обнаружена в феврале 2016 года и охватывала все ядра начиная от 3.8, а это значит что уязвимость существовала 4 года.

Ошибка могла использоваться хакерами или вредоносным программным обеспечением для повышения своих полномочий в системе, но очень быстро была исправлена.

6. Уязвимость в MySQL

Эта уязвимость получила код CVE-2016-6662 и затронула все доступные версии сервера баз данных MySQL (5.7.15, 5.6.33 и 5.5.52), базы данных Oracle и клоны MariaDB и PerconaDB.

Злоумышленники могли получить полный доступ к системе через SQL запрос передавался код, который позволял заменить my.conf на свою версию и перезагрузить сервер. Также была возможность выполнить вредоносный код с правами суперпользователя.

Решения MariaDB и PerconaDB выпустили патчи достаточно оперативно, Oracle отреагировал, но намного позже.

7. Shellshock

Эта уязвимость была обнаружена в 2014 году перед тем как просуществовала 22 года. Ей был присвоен код CVE-2014-6271 и кодовое имя Shellshock. Эта уязвимость сравнима по опасности с уже известной нам Heartbleed. Она вызвана ошибкой в интерпретаторе команд Bash, который используется по умолчанию в большинстве дистрибутивов Linux.

Bash позволяет объявлять переменные окружения без аутентификации пользователя, а вместе в ними можно выполнить любую команду. Особой опасности это набирает в CGI скриптах, которые поддерживаются большинством сайтов. Уязвимы не только серверы, но и персональные компьютеры пользователей, маршрутизаторы и другие устройства. По сути, злоумышленник может выполнить удаленно любую команду, это полноценное удаленное управление без аутентификации.

Уязвимости были подвержены все версии Bash, включая и 4.3, правда после обнаружения проблемы разработчики очень быстро выпустили исправление.

8. Quadrooter

Это целая серия уязвимостей в Android, которая была обнаружена в августе 2016. Они получили коды CVE-2016-5340, CVE-2016-2059, CVE-2016-2504, CVE-2016-2503. Ошибке подвержены более 900 миллионов Android устройств. Все уязвимости были обнаружены в драйвере ARM процессора Qualcomm и все они могут использоваться для получения root доступа к устройству.

Как и DirtyCOW здесь не нужно никаких полномочий, достаточно установить вредоносное приложение и оно сможет получить все ваши данные и передать их злоумышленнику.

9. Уязвимость в OpenJDK

Это очень серьезная уязвимость linux 2016 в Java машине OpenJDK с кодом CVE-2016-0636, она затрагивает всех пользователей, работающих с Oracle Java SE 7 Update 97 и 8 Update 73 и 74 для Windows, Solaris, Linux и Mac OS X. Эта уязвимость позволяет злоумышленнику выполнить произвольный код за пределами Java машины, если вы откроете специальную страницу в браузере с уязвимой версией Java.

Это позволяло злоумышленнику получить доступ к вашим паролям, личным данным, а также запускать программы на вашем компьютере. Во всех версиях Java ошибка была очень оперативно исправлена, она просуществовала с 2013 года.

10. Уязвимость протокола HTTP/2

Это целая серия уязвимостей, которая была обнаружена в 2016 году в протоколе HTTP/2. Они получили коды CVE-2015-8659, CVE-2016-0150, CVE-2016-1546, CVE-2016-2525, CVE-2016-1544. Уязвимостям были подвержены все реализации этого протокола в Apache, Nginx Microsoft, Jetty и nghttp2.

Все они позволяют злоумышленнику очень сильно замедлить работу веб-сервера и выполнить атаку отказ от обслуживания. Например, одна из ошибок приводила к возможности отправки небольшого сообщения, которое на сервере распаковывалось в гигабайты. Ошибка была очень быстро исправлена и поэтому не вызвала много шума в сообществе.

А вы в безопасности?

В этой статье мы рассмотрели самые опасные уязвимости Linux 2016, 2015 и 2014 годов. Большинство из них могли причинить серьезный вред системам если бы не были вовремя исправлены. Благодаря открытому исходному коду такие уязвимости Linux эффективно обнаруживается и быстро исправляются. Только не забывайте обновлять свою систему. Проблема остается только с Android. Некоторые устройства уже не получают обновлений и этой проблеме пока нет решения.

Установка и настройка инструментов администрирования, настройка сети

После того как мы установили базовую операционную систему ubuntu14.04 с минимального дистрибутива, первым делом нужно озаботится тем как ей комфортно управлять. В основном для конфигурирования и управления серверами на базе *nix используют ssh/telnet, но в последнее время для этого также появились вполне годные инструменты на базе web-интерфейсов. Я использую бесплатные решения Webmin и Ajenti . Oбе эти панели заслуживают внимания и не смотря на то что они по отдельности могут всё, для чего-то каждая из них подходит лучше, по этому лучше иметь их обе. Я должен заметить, что на боевых продакшн-серверах подобные решения не ставят исходя из безопасности. Всё-таки чем больше управляющих систем, тем больше вероятность найти в них уязвимость. По этому если ваши требования безопасности находятся на уровне «паранойя», то просто примите тот факт, что вам придётся работать с сервером только через ssh (через консоль).

Настройка сети в ubuntu 14.04

Чтобы связываться с нашим сервером по сети, для начала её нужно настроить. По умолчанию, при установке сеть настроилась автоматически и если инсталлятор обнаружил в сети DHCP-сервер, то скорее всего он уже настроил всё как нужно. Если в сети нет DHCP-сервера, то установщик всё равно настроил всё исходя из опроса маршрутизатора к которому подключена сетевая карта. Для того что-бы посмотреть, каким образом сейчас настроена сеть, достаточно в терминале набрать:

Что же мы тут видим:

У нас два сетевых интерфейса eth0 и lo где lo — это «интерфейс обратной петли loopback» а eth0 — это имя нашей сетевой карточки, и если lo — это неизменный сетевой интерфейс, то все остальные интерфейсы могут отличатся по имени. Если в системном блоке установлены две сетевые карты то их интерфейсы скорее всего будут выглядеть как eth0 и eth1 и так далее. Вид имени интерфейса зависит от типа сетевой карты, так например если сетевая карта работает по протоколу WiFi то скорее всего имя у неё будет wlan0.

Что-бы настроить сеть, отредактируем следующий файл:

sudo nano /etc/network/interfaces

Приведём его к такому виду:

iface eth0 inet static
address 192.168.0.184
netmask 255.255.255.0
gateway 192.168.0.1
auto eth0
dns-nameservers 8.8.8.8 8.8.4.4

Где: iface eth0 inet static — указывает, что интерфейс (iface eth0) находится в диапазоне адресов IPv4 (inet) со статическим ip (static);
address 192.168.0.184 — указывает что IP адрес (address) нашей сетевой карты 192.168.0.184;
netmask 255.255.255.0 — указывает что наша маска подсети (netmask) имеет значение 255.255.255.0;
gateway 192.168.0.1 — адрес шлюза (gateway) по умолчанию 192.168.0.254;
auto eth0 — указывет системе что интерфейс eth0 необходимо включать автоматически при загрузке системы с вышеуказанными параметрами.
eth0 — имя подключаемого своего интерфейса. Список интерфейсов можно посмотреть набрав ifconfig
dns-nameservers — DNS-сервера, пишутся через пробел.

Как видно в моём случае я решил задать статический ip 192.168.0.184

перезагружаем сервер командой

Пингуем наш сервер из сети и убеждаемся что он виден. Теперь пришла пора установить с ним связь по SSH, для этого собственно установим ssh-сервер:

sudo apt-get install ssh

Теперь можно подключится к нашему серверу по ssh через программу putty например, теперь можно вводить команды не в ручную, а копируя и вставляя нужные нам строки в клиент ssh, ибо в дальнейшем это удивительно облегчит настройку, в чём вы вскоре убедитесь сами:

ВСЕ КОМАНДЫ НИЖЕ ЭТОЙ СТРОЧКИ ВВОДЯТСЯ ОТ ИМЕНИ СУПЕРПОЛЬЗОВАТЕЛЯ , а для того что-бы войти в режим суперпользователя, нужно набрать:

Установка webmin

echo "deb https://download.webmin.com/download/repository sarge contrib" >> /etc/apt/sources.list echo "deb https://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib" >> /etc/apt/sources.list wget https://www.webmin.com/jcameron-key.asc apt-key add jcameron-key.asc apt-get update apt-get install -y webmin

echo "deb https://download.webmin.com/download/repository sarge contrib" >>

echo "deb https://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib" >> / etc / apt / sources . list

wget https : //www.webmin.com/jcameron-key.asc

apt - key add jcameron - key . asc

apt - get update

apt - get install - y webmin

Всё! 6 последовательно введённых команд и webmin установлен и настроен. Теперь можно зайти через браузер по адресу:

https://192.168.0.184:10000

По умолчанию webmin выглядит минималистично, интерфейс по умолчанию отображается на английском языке, но всё настраивается!

Делаем вот так:

Получается вот так:

По данным cvedetails.com, с 1999 года в ядре Linux найдено 1305 уязвимостей, из которых 68 - в 2015-м. Большинство из них не несут особых проблем, помечены как Local и Low, а некоторые можно вызвать только с привязкой к определенным приложениям или настройкам ОС. В принципе, цифры небольшие, но ядро - это не вся ОС. Уязвимости находят и в GNU Coreutils, Binutils, glibs и, конечно же, в пользовательских приложениях. Разберем самые интересные.

УЯЗВИМОСТИ В ЯДРЕ LINUX

ОС: Linux
Уровень: Medium, Low
Вектор: Remote
CVE: CVE-2015-3331, CVE-2015-4001, CVE-2015-4002, CVE-2015-4003
Exploit: концепт, https://lkml.org/lkml/2015/5/13/740 , https://lkml.org/lkml/2015/5/13/744

Уязвимость, найденная в июне в ядре Linux до 3.19.3, в функции __driver_rfc4106_decrypt в файле arch/x86/crypto/aesni-intel_glue.c связана с тем, что реализация RFC4106 для процессоров x86, поддерживающих расширение системы команд AES AES-NI (предложена Intel, Intel Advanced Encryption Standard Instructions), в некоторых случаях неправильно вычисляет адреса буферов. Если IPsec-туннель настроен на использование этого режима (алгоритм AES - CONFIG_CRYPTO_AES_NI_INTEL), уязвимость может приводить к повреждению содержимого памяти, аварийным остановкам и потенциально к удаленному выполнению кода CryptoAPI. Причем самое интересное, что проблема может возникнуть сама по себе, на вполне легальном трафике, без вмешательства извне. На момент публикации проблема была устранена.

В драйвере Linux 4.0.5 ozwpan, имеющем статус экспериментального, выявлено пять уязвимостей, четыре из них позволяют организовать DoS-атаку через крах ядра, отправив специально оформленные пакеты. Проблема связана с выходом за границы буфера из-за некорректной обработки знаковых целых чисел, при котором вычисление в memcpy между required_size и offset возвращало отрицательное число, в итоге данные копируются в кучу.

Находится в функции oz_hcd_get_desc_cnf в drivers/staging/ozwpan/ozhcd.c и в функциях oz_usb_rx и oz_usb_handle_ep_data файла drivers/staging/ozwpan/ozusbsvc1.c. В других уязвимостях возникала ситуация возможного деления на 0, зацикливания системы или возможность чтения из областей вне границ выделенного буфера.

Драйвер ozwpan, одна из новинок Linux, может быть сопряжен с существующими беспроводными устройствами, совместимыми с технологией Ozmo Devices (Wi-Fi Direct). Предоставляет реализацию хост-контроллера USB, но фишка в том, что вместо физического подключения периферия взаимодействует через Wi-Fi. Драйвер принимает сетевые пакеты c типом (ethertype) 0x892e, затем разбирает их и переводит в различную функциональность USB. Пока используется в редких случаях, поэтому его можно отключить, выгрузив модуль ozwpan.ko.

LINUX UBUNTU

ОС: Linux Ubuntu 12.04–15.04 (ядро до 15 июня 2015 года)
Уровень: Critical
Вектор: Local
CVE: CVE-2015-1328
Exploit: https://www.exploit-db.com/exploits/37292/

Критическая уязвимость в файловой системе OverlayFS позволяет получить права root в системах Ubuntu, в которых разрешено монтирование разделов OverlayFS непривилегированным пользователем. Настройки по умолчанию, необходимые для эксплуатации уязвимости, используются во всех ветках Ubuntu 12.04–15.04. Сама OverlayFS появилась в ядре Linux относительно недавно - начиная с 3.18-rc2 (2014 год), это разработка SUSE для замены UnionFS и AUFS. OverlayFS позволяет создать виртуальную многослойную файловую систему, объединяющую несколько частей других файловых систем.

ФС создается из нижнего и верхнего слоев, каждый из которых прикрепляется к отдельным каталогам. Нижний слой используется только для чтения в каталогах любых поддерживаемых в Linux ФС, включая сетевые. Верхний слой обычно доступен на запись и перекрывает данные нижнего слоя, если файлы дублируются. Востребована в Live-дистрибутивах, системах контейнерной виртуализации и для организации работы контейнеров некоторых настольных приложений. Пространства имен для пользователей (user namespaces) позволяют создавать в контейнерах свои наборы идентификаторов пользователей и групп. Уязвимость вызвана некорректной проверкой прав доступа при создании новых файлов в каталоге нижележащей ФС.

Если ядро собрано с параметром CONFIG_USER_NS=y (включение пользовательского пространства имен), а при монтировании указан флаг FS_USERNS_MOUNT, OverlayFS может быть смонтирована обычным пользователем в другом пространстве имен, в том числе там, где допускаются операции с правами root. При этом операции с файлами с правами root, выполненные в таком namespaces, получают те же привилегии и при выполнении действий с нижележащей ФС. Поэтому можно смонтировать любой раздел ФС и просмотреть или модифицировать любой файл или каталог.

На момент публикации уже было доступно обновление ядра с исправленным модулем OverlayFS от Ubuntu. И если система обновлена, проблем быть не должно. В том же случае, когда обновление невозможно, в качестве временной меры следует отказаться от использования OverlayFS, удалив модуль overlayfs.ko.

УЯЗВИМОСТИ В ОСНОВНЫХ ПРИЛОЖЕНИЯХ

ОС: Linux
Уровень: Critical
Вектор: локальная, удаленная
CVE: CVE-2015-0235
Exploit: https://www.qualys.com/research/security-advisories/exim_ghost_bof.rb

Опасная уязвимость в стандартной библиотеке GNU glibc, которая является основной частью ОС Linux, и в некоторых версиях Oracle Communications Applications и Oracle Pillar Axiom, обнаруженная во время аудита кода хакерами из Qualys. Получила кодовое имя GHOST. Заключается в переполнении буфера внутри функции __nss_hostname_digits_dots(), которую используют для получения имени узла такие функции glibc, как gethostbyname() и gethostbyname2() (отсюда и название GetHOST). Для эксплуатации уязвимости нужно вызвать переполнение буфера при помощи недопустимого аргумента имени хоста приложению, выполняющему разрешение имени через DNS. То есть теоретически эту уязвимость можно применить для любого приложения, использующего в той или иной мере сеть. Может быть вызвано локально и удаленно, позволяет выполнить произвольный код.

Самое интересное, что ошибка была исправлена еще в мае 2013 года, между релизами glibc 2.17 и 2.18 был представлен патч, но проблему не классифицировали как патч безопасности, поэтому на нее внимания не обратили. В итоге многие дистрибутивы оказались уязвимы. Вначале сообщалось, что самая первая уязвимая версия - 2.2 от 10 ноября 2000 года, но есть вероятность ее появления вплоть до 2.0. Среди прочих уязвимости были подвержены дистрибутивы RHEL/CentOS 5.x–7.x, Debian 7 и Ubuntu 12.04 LTS. В настоящее время доступны исправления. Сами хакеры предложили утилиту, поясняющую суть уязвимости и позволяющую проверить свою систему. В Ubuntu 12.04.4 LTS все нормально:

$ wget https : //goo.gl/RuunlE

$ gcc gistfile1 . c - o CVE - 2015 - 0235

$ . / CVE - 2015 - 0235

not vulnerable

Проверяем систему на GHOST

Практически сразу был выпущен модуль к , позволяющий удаленно выполнить код на x86 и x86_64 Linux с работающим почтовым сервером Exim (с включенным параметром helo_try_verify_hosts или helo_verify_hosts). Позже появились и другие реализации, например модуль Metasploit для проверки блога на WordPress.

Чуть позже, в 2015 году, в GNU glibc были обнаружены еще три уязвимости, позволяющие удаленному пользователю произвести DoS-атаку или переписать ячейки памяти за пределами границы стека: CVE-2015-1472, CVE-2015-1473, CVE-2015-1781.

ОС: Linux (GNU Coreutils)
Уровень: Low
Вектор: Local, Remote
CVE: CVE-2014-9471
Exploit: нет

GNU Сoreutils - один из основных пакетов *nix, включающий практически все базовые утилиты (cat, ls, rm, date…). Проблема найдена в date. Ошибка в функции parse_datetime позволяет удаленному атакующему, не имеющему учетной записи в системе, вызвать отказ в обслуживании и, возможно, выполнить произвольный код, используя специально сформированную строку даты с использованием timezone. Уязвимость выглядит так:

$ touch ‘-- date = TZ = ”123 ”345 ”@ 1 ’

Segmentation fault

$ date - d ‘TZ = ”Europe / Moscow ”“00 : 00 + 1 hour ”’

Segmentation fault

$ date ‘-- date = TZ = ”123 ”345 ”@ 1 ’

* * * Error in ` date ’: free () : invalid pointer : 0xbfc11414 * * *

Уязвимость в GNU Сoreutils

Если уязвимости нет, получим сообщение о неверном формате даты. О наличии уязвимости отчитались практически все разработчики дистрибутивов Linux. В настоящее время доступно обновление.


Нормальный вывод патченного GNU Сoreutils

ОС: Linux (grep 2.19–2.21)
Уровень: Low
Вектор: Local
CVE: CVE-2015-1345
Exploit: нет

В утилите grep, которая используется для поиска текста по шаблону, редко находят уязвимости. Но эту утилиту часто вызывают другие программы, в том числе и системные, поэтому наличие уязвимостей гораздо проблематичнее, чем кажется на первый взгляд. Ошибка в bmexec_trans function в kwset.c может привести к чтению неинициализированных данных из области за пределами выделенного буфера или краху приложения. Этим может воспользоваться хакер, создав специальный набор данных, подаваемых на вход приложения при помощи grep -F. В настоящее время доступны обновления. Эксплоитов, использующих уязвимость, или модуля к Metasploit нет.

УЯЗВИМОСТЬ В FREEBSD

ОС: FreeBSD
Уровень: Low
Вектор: Local, Remote
CVE: CVE-2014-0998, CVE-2014-8612, CVE-2014-8613
Exploit: https://www.exploit-db.com/exploits/35938/

В базе CVE за 2015 год не так уж много уязвимостей, если точнее - всего шесть. Сразу три уязвимости были найдены в FreeBSD 8.4–10.х в конце января 2015-го исследователями из Core Exploit Writers Team. CVE-2014-0998 связана с реализацией драйвера консоли VT (Newcons), который предоставляет несколько виртуальных терминалов, включаемых параметром kern.vty=vt в /boot/loader.conf.
CVE-2014-8612 проявлялась при использовании протокола SCTP и вызвана ошибкой в коде проверки идентификатора потока SCTP, реализующего SCTP-сокеты (локальный порт 4444). Суть в ошибке выхода за пределы памяти в функции sctp_setopt() (sys/netinet/sctp_userreq.c). Это дает локальному непривилегированному пользователю возможность записать или прочитать 16 бит данных памяти ядра и повысить свои привилегии в системе, раскрыть конфиденциальные данные или положить систему.

CVE-2014-8613 позволяет инициировать разыменование нулевого указателя при обработке полученного извне SCTP-пакета, при установке SCTP_SS_VALUE опции сокета SCTP. В отличие от предыдущих, CVE-2014-8613 может быть использована для удаленного вызова краха ядра через отправку специально оформленных пакетов. В FreeBSD 10.1 защититься можно, установив переменную net.inet.sctp.reconfig_enable в 0, тем самым запретив обработку блоков RE_CONFIG. Или просто запретить использовать SCTP-соединения приложениям (браузерам, почтовым клиентам и так далее). Хотя на момент публикации разработчики уже выпустили обновление.


Статистика уязвимостей в FreeBSD

УЯЗВИМОСТЬ В OPENSSL

ОС: OpenSSL
Уровень: Remote
Вектор: Local
CVE: CVE-2015-1793
Exploit: нет

В 2014 году в OpenSSL, широко используемом криптографическом пакете для работы с SSL/TLS, была найдена критическая уязвимость Heartbleed. Инцидент в свое время вызвал массовую критику качества кода, и, с одной стороны, это привело к появлению альтернатив вроде LibreSSL, с другой - сами разработчики наконец взялись за дело.

Топ вендоров по уязвимостям

Критическая уязвимость обнаружена Адамом Лэнгли из Google и Дэвидом Бенджамином из BoringSSL. Изменения, внесенные в OpenSSL версий 1.0.1n и 1.0.2b, привели к тому, что OpenSSL пытается найти альтернативную цепочку верификации сертификата, если первая попытка построить цепочку подтверждения доверия не увенчалась успехом. Это позволяет обойти процедуру проверки сертификата и организовать подтвержденное соединение с использованием подставного сертификата, говоря другими словами - спокойно заманивать пользователя на поддельные сайты или сервер электронной почты или реализовать любую MITM-атаку там, где используется сертификат.

После обнаружения уязвимости разработчики 9 июля выпустили релизы 1.0.1p и 1.0.2d, в которых эта проблема устранена. В версиях 0.9.8 или 1.0.0 этой уязвимости нет.

Linux.Encoder

Конец осени ознаменовался появлением целого ряда вирусов-шифровальщи ков, вначале Linux.Encoder.0, затем последовали модификации Linux.Encoder.1 и Linux.Encoder.2, заразивших более 2500 сайтов. По данным антивирусных компаний, атаке подвергаются серверы на Linux и FreeBSD с веб-сайтами, работающими с использованием различных CMS - WordPress, Magento CMS, Joomla и других. Хакеры используют неустановленную уязвимость. Далее размещался шелл-скрипт (файл error.php), при помощи которого и выполнялись любые дальнейшие действия (через браузер). В частности, запускался троян-энкодер Linux.

Encoder, который определял архитектуру ОС и запускал шифровальщик. Энкодер запускался с правами веб-сервера (Ubuntu - www-data), чего вполне достаточно, чтобы зашифровать файлы в каталоге, в котором хранятся файлы и компоненты CMS. Зашифрованные файлы получают новое расширение.encrypted.

Также шифровальщик пытается обойти и другие каталоги ОС, если права настроены неправильно, то он вполне мог выйти за границы веб-сайта. Далее в каталоге сохранялся файл README_FOR_DECRYPT.txt, содержащий инструкции по расшифровке файлов и требования хакера. На данный момент антивирусные компании представили утилиты, позволяющие расшифровать каталоги. Например, набор от Bitdefender. Но нужно помнить, что все утилиты, предназначенные для расшифровки файлов, не удаляют шелл-код и все может повториться.

Учитывая, что многие пользователи, занимающиеся разработкой или экспериментирующие с администрированием веб-сайтов, часто устанавливают веб-сервер на домашнем компьютере, следует побеспокоиться о безопасности: закрыть доступ извне, обновить ПО, эксперименты устраивать на VM. Да и сама идея может в будущем использоваться при атаке на домашние системы.

ВЫВОД

Сложного ПО без ошибок физически не существует, поэтому придется мирить ся с тем фактом, что уязвимости будут обнаруживаться постоянно. Но не все они могут представлять действительно проблемы. И можно себя обезопасить, предприняв простые шаги: удалить неиспользуемое ПО, отслеживать новые уязвимости и обязательно устанавливать обновления безопасности, настроить брандмауэр, установить антивирус. И не забывать о специальных технологиях вроде SELinux, которые вполне справляются при компрометации демона или пользовательского приложения.