Уязвимости в программном обеспечении обнаруживаются чаще, чем многие думают. Добропорядочный программист часто публикует информацию об обнаруженной им ошибке (по различным причинам). Производитель уязвимого ПО, в идеальном случае, быстро реагирует, выпуская "заплатку", называемую обычно "патчем" или "обновлением". Если уязвимость обнаружена, всегда найдутся злодеи, которые ее используют в своих злодейских целях.
Таким образом, претендовать на звание "неуязвимой" может программа (в том числе операционная система), включающая все обновления (установлены все патчи). Заметьте, только претендовать, поскольку часть ошибок найдена злодеями, которые не спешат делиться информацией.
Патчи и обновления обычно доступны на сайтах производителей ПО. Как было показано выше, даже установка полного комплекта официальных заплаток не решит всех проблем. Для обеспечения "локальной" безопасности неплохо иметь программу, способную оповещать о подозрительной активности приложений, чтобы пользователь сам мог принять решение, позволять ли программе те или иные действия. Такими функциями (как дополнительными) обладает большинство файерволов.
Задание. Установить и настроить межсетевой экран.
Нижеприведенный текст взят с одного из сайтов с сохранением стиля автора.
Изначально межсетевой экран (файервол) служил для ограничения доступа к локальным сетям извне. Сейчас популярны комплексные решения. Если речь идет о "профессиональном" применении, то это отдельное устройство, умеющее не только фильтровать пакеты, но и обнаружить попытку сетевой атаки. Нам, простым пользователям, достаточно иметь программный файервол. Даже "простенький" файервол не ограничивается контролем интернет-трафика, он предупреждает о любой подозрительной активности приложений, спрашивая пользователя о том, что разрешать делать приложению, а что - нет. Это является и "недостатком". Первое время придется отвечать на вопросы, причем отвечать правильно. Я видел ситуации, когда пользователь ошибочно заблокировал доступ в интернет своему интернет-браузеру. В итоге - соединение с провайдером устанавливается, но, ни один сайт не открывается.
К файерволам мы вернемся очень скоро, ведь настала пора перейти к чисто сетевой безопасности.
Прежде, чем освещать сетевые атаки, неплохо ознакомиться с принципами функционирования сетей. Эти знания могут оказаться полезными и для устранения неполадок своими силами. Тех, кто желает всерьез изучить проблему, отсылаю к серьезным материалам. Простому человеку не обязательно читать всякие RTFSы. Моя цель - помочь пользователю обоснованно выбрать уровень защиты. Здесь приходится руководствоваться необходимой достаточностью, а определение этой "достаточности" - индивидуально.
Если вы - пользователь Интернет, ваш компьютер постоянно отправляет и получает данные. Отправляются запросы на получение информации, сама информация (например, почта). Получаются служебные ответы (готовность сервера, данные о размере скачиваемого файла и т.д.), и сами данные.
Представим себе работу двух штабов дружественных армий во время совместных учений. Российский генерал просит китайского поддержать наступление огнем с моря. Как происходит обмен информацией? Составляется письмо, передается шифровальщику, уже зашифрованное - радисту. Последний отстукивает письмо в эфир азбукой Морзе. Китайский радист получает "морзянку", шифровальщик расшифровывает, с удивлением обнаруживает, что послание на русском языке и отдает его переводчикам. Только теперь можно считать, что письмо дошло до адресата. Заметим, что нашим генералам по рангу не положено задумываться об азбуке Морзе, методах шифрования и радиопередатчиках. Также, как пользователь не обязан ничего знать о семи сетевых уровнях взаимодействия. Самым интересным для нас является IP - протокол интернета. Этот протокол должен понимать любой компьютер в сети Интернет, как все радисты способны пользоваться "морзянкой". Известно, что, при организации связи часто используются кабельные линии. Если на пути встречается преграда, например - река, то в место разрыва по берегам устанавливают два приемо-передатчика (ретрансляторы, это выгоднее, чем тянуть по дну кабель), далее могут использоваться и спутниковые каналы, и снова кабельная линия. Два "радиста" используют морзянку и могут ничего не знать о методах передачи сигнала по кабельным или радиоканалам с их аппаратурой уплотнения. Сети передачи данных, на которых базируется интернет, столь же сложны, но оконечные устройства, например Ваш компьютер, понимает IP, независимо от установленной операционной системы.
В соответствии с концепцией IP, данные преобразуются в отдельные "пакеты", которые могут (но не обязаны) нести в себе помимо куска данных и информации о пункте отправки и назначения, сведения о том, кусок чего именно содержится в пакете, как его стыковать с остальными частями. Понятно, что не существует идеальных каналов для передачи данных, а значит часть пакетов будет содержать ошибки, пакеты достигают цели в "неправильной" последовательности или вообще не достигают. Иногда это не критично. Поскольку теряется лишь небольшая часть пакетов, передачу можно повторить несколько раз (разумный подход, если сообщение небольшое). Сетевик увидит здесь дейтаграммный протокол (UDP), который базируется на протоколе IP и не гарантирует доставку сообщений. Протоколы TCP/IP располагают средствами для надежной доставки за счет установления виртуального соединения. В процессе такого соединения общаются уже две пользовательские программы. "Принимающая" сторона уведомляется о количестве отправленных пакетов и способе их стыковки, и, если какой-то пакет не дошел, просит повторить отправку. Здесь уже можно сделать два практических вывода. Первый: если сигнал сильно искажается или много помех, то значительная часть пакетов проходят с ошибками, что приводит к множеству повторных отправок, то есть, снижается реальная скорость передачи данных. Отсюда и возникает понятие ширины (пропускной способности) канала. Второй вывод: если отправит все заявленные пакеты кроме одного, принимающая сторона не закроет виртуального соединения, ожидая опаздывающего. Если насоздавать множество таких соединений, принимающему компьютеру будет тяжко, поскольку под каждое соединение резервируется участок памяти, а память не резиновая. По такому принципу строили сетевые атаки, "подвешивая" компьютер жертвы.
Чтобы понять процесс установления соединения, необходимо рассмотреть систему идентификации компьютеров в сети. Если мы говорим об интернет, то у каждого компьютера есть уникальное имя, называемое IP - адресом. выглядит он может примерно так: 213.180.204.11 Трудновато для запоминания, поэтому придумали доменные имена, состоящие из "нормальных" символов, например www.yandex.ru. Если в командной строке Вашего интернет-браузера набрать http://213.180.204.11, то это будет равноценно http://www.yandex.ru. Каждое доменное имя соответствует определенному IP - адресу. Как я узнал IP знаменитой поисковой системы? Можно использовать специальную программку, а можно выполнить команду "ping". Если у Вас Windows, нажмите кнопку "Пуск", кликните на пункте "выполнить". Нам предлагают выполнить на компьютере какую-нибудь команду, скомандуем cmd (введем cmd в поле "открыть"), откроется окно командного интерпретатора. Теперь мы можем видеть вводимые команды и результат их выполнения. Итак, командуем pingyandex.ru, жмем "Enter" и получаем результат. Результат будет положительным, если ваш компьютер подключен к Интернет. В этом случае Вам покажут время прохождения пробных пакетов до сервера yandex, а заодно ip - адрес. В роле "переводчика" выступает DNS - сервер, специальный компьютер, хранящий таблицы соответствия доменных имен ip-адресам, причем таких компьютером может быть много. Интернет изначально задумывался как отказоустойчивая сеть (для военных в США), а надежность должно было обеспечить отсутствие единого центра. Группа пакетов, отправленная в рамках одного соединения, может идти разными путями (на то она и всемирная паутина), управляется этот процесс маршрутизаторами, хранящими различные пути до различных подсетей. Теперь понятно, почему очередность поступления пакетов адресату может отличаться от исходной. Также понятно, что, если злодей подменит запись в таблице адресов, то вместо нужного сайта клиент может угодить на сайт-двойник, где введет свои пароли и другие данные. Утешает то, что подмена таблиц публичных DNS является весьма трудным делом. Но, следует помнить, что браузер первым делом просматривает локальную таблицу, хранящуюся в специальном файле на Вашем компьютере. Если вирусу удастся внести туда свою запись, то введя www.yandex.ru, Вы запросто можете попасть на совершенно другой сайт, быть может, внешне похожий. Если ваш файервол сообщает, что какая-то программа пытается изменить файл с таблицей адресов, стоит обследовать компьютер на предмет опасной заразы.
Для установления соединения мало знать адрес компьютера. Непременными атрибутами запроса на подключение являются протокол (язык, на котором решено общаться) и номер порта, к которому мы подключаемся. Протокол мы каждый раз указываем в адресной строке браузера (тот самый http, хотя можно набрать ftp и связаться с ftp-сервером, если он есть на сервере). Номер порта обычно явно не указывается, в этом случае для http подразумевается порт 80, на котором "висит" интернет-сервер (не в смысле "мощный компьютер", а в смысле "программа, обслуживающая клиентские приложения". На компьютере может быть запущено множество сервисов (тот же ftp), каждый слушает "свой" порт. Если интернет-браузеры обеспечивают в основном подключение по http и просмотр web-страниц, то для подключения к другим сервисам существуют специальные программы, как стандартные, так и "хакерские" Если установлена программа ICQ, то она открывает свой порт и "слушает" его на предмет желающих подключиться и пообщаться. Чем больше на машине запущено сетевых сервисов, тем больше вероятность, что среди них найдется уязвимый, ведь каждый открытый порт - дверь систему, а надежен ли замок - тот еще вопрос. Существует целый класс программ - сканеры портов, которые опрашивают заданный диапазон портов, перебирая номера и выдают список открытых. Забегая вперед, скажу, что есть "сканеры безопасности", которые не только сканируют порты, но и исследуют в автоматическом режиме целевой хост на наличие всех известных уязвимостей.