Читаем Linux-сервер своими руками полностью

# Сценарий управления пакетной фильтрацией.,

# Если правил нет, то ничего не делать.

[ –f /etc/ipchains.rules ] || exit 0

case "51" in

start)

 echo –n "Включение пакетной фильтрации:" /sbin/ipchains-restore < /etc/ipchains.rules || exit 1

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

 echo ". "

 ;;

stop)

 echo –n "Отключение пакетной фильтрации:"

 echo 0 > /proc/sys/net/ipv4/ip_forward

 /sbin/ipchains –X

 /sbin/ipchains –F

 /sbin/ipchains –P input ACCEPT

 /sbin/ipchains –P output ACCEPT

 /sbin/ipchains –P forward ACCEPT

 echo " . "

 ;;

*)

 echo "Использование: /etc/init.d/packetfliter {start|stop}"

 exit 1

 ;;

esac

exit 0

Этот сценарий нужно добавить в сценарии загрузки системы.

<p>14.3. Различные примеры</p>

В этом пункте представлены несколько примеров для обеспечения безопасности вашей сети.

<p>14.3.1. Пакеты SYN</p>

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

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

Для фильтрации пакетов SYN нужно использовать опцию –у. Например, попытки соединения по протоколу TCP от узла 192.168.1.34 указываются так:

–р TCP –s 192.168.1.34 –у

<p>14.3.2. Фрагментация пакетов</p>

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

Ядро должно анализировать начало пакета, которое содержится в первом фрагменте. Ведь только в первом фрагменте находится заголовок исходного пакета. Для решения этой проблемы вам нужно перекомпилировать ядро с включенной опцией IP: always defragment.

В результате любое правило фильтрации не будет работать для фрагментированных пакетов. При этом только первый фрагмент будет обработан как пакет, а остальные не будут обрабатываться. Однако можно определить правило специально для фрагментированных пакетов. Это можно сделать с помощью опции –f. Эту опцию нельзя применять при указании портов протоколов TCP или UDP, кода ICMP или пакетов SYN.

Следующая команда отбросит все фрагменты, приходящие на компьютер server.domain.com:

# ipchains –A output –f –d 192.168.1.1 –j DENY

<p>14.3.3. Пинг смерти</p>

Есть хорошая новость по этому поводу: ОС Linux невосприимчива к пингу смерти. Напомню, что пинг смерти заключается в посылке большого пакета ICMP, который переполняет буферы стека TCP на компьютере-получателе.

<p>14.3.4. IР-спуфинг</p>

IP-спуфинг — это отправление пакетов с поддельным IP-адресом источника. Так как фильтрация пакета принимает решения на основании адреса источника, то IP-спуфинг используется, чтобы ввести пакетный фильтр в заблуждение.

Для решения этой проблемы мы можем использовать Проверку Адреса Источника (Source Address Verification) или использовать следующие команды IPChains:

ipchains –A prov –s 192.168.1.1/16 –l –j DENY

ipchains –A prov –s 127.0.0.1/8 –l –j DENY

Вторая команда нужна для ядер версий 2.0.x, но если мы ее укажем, явно хуже не будет. Опция –l позволяет протоколировать «плохие» пакеты. Файлом протокола является /var/log/messages. Ядра версий 2.1.x автоматически отклоняют пакеты, приходящие с адресов 127.*, которые зарезервированы для локального интерфейса.

Для включения проверки адреса источника можно воспользоваться сценарием, представленном в листинге 14.2.

Листинг 14.2. Запрещение IР-спуфинга

# Наилучший способ: включить Source Address Verification и защитить

# от спуфинга все текущие и будущие интерфейсы.

if [ –e /proc/sys/net/ipv4/conf/all/rp_filter ] ; then

 echo –n "Установка защиты от спуфинга… "

 for f in /proc/sys/net/ipv4/conf/*/rp_fliter; do

  echo 1 > $f

 done

 echo "готово."

else

Перейти на страницу:

Все книги серии Секреты мастерства

Похожие книги