The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Методы сокрытия сервисов средствами..."
Отправлено auto_tips, 14-Янв-10 14:02 
Все действия в нижеизложенной статье выполнялись в debian 5, стандартными средствами. Методы предназначены для сокрытия сервисов.

Ниже представлен простой шаблон правил:

   iptables -P INPUT DROP
   iptables -P OUTPUT DROP
   iptables -P FORWARD DROP

   iptables -A INPUT -p all -i lo -j ACCEPT
   iptables -A OUTPUT -p all -o lo -j ACCEPT

   ... ЗДЕСЬ НАШЕ ПРАВИЛО

   iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
   iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
   iptables -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT


++ 1. Использование нестандартного диапазона tcp портов при установление исходящего соединения.

Идея заключается в установлении нестандартных номеров портов (для исходящих соединений) на КЛИЕНТСКОЙ СТОРОНЕ и фильтрации фаерволом на сервере при установлении соединения по этим портам, тем самый делая наш sshd не видимым для всех и доступным для нас :)

Реализуем идею на практике: По умолчанию диапазон портов в linux равен от 32768 до 61000 (значения в различных дистрибутивах могут отличатся)

посмотреть установленные значения можно командой

   cat /proc/sys/net/ipv4/ip_local_port_range
   32768 61000

изменяем на, к примеру 30000 32500 (на клиентской ОС linux)

   echo "30000 32500">/proc/sys/net/ipv4/ip_local_port_range

правило будет выглядеть так:

   iptables -A INPUT -p tcp --syn --sport 30000:32500 --dport 22 -j ACCEPT

Правило означает: входящие подключение по протоколу tcp с флагами:FIN,SYN,RST,ACK/SYN с диапазона портов 30000:32500 на порт 22 разрешить


++ 2. Фильтрация на основе ttl (время жизни пакета)

Здесь можно пойти несколькими путями:

1) Суть заключается в привязывании к числу маршрутизаторов, через которые проходит пакет (ttl уменьшается на 1 при прохождении маршрутизатора), а так как количество маршрутизаторов в разных сетях разное, то получаем значение ttl равное числу по умолчанию минус число пройденных маршрутизаторов.

В данном варианте на клиентской ОС ничего менять не будем.
Выполним трассировку до нашего сервера, затем от значения ttl по умолчанию отнимем количество хостов до нашего сервера (default ttl - traceroute) получим значение ttl по которому будем принимать пакеты на стороне сервера.

В linux значение ttl по умолчанию равно 64, посмотреть можно командой

   cat /proc/sys/net/ipv4/ip_default_ttl
   64

Пример: выполняем трассировку

   tcptraceroute ya.ru
   ...
   9 ya.ru (93.158.134.8) [open] 556.844 ms 474.811 ms *

Всего в пути встретилось 9 узлов, значит к серверу придёт пакет с ttl=55 (64-9=55)
правило будет выглядеть так:

   iptables -A INPUT -p tcp --syn --dport 22 -m ttl --ttl-eq 55 -j ACCEPT

Правило означает: входящие подключение по протоколу tcp с флагами:FIN,SYN,RST,ACK/SYN на порт 22 с временем жизни 55 разрешить.

Иногда бывает маршрут по которому проходящий пакет незначительно изменяется (к примеру, провайдер пускает трафик по разным канал в целях балансировки), следовательно и количество маршрутизаторов, по которым идёт пакет, тоже меняется, тогда на всякий случай добавим к правилу ttl +2 и ttl -2

Правило будет выглядеть так:

   iptables -A INPUT -p tcp --syn --dport 22 -m ttl --ttl-gt 52 -m ttl --ttl-lt 58 -j ACCEPT

Правило означает: входящие подключение по протоколу tcp с флагами:FIN,SYN,RST,ACK/SYN на порт 22 с временем жизни больше 52 и меньше 58 (match TTL > 52 TTL match TTL < 58) разрешить


2) Второй вариант является продолжением первого, основное отличие в установлении на клиентской стороне нестандартного значения ttl, по которому на сервере будем фильтровать пакеты.

Например ttl=80:

   echo "80" > /proc/sys/net/ipv4/ip_default_ttl

При количестве маршрутизаторов 12, составим правило с запасом которое будет выглядеть так:

   iptables -A INPUT -p tcp --syn --dport 22 -m ttl --ttl-gt 65 -m ttl --ttl-lt 70 -j ACCEPT

Правило означает: входящие подключение по протоколу tcp с флагами:FIN,SYN,RST,ACK/SYN на порт 22 с временем жизни больше 65 и меньше 70 (match TTL > 65 TTL match TTL < 70) разрешить


++ 3. Фильтрация на основе mss (максимальный размер сегмента)

Размер mss рассчитывается по формуле: mtu минус 40 байт
mtu по умолчанию обычно равно 1500 байтам, итого значение mss по умолчанию равно 1460 байт
Посмотреть mtu можно командой ifconfig

При фильтрации по mss на сервере, на клиентской стороне потребуется лишь изменить mtu сетевого интерфейса (желательно немного уменьшить).

Реализуем идею на практике:
На клиентской стороне ставим mtu=1440

   ifconfig eth0 mtu 1440

На сервере правило будет выглядеть так:

   iptables -A INPUT -p tcp --syn --dport 22 -m tcpmss --mss 1400 -j ACCEPT

Правило означает: входящие подключение по протоколу tcp с флагами:FIN,SYN,RST,ACK/SYN на порт 22 с размером mss=1400 разрешить

++ 4. Защита от установки пользователям сервера исходящих соединений во внешний мир.

Например заблокируем возможность соединения пользователю с правами которого работает web сервер

   iptables -A INPUT -p tcp --syn --dport 80 -j ACCEPT
   iptables -A OUTPUT -p tcp -m owner --uid-owner 33 -m state --state NEW -j DROP

В первой цепочки разрешаем входящие соединения на 80 порт по протоколу tcp, во второй запрещаем устанавливать новые исходящие соединения пользователю (uid 33) с правами которого работает web сервер.

URL: http://linux-online-ru.blogspot.com/2010/01/sshd-iptables.html http://linux-online-ru.blogspot.com/2010/01/web-server-backc...
Обсуждается: https://www.opennet.ru/tips/info/2263.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру