Ядро 2.1/2.2, ipchains


#!/bin/sh #04/04/1999 #Пример скрипта rc.firewall для новых ядер версий 2.1/2.2, использующих ipchains, #определяющий пользовательские потоки для каждого интерфейса. Здесь есть также #правила, защищающие от spoofing-а, которые может быть и не очень нужны - #подобная защита уже встроена в ядро. #Вопросы и предложения посылайте по адресу acj@home.com.

#--------------------------------------------------------------------- #Переменные #---------------------------------------------------------------------

#локальный ethernet-интерфейс localip= localif=eth0

#статический ethernet-интерфейс staticip= staticif=eth1

#интерфейс обратной петли loopback=lo

PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"

#--------------------------------------------------------------------- #Удаляем все правила для входящего, исходящего и проходящего потоков #По умолчанию отбрасываем все пакеты #---------------------------------------------------------------------

#устанавливаем запрет всего для входящего потока ipchains -P input DENY

#удаляем все правила для входящего потока ipchains -F input

#---------------------------------------------------------------------

#устанавливаем запрет всего для исходящего потока ipchains -P output DENY

#удаляем все правила для исходящего потока ipchains -F output

#---------------------------------------------------------------------

#устанавливаем запрет всего для проходящего потока ipchains -P forward DENY

#удаляем все правила для проходящего потока ipchains -F forward

#--------------------------------------------------------------------- #удаляем все правила вообще (в том числе и пользовательские) #ipchains -F

#удаляем все пользовательские потоки - вам это может понадобиться #ipchains -X

#--------------------------------------------------------------------- #Политика Firewall для входящего потока #---------------------------------------------------------------------



#создаем пользовательский входящий поток для статического интерфейса ipchains -N $staticif"-i"


# в этом потоке удаляем все правила (на всякий случай) ipchains -F $staticif"-i"

#блокируем все входящие SYN-пакеты на всех портах на статическом интерфейсе #это может показаться грубым, но это правильно #ipchains -A $staticif"-i" -j DENY -p tcp -y -i $staticif -s 0/0 \ #-d $staticip : -l

#запрещаем все пакеты, идущие из статического интерфейса, "от локальных машин" (spoofing) #записываем это в журнал ipchains -A $staticif"-i" -j DENY -i $staticif -s $localip/16 -d 0/0 -l

#разрешаем все пакеты, идущие, откуда угодно, на статический интерфейс ipchains -A $staticif"-i" -j ACCEPT -i $staticif -s 0/0 -d $staticip/32

#запрещаем все остальные входящие пакеты - записываем это в журнал ipchains -A $staticif"-i" -j DENY -s 0/0 -d 0/0 -l

#---------------------------------------------------------------------

#создаем пользовательский входящий поток для интерфейса локальной сети ipchains -N $localif"-i"

#в этом потоке удаляем все правила (на всякий случай) ipchains -F $localif"-i"

#разрешено посылать пакеты, куда угодно, с локального интерфейса с локальных машин ipchains -A $localif"-i" -j ACCEPT -i $localif -s $localip/24 -d 0/0

#запрещаем все остальные входящие пакеты - записываем это в журнал ipchains -A $localif"-i" -j DENY -s 0/0 -d 0/0 -l

#---------------------------------------------------------------------

#создаем пользовательский входящий поток для интерфейса обратной петли ipchains -N $loopback"-i"

#в этом потоке удаляем все правила (на всякий случай) ipchains -F $loopback"-i"

#разрешено все, идущее на интерфейс обратной петли ipchains -A $loopback"-i" -j ACCEPT -i $loopback -s 0/0 -d 0/0

#запрещаем все остальные входящие пакеты - записываем это в журнал ipchains -A $loopback"-i" -j DENY -s 0/0 -d 0/0 -l

#-------------------------------------------------------------------------- #Политика Firewall для проходящего потока #--------------------------------------------------------------------------



# создаем пользовательский проходящий поток для статического интерфейса ipchains -N $staticif"-f"

#в этом потоке удаляем все правила (на всякий случай) ipchains -F $staticif"-f"

#маскарадинг для всего, что идет из локальной сети, куда угодно ipchains -A $staticif"-f" -j MASQ -i $staticif -s $localip/24 -d 0/0

#запрещаем все остальные проходящие пакеты - записываем это в журнал ipchains -A $staticif"-f" -j DENY -s 0/0 -d 0/0 -l

#---------------------------------------------------------------------

#создаем пользовательский проходящий поток для интерфейса локальной сети ipchains -N $localif"-f"

#в этом потоке удаляем все правила (на всякий случай) ipchains -F $localif"-f"

#запрещаем все остальные проходящие пакеты - записываем это в журнал ipchains -A $localif"-f" -j DENY -s 0/0 -d 0/0 -l

#---------------------------------------------------------------------

#создаем пользовательский проходящий поток для интерфейса обратной петли ipchains -N $loopback"-f"

#в этом потоке удаляем все правила (на всякий случай) ipchains -F $loopback"-f"

#запрещаем все остальные проходящие пакеты - записываем это в журнал ipchains -A $loopback"-f" -j DENY -s 0/0 -d 0/0 -l

#--------------------------------------------------------------------- #Политика Firewall для исходящего потока #---------------------------------------------------------------------

#создаем пользовательский исходящий поток для статического интерфейса ipchains -N $staticif"-o"

#в этом потоке удаляем все правила (на всякий случай) ipchains -F $staticif"-o"

#запрещены исходящие через статический интерфейс пакеты для локальной сети (ошибка маршрутизации) ipchains -A $staticif"-o" -j DENY -i $staticif -s 0/0 -d $localip/24 -l

#запрещены исходящие через статический интерфейс пакеты из локальной сети (ошибка маскарадинга) ipchains -A $staticif"-o" -j DENY -i $staticif -s $localip/24 -d 0/0 -l



# разрешено все остальное от статического интерфейса ipchains -A $staticif"-o" -j ACCEPT -i $staticif -s $staticip/32 -d 0/0

#запрещаем все остальные исходящие пакеты - записываем это в журнал ipchains -A $staticif"-o" -j DENY -s 0/0 -d 0/0 -l

#---------------------------------------------------------------------

#создаем пользовательский исходящий поток для интерфейса локальной сети ipchains -N $localif"-o"

#в этом потоке удаляем все правила (на всякий случай) ipchains -F $localif"-o"

#разрешены пакеты, откуда угодно, на локальном интерфейса для локальных машин ipchains -A $localif"-o" -j ACCEPT -i $localif -s 0/0 -d $localip/24

#запрещаем все остальные исходящие пакеты - записываем это в журнал ipchains -A $localif"-o" -j DENY -s 0/0 -d 0/0 -l

#---------------------------------------------------------------------

#создаем пользовательский исходящий поток для интерфейса обратной петли ipchains -N $loopback"-o"

#в этом потоке удаляем все правила (на всякий случай) ipchains -F $loopback"-o"

#разрешено все, идущее из интерфейса обратной петли ipchains -A $loopback"-o" -j ACCEPT -i $loopback -s 0/0 -d 0/0

#запрещаем все остальные исходящие пакеты - записываем это в журнал ipchains -A $loopback"-o" -j DENY -s 0/0 -d 0/0 -l

#-------------------------------------------------------------------------- #Для большей уверенности разрешаем ядру переадресацию пакетов #--------------------------------------------------------------------------

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

#-------------------------------------------------------------------------- #добавляем в стандартные потоки правила со ссылками на пользовательские потоки #--------------------------------------------------------------------------

#входящий поток на интерфейсе локальной сети ipchains -A input -i $localif -j $localif"-i"

#входящий поток на статическом интерфейсе ipchains -A input -i $staticif -j $staticif"-i"



# входящий поток на интерфейсе обратной петли ipchains -A input -i $loopback -j $loopback"-i"

#-------------------------------------------------------------------------

#исходящий поток на интерфейсе локальной сети ipchains -A output -i $localif -j $localif"-o"

#исходящий поток на статическом интерфейсе ipchains -A output -i $staticif -j $staticif"-o"

#исходящий поток на интерфейсе обратной петли ipchains -A output -i $loopback -j $loopback"-o"

#-------------------------------------------------------------------------

#проходящий поток на интерфейсе локальной сети ipchains -A forward -i $localif -j $localif"-f"

#проходящий поток на статическом интерфейсе ipchains -A forward -i $staticif -j $staticif"-f"

#проходящий поток на интерфейсе обратной петли ipchains -A forward -i $loopback -j $loopback"-f"

#--------------------------------------------------------------------- #Проверка Сверх-Параноика --- несмотря на отказ всем пакетам по умолчанию, #блокируем все пакеты на всех интерфейсах #---------------------------------------------------------------------

#запрещаем все остальные входящие пакеты - записываем это в журнал ipchains -A input -j DENY -s 0/0 -d 0/0 -l

#запрещаем все остальные исходящие пакеты - записываем это в журнал ipchains -A output -j DENY -s 0/0 -d 0/0 -l

#запрещаем все остальные проходящие пакеты - записываем это в журнал ipchains -A forward -j DENY -s 0/0 -d 0/0 -l

exit 0




Содержание раздела