Уничтожение полученного маршрута от отправителя

Уничтожение полученного маршрута от отправителя

К сожалению, использование параметра маршрутизации образует брешь в системе обеспечения безопасности программ, выполняющих аутентификацию по IP-адресам (сейчас такая проверка считается недостаточной). Если хакер отправляет пакеты, используя один из доверенных адресов в качестве адреса отправителя, но указывая в качестве одного из промежуточных адресов маршрута от отправителя свой собственный адрес, возвращаемые по обратному маршруту пакеты будут попадать к хакеру, а «отправитель», чьим адресом хакер прикрывался, никогда не узнает об этом. Начиная с выпуска Net/1 (1989), серверы rlogind и rshd использовали код, аналогичный следующему:

u_char buf[44];

char lbuf[BUFSIZ];

int optsize;

optsize = sizeof(buf);

if (getsockopt(0, IPPROTO_IP, IP_OPTIONS,

 buf, &optsize) == 0 && optsize != 0) {

 /* форматируем параметры как шестнадцатеричные числа для записи в lbuf[] */

 syslog(LOG_NOTICE,

  "Connection received using IP options (ignored):%s", lbuf);

 setsockopt(0, ipproto, IP_OPTIONS, NULL, 0);

}

Если устанавливается соединение с какими-либо параметрами IP (значение переменной optsize, возвращенное функцией getsockopt, не равно нулю), то с помощью функции syslog делается запись соответствующего сообщения и вызывается функция setsockopt для очистки всех параметров. Таким образом предотвращается отправка последующих сегментов TCP для данного соединения по обращенному маршруту от отправителя. Сейчас уже известно, что этой технологии недостаточно, так к моменту установления соединения трехэтапное рукопожатие TCP будет уже завершено и второй сегмент (сегмент SYN-ACK на рис. 2.5) будет уже отправлен по обращенному маршруту от отправителя к клиенту. Даже если этот сегмент не успеет дойти до клиента, то во всяком случае он дойдет до некоторого промежуточного узла, входящего в маршрут от отправителя, где, возможно, затаился хакер. Так как предполагаемый хакер видел порядковые номера TCP в обоих направлениях, даже если никаких других пакетов по маршруту от отправителя послано не будет, он по-прежнему сможет отправлять серверу сообщения с правильным порядковым номером.

Единственным решением этой возможной проблемы является запрет на прием любых соединений TCP, приходящих по обращенному маршруту от отправителя, когда вы используете IP-адрес от отправителя для какой-либо формы подтверждения (как, например, в случае с rlogin или rshd). Вместо вызова функции setsockopt во фрагменте кода, приведенном ранее, закройте только что принятое соединение и завершите только что порожденный процесс сервера. Второй сегмент трехэтапного рукопожатия отправится, но соединение не останется открытым и не будет использоваться далее.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Как найти настоящего отправителя письма

Из книги Интернет. Новые возможности. Трюки и эффекты [litres] автора Баловсяк Надежда Васильевна

Как найти настоящего отправителя письма Просмотрев заголовок письма и определив IP-адрес машины, теоретически можно узнать, кто настоящий отправитель. Сделать это можно, воспользовавшись службой Whois (http://www.whois.net) (рис. 5.5). Она позволяет по IP определить провайдера, его


6.16.3 Описание маршрута

Из книги Программирование на языке Пролог для искусственного интеллекта автора Братко Иван

6.16.3 Описание маршрута Можно подумать, что для маршрутизации от источника достаточно создать список маршрутизаторов между источником и точкой назначения. Однако это не так. В таблице 6.4 представлено содержимое полей IP-адреса источника (Source IP Address), IP-адреса места


8.6.1 Использование маски маршрута

Из книги Интернет – легко и просто! автора Александров Егор

8.6.1 Использование маски маршрута Для поиска совпадения с адресом назначения (например, 128.36.2.25) нужно сравнить 128.36.2.25 с каждым элементом маршрута назначения (Route Destination). Элементы маски маршрута (Route Mask) указывают, сколько бит из 128.36.2.25 должны совпадать с битами маршрута


8.6.6 Возраст маршрута

Из книги Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform автора Кёртен Роб

8.6.6 Возраст маршрута Столбец возраста маршрута (Route Age) отслеживает количество секунд от последнего изменения или проверки каждого из маршрутов. Элементы таблицы, созданные через RIP, будут считаться недействительными по тайм-ауту возраста, если их невозможно


8.7.1 Использование маски маршрута

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

8.7.1 Использование маски маршрута Для поиска совпадения с назначением 128.121.54.101 нужно применить маску маршрута для каждого элемента и сравнить результат с назначением маршрута (Route Destination). Применение маски 255.255.255.0 к четвертой строке даст 128.121.54.0, что совпадает с элементом


8.7.7 Возраст маршрута

Из книги Готовимся к пенсии: осваиваем Интернет автора Ахметзянова Валентина Александровна

8.7.7 Возраст маршрута Для протокола IGRP столбец возраста маршрута (Route Age) означает количество секунд, прошедших со времени последнего изменения или проверки маршрута. Строки таблицы маршрутизации, получаемые через этот протокол, должны время от времени


13.2.1. И/ИЛИ-представление задачи поиска маршрута

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

13.2.1. И/ИЛИ-представление задачи поиска маршрута Для задачи отыскания кратчайшего маршрута (рис. 13.1) И/ИЛИ-граф вместе с функцией стоимости можно определить следующим образом:• ИЛИ-вершины представляются в форме X-Z, что означает: найти кратчайший путь из X в Z.• И-вершины


Уничтожение

Из книги автора

Уничтожение Допустим, вы обнаружили, что ваш компьютер кишмя кишит всевозможными вирусами. Что делать?– Ни в коем случае не поддавайтесь панике! Наверное, ни один вирус не сможет натворить столько бед, сколько смогут дрожащие руки перепуганного пользователя. Поэтому


Идентификаторы отправителя, каналы и другие параметры

Из книги автора

Идентификаторы отправителя, каналы и другие параметры Мы с вами пока не обсуждали различные параметры, используемые в ранее рассмотренных примерах, чтобы можно было сконцентрировать внимание на самих принципах обмена сообщениями. Теперь поговорим об этих параметрах


3.1.3. Уничтожение процесса

Из книги автора

3.1.3. Уничтожение процесса Для уничтожения процесса предназначена команда kill. Ей достаточно указать идентификатор требуемого процесса.Команда kill посылает процессу сигнал SIGTERM, являющийся запросом на завершение.[10] По умолчанию, если в программе отсутствует обработчик


Поиск маршрута по картам Яндекса

Из книги автора

Поиск маршрута по картам Яндекса А напоследок хочу сказать еще об одной замечательной функции, которой я пользуюсь постоянно и без которой было бы намного трудней… Это маршруты на карте Москвы. Очень часто приходится ехать по какому-то незнакомому адресу, но как туда


8.8. Проверка полученного ответа

Из книги автора

8.8. Проверка полученного ответа В конце раздела 8.6 мы упомянули, что любой процесс, который знает номер динамически назначаемого порта клиента, может отправлять дейтаграммы нашему клиенту, и они будут перемешаны с нормальными ответами сервера. Все, что мы можем сделать, —


21.5. Многоадресная передача от отправителя

Из книги автора

21.5. Многоадресная передача от отправителя Внедрение многоадресной передачи в глобальные сети было затруднено несколькими обстоятельствами. Главная проблема заключается в том, что протокол маршрутизации MRP, описанный в разделе 21.4, должен обеспечивать доставку данных от