|
|
|
Примеры скриптов настройки маскарадингаЯдро 2.0, ipfwadm
#!/bin/sh
#04/04/1999
#Пример скрипта rc.firewall для ядер версий 2.0, использующих ipfwadm
#Я не могу полностью поручиться за этот скрипт. Я нашел его
#несколько лет назад и немножко подправил.
#Вопросы и предложения посылайте по адресу acj@home.com.
#---------------------------------------------------------------------
#Переменные
#---------------------------------------------------------------------
#локальный ethernet-интерфейс
localip=
localif=eth0
#статический ethernet-интерфейс
staticip=
staticif=eth1
PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
#---------------------------------------------------------------------
#Политика Firewall для входящего потока
#---------------------------------------------------------------------
#удаляем все правила для входящего потока
/sbin/ipfwadm -I -f
#устанавливаем запрет всех пакетов для входящего потока
/sbin/ipfwadm -I -p deny
#---------------------------------------------------------------------
#разрешено посылать пакеты, куда угодно, с локального интерфейса с локальных машин
/sbin/ipfwadm -I -a accept -V $localip -S $localip/24 -D 0.0.0.0/0
#запрещаем все пакеты, идущие из статического интерфейса, "от локальных машин" (spoofing)
#записываем это в журнал
/sbin/ipfwadm -I -a deny -V $staticip -S $localip/24 -D 0.0.0.0/0 -o
#разрешаем все пакеты, идущие, откуда угодно, на статический интерфейс
/sbin/ipfwadm -I -a accept -V $staticip -S 0.0.0.0/0 -D $staticip/32
#разрешаем все пакеты, идущие через интерфейс обратной петли
/sbin/ipfwadm -I -a accept -V 127.0.0.1 -S 0.0.0.0/0 -D 0.0.0.0/0
#запрещаем все остальные входящие пакеты - записываем это в журнал
/sbin/ipfwadm -I -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o
#---------------------------------------------------------------------
#Политика Firewall для исходящего потока
#---------------------------------------------------------------------
#удаляем все правила для исходящего потока
/sbin/ipfwadm -O -f
#устанавливаем запрет всего для исходящего потока
/sbin/ipfwadm -O -p deny
#---------------------------------------------------------------------
#разрешены пакеты, откуда угодно, на локальном интерфейса для локальных машин
/sbin/ipfwadm -O -a accept -V $localip -S 0.0.0.0/0 -D $localip/24
#запрещены исходящие через статический интерфейс пакеты для локальной сети (ошибка маршрутизации)
/sbin/ipfwadm -O -a deny -V $staticip -S 0.0.0.0/0 -D $localip/24 -o
#запрещены исходящие через статический интерфейс пакеты из локальной сети (ошибка маскарадинга)
/sbin/ipfwadm -O -a deny -V $staticip -S $localip/24 -D 0.0.0.0/0 -o
#запрещены исходящие через статический интерфейс пакеты для локальной сети (ошибка маскарадинга)
/sbin/ipfwadm -O -a deny -V $staticip -S 0.0.0.0/0 -D $localip/24 -o
#разрешено все остальное от статического интерфейса
/sbin/ipfwadm -O -a accept -V $staticip -S $staticip/32 -D 0.0.0.0/0
#разрешаем все пакеты, идущие через интерфейс обратной петли
/sbin/ipfwadm -O -a accept -V 127.0.0.1 -S 0.0.0.0/0 -D 0.0.0.0/0
#все остальное запрещено
/sbin/ipfwadm -O -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o
#--------------------------------------------------------------------------
#Политика Firewall для проходящего потока
#--------------------------------------------------------------------------
#удаляем все правила для проходящего потока
/sbin/ipfwadm -F -f
#устанавливаем запрет всего для проходящего потока
/sbin/ipfwadm -F -p deny
#маскарадинг для всего, идущего из локальной сети через статический интерфейс
/sbin/ipfwadm -F -a masquerade -W $staticif -S $localip/24 -D 0.0.0.0/0
#другая маршрутизация запрещена
/sbin/ipfwadm -F -a deny -S 0.0.0.0/0 -D 0.0.0.0/0
exit 0
|
Ядро 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
|
|
|
|
|
|
|
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее... |
|