Личный блог Suvan`a.

Работая и играя с Linux... И что из этого иногда получается.

Параметры /proc

Рубрика: Безопасность -> Топология сети
Метки: | | |
Понедельник, 16 марта 2009 г.
Просмотров: 5917

Опции маршрутизации.

     В каталоге /proc/sys/net/ipv4/conf содержится подкаталоги для каждого интерфейса, в частности для default и all.

dr-xr-xr-x 2 root root 0 Мар 16 09:25 all

dr-xr-xr-x 2 root root 0 Мар 16 09:25 br0

dr-xr-xr-x 2 root root 0 Мар 16 09:25 default

dr-xr-xr-x 2 root root 0 Мар 16 09:25 lo

dr-xr-xr-x 2 root root 0 Мар 16 09:25 eth0

     Для каждого интерфейса в каталогах находятся параметры сетевых интерфейсов:


# ls -l /proc/sys/net/ipv4/conf/all/

-rw-r--r-- 1 root root 0 Мар 16 09:26 accept_redirects

-rw-r--r-- 1 root root 0 Мар 16 09:26 accept_source_route

-rw-r--r-- 1 root root 0 Мар 16 09:26 arp_filter

-rw-r--r-- 1 root root 0 Мар 16 09:26 bootp_relay

-rw-r--r-- 1 root root 0 Мар 16 09:26 forwarding

-rw-r--r-- 1 root root 0 Мар 16 09:26 log_martians

-r--r--r-- 1 root root 0 Мар 16 09:26 mc_forwarding

-rw-r--r-- 1 root root 0 Мар 16 09:26 medium_id

-rw-r--r-- 1 root root 0 Мар 16 09:26 proxy_arp

-rw-r--r-- 1 root root 0 Мар 16 09:26 rp_filter

-rw-r--r-- 1 root root 0 Мар 16 09:26 secure_redirects

-rw-r--r-- 1 root root 0 Мар 16 09:26 send_redirects

-rw-r--r-- 1 root root 0 Мар 16 09:26 shared_media

-rw-r--r-- 1 root root 0 Мар 16 09:26 tag

     Во всех каталогах интерфейсов содержится файл accept_source_routing. Когда в файле записано значение 1, маршрутизатор может принимать маршрутизацию от источника. В целях безопасности эту функцию нужно выключить, то есть записать 0 во все файлы accept_source_routing для каждого интерфейса.

     Эту задачу можно автоматизировать следующим образом: просто добавьте следующие команды в файл /etc/sysctl.conf:

net.ipv4.conf.all.accept_source_routing = 0 

net.ipv4.conf.default.accept_source_routing = 0 

net.ipv4.conf.lo.accept_source_routing = 0 

net.ipv4.conf.br0.accept_source_routing = 0 

net.ipv4.conf.eth0.accept_source_routing = 0 

     Но лучше использовать следующий фрагмент сценария:

for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do echo 0 > $f done

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

     Проверка маршрутизации - это попытка ядра убедиться, что интерфейс принимает только пакеты с корректными IP-адресами. В частности, если па­кет с внутренними адресами поступает на внешний интерфейс, ядро долж­но отбросить такой пакет. Эту функцию нужно включить:

for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $f done

     Маршрутизаторы исполь­зуют ICMP-перенаправления для уведомления узлов о наилучшем маршруте. Функция нужная, но она может быть использована хакерами для MITM-атак, следовательно лучше ее выключить:

for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do echo 0 > $f done

     Безопасные перенаправления (secure redirects) отправляются шлюзом по умолчанию, их нужно принимать:

for f in /proc/sys/net/ipv4/conf/*/secure_redirects; do echo 1 > $f done

     Отправку перенаправлений другим узлам сети нужно запретить:

for f in /proc/sys/net/ipv4/conf/*/send_redirects; do echo 0 > $f done

     Параметры безопасности.

     ICMP-пинги, отправленные в широковещатель­ную сеть, могут использоваться для DoS-атаки (Smurf), следовательно, данные «пинги» нужно запрещать или игнорировать:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

     Игнорировать подделанные сообщения об ошибках тоже нужно:

echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

     Есть еще файл log_martians, присутствующий в каталоге каждого интерфейса. Martians - это так называемые Марсиане (юмористы). Под марсианами рассматриваются странные неуместные пакеты, такие пакеты отправляются хакером с бессмысленного адреса. Лучше протоколировать все эти пакеты для последующего анализа:

for f in /proc/sys/net/ipv4/conf/*/log_martians; do echo 1 > $f done

     ICMP-сообщения.

      «Пинги» используются в диагностических целях и бывают полезны, но они могут использоваться для DoS-атак. Отвечая на «пинг», система сообщает хакеру, что по этому адресу есть машина и она включена.

     Обычно «пинги» разрешаются, но ограничивается их частота, чтобы их нельзя было использовать для DoS-атак. В некоторых системах частота ICMP-сообщений типа 0 (эхо-ответ) устанавливается в файле /proc/sys/net/ipv4/icmp_echoreply_rate, в других — /proc/sys/net/ipv4/icmp_ratelimit.

     Установим ограничение: 1 ответ каждые 2 секунды:

echo 200 > /proc/sys/net/ipv4/icmp_ratelimit

     Если нужен 1 ответ в секунду, указываем значение 100.

     Файл /proc/sys/net/ipv4/icmp_ratelimit задает ограничение для ICMP-сообщений всех типов. Если нужно установить ограничение частоты в зависимости от типа пакетов, нужно оперировать файлом /proc/sys/net/ipv4/icmp_ratemask. Значение в этом файле хранится в виде маски, которая получается суммированием слагаемых 2n,где n - это тип ICMP-сообщения.

Номер (n)

ICMP-тип

0

Эхо-ответ (echo reply)

3

Получатель недоступен (destination unreachable)

4

Подавление источника (source quench)

5

Подавление источника (source quench)

8

Эхо (echo)

11

Время вышло (time exceeded)

12

Проблема с параметром (parameter problem)

13

Временная метка (timestamp)

14

Ответ временной метки (timestamp reply)

15

Информационный запрос (information request)

16

Информационный ответ (information reply)

17

Запрос адреса (address request)

18

Ответ адреса (address reply)

     Маска по умолчанию - 6188, в ней используются сообщения типов 3, 4, 11 и 12:

ratemask = 23 + 24 + 211 + 212

     Параметры TCP.

     DoS-атака «SYN-flood», при которой жертва получает большое количество SYN-пакетов, запрашивающих открытие соедине­ния. Эти SYN-пакеты используют системные ресурсы жертвы и не дают устанавливать соединения обычным пользовате­лям. С помощью файловой системы /рrос мож­но предотвратить атаки подобного рода и повысить производи­тельность. Описываемые в этом пункте файлы находятся в каталоге /proc/sys/net/ipv4/.

SYN-атака

     Если клиент закрывает соединение, он посылает удаленному сервису па­кет FIN, удаленный компьютер в ответ на этот пакет отправляет подтверж­дение - пакет АСК и пакет FIN, который клиент должен подтвердить, то есть отправить собственный АСК.

     Не все клиенты отправляют последний АСК. Это является причиной «подвисания» соединения - ресурсы, используемые соединением, не ос­вобождаются, пока не пройдет определенное время (таймаут). Установить таймаут можно в файле tcp_fin_timeout. Значение по умолчанию - 60 секунд. 20 - это наименьшее допустимое значение для таймаута.

     Дополнительной защитой от SYN-атаки является так называемый SYN-Cookies. Относительно SYN-пакета Cookies означает номер ISN - начальный порядковый номер. ISN - это число, которое выбирает ядро при обмене пакетами для установки соединения. SYN Cookies поддерживаются всеми стандартами TCP и для их использования не нужно производить какую-то дополнительную настройку клиента. Чтобы включить поддержку SYN Cookies в Linux, запишите значение 1 в файл tcp_syncookies:

echo l > /proc/sys/net/ipv4/tcp_syncookies

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

     Еще один вид защиты от SYN-атаки - так называемый SYN BACKLOG. Подробности рассмотрены ниже.

     Также можно увеличить размер очереди SYN-пакетов - устано­вить максимальное число входящих SYN-пакетов. При превышении этого числа сервер будет отбрасывать SYN-пакеты. Максимальный размер оче­реди SYN-пакетов задается в файле tcp_max_syn_backlog . Значение в этом файле напрямую зависит от размера оперативной памяти. Если у компьютера более 1024 Мб оперативной памяти, можно установить значение 8192 или больше.

# echo 8192 > /proc/sys/net/ipv4/tcp_max_syn_backlog