Настройка iptables, Правила iptables |
Здравствуйте, гость ( Вход | Регистрация )
Настройка iptables, Правила iptables |
3.9.2011, 21:06
Сообщение
#1
|
|
Освоившийся участник Группа: Пользователи Сообщений: 216 Регистрация: 23.10.2008 Из: Саратов Пользователь №: 865 Спасибо сказали: 60 раз |
Pastebin:
Установка фаервола: Код sudo apt-get install iptables Установка правил: 1. Необходимо разместить скрипт в /etc/network/if-pre-up.d/iptables, где "iptables" название нашего скрипта. 2. Задать права на исполнение: sudo chmod +x /etc/network/if-pre-up.d/iptables 3. Сверить все настройки, включая сетевые интерфейсы по команде - sudo ifconfig От себя: 1. Помните все значения подбираются индивидуально, тут лишь даны усредненные параметры, включая базовый набор служб. Набор базовых правил для iptables: /etc/network/if-pre-up.d/iptables Код #! /bin/sh IPTABLES="/sbin/iptables" #################################### #В этом блоке описываем сетевые интерфейсы для удобного применения в последующих правилах #установите в соответствии с вашими, подробнее по команде sudo ifconfig internet="ppp0" external="eth0" #################################### $IPTABLES -F $IPTABLES -X #################################### #Для отлова пакетов можно включить логирование, для активации уберите символ # в начале строки #$IPTABLES -A INPUT -p tcp -j LOG --log-prefix "iptables: INPUT tcp packets " #$IPTABLES -A INPUT -p udp -j LOG --log-prefix "iptables: INPUT udp packets " #################################### #################################### # Разрешаем доступ по интерфесу обратной петли $IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A OUTPUT -o lo -j ACCEPT #################################### #################################### # C себя разрешаем всё $IPTABLES -A OUTPUT -m state --state NEW -j ACCEPT #################################### #################################### # Позволяем входящие и исходящие соединения, инициированные уже установленными соединениями $IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #################################### #################################### # Разрешаем прохождение DHCP запросов через iptables. $IPTABLES -A INPUT -p udp -m udp --dport 68 --sport 67 -j ACCEPT $IPTABLES -A OUTPUT -p udp -m udp --dport 67 --sport 68 -j ACCEPT #################################### #################################### # какие_то важные пакеты $IPTABLES -I INPUT -p ah -j ACCEPT $IPTABLES -I INPUT -p esp -j ACCEPT #################################### ######################################################################## # Защита # ######################################################################## #################################### # Дропаем все с ошибками $IPTABLES -A INPUT -m state --state INVALID -j DROP $IPTABLES -A FORWARD -m state --state INVALID -j DROP #################################### #################################### # порт сканнеры $IPTABLES -A INPUT -m state --state NEW -p tcp --tcp-flags ALL ALL -j DROP $IPTABLES -A INPUT -m state --state NEW -p tcp --tcp-flags ALL NONE -j DROP #################################### #################################### # Дропаем все icmp $IPTABLES -A INPUT -p icmp -j DROP #################################### #################################### # антиспуффинг $IPTABLES -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP $IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP $IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP $IPTABLES -N SYN_FLOOD $IPTABLES -A INPUT -p tcp --syn -j SYN_FLOOD $IPTABLES -A SYN_FLOOD -m limit --limit 2/s --limit-burst 6 -j RETURN $IPTABLES -A SYN_FLOOD -j DROP #################################### #################################### # Блокируем все попытки входящих TCP-соединений не SYN-пакетами (либо ошибка, либо атака) $IPTABLES -I INPUT -m conntrack --ctstate NEW -p tcp ! --syn -j DROP #################################### #################################### #Вводим ограничения для новых подключений по SSH (не больше 4 в минуту) #Если пользуетесь ssh для улучшения безопасности измените дефолтный порт на отличный от 22* #################################### $IPTABLES -A INPUT -i $external -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j DROP #################################### ###################################################### #Настройки на выбор, если надо - раскомментируйте и поправьте под себя ###################################################### # Вводим ограничения для новых подключений по WWW (не больше 50 соедининий с одного ip)" #$IPTABLES -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP #################################### #################################### # Вводим ограничения для новых подключений по WWW (не более 5 в секунду) #$IPTABLES -A INPUT -p tcp --dport 80 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT #$IPTABLES -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -m limit --limit 5/sec --limit-burst 5 -j ACCEPT #################################### #################################### # Вводим ограничения для новых подключений по FTP (не больше 50 соедининий с одного ip) #$IPTABLES -A INPUT -p tcp --dport 21 -m connlimit --connlimit-above 50 -j DROP #################################### #################################### # Вводим ограничения для новых подключений по FTP (не больше 5 в секунду) #$IPTABLES -A INPUT -m conntrack --ctstate NEW -p tcp --dport 21 -m hashlimit --hashlimit-upto 5/sec --hashlimit-mode srcip --hashlimit-name ftphash -j ACCEPT #################################### #################################### # Настройки для Хаба # дропаем, если с ip новых соединений больше чем 10 #$IPTABLES -A INPUT -p tcp -m multiport --dports 411,4111 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT #$IPTABLES -A INPUT -p tcp -m multiport --dports 411,4111 -m conntrack --ctstate NEW -m limit --limit 10/min --limit-burst 10 -j ACCEPT # дропаем если с ip коннектов больше чем 20 #$IPTABLES -A INPUT -p tcp -m multiport --dports 411,4111 -m connlimit --connlimit-above 20 -j REJECT #$IPTABLES -A INPUT -p udp -m multiport --dports 411,4111 -m connlimit --connlimit-above 20 -j REJECT ############################################################### #~ #таблица черного списка для dc++| замените путь к файлу на корректный в вашей системе # В нем в каждой новой будем указывать черные ip-адреса, например: #1.1.1.1 #2.2.2.2 #3.3.3.3 #в файле допускаются комментарии ############################################################### #################################### #BLOCKDB="/home/ftp/www/nemesis/iptables/ip.blocked" #IPS=$(grep -Ev "^#" $BLOCKDB) #for i in $IPS #do # $IPTABLES -A INPUT -p tcp -i $external -s $i -m multiport --dports 411,4111 -j DROP # $IPTABLES -A INPUT -p udp -i $external -s $i -m multiport --dports 411,4111 -j DROP #done #вечный бан по ip для всех соединений к серверу #баним особо наглых #BLOCKDB="/home/ftp/www/nemesis/iptables/ip-all.blocked" #IPS=$(grep -Ev "^#" $BLOCKDB) #for i in $IPS #do #~ $IPTABLES -A INPUT -p tcp -i $external -s $i -j DROP #~ $IPTABLES -A INPUT -p udp -i $external -s $i -j DROP #~ done #################################### #################################### #дропаем запрос имен netbios $IPTABLES -A INPUT -p udp ! -i $internet --dport 137:138 -j DROP #################################### #################################### #дропаем мультикаст $IPTABLES -A INPUT -d 224.0.0.1/32 -j DROP $IPTABLES -A OUTPUT -d 224.0.0.1/32 -j DROP $IPTABLES -A FORWARD -d 224.0.0.1/32 -j DROP #################################### ######################################################################## # ОБЩЕЕ ДЛЯ ВСЕХ # ######################################################################## #Разрешаем доступ к ftp # FTP $IPTABLES -A INPUT -m conntrack --ctstate NEW -p tcp --sport 1024:65535 --dport 20:21 -j ACCEPT $IPTABLES -A INPUT -p tcp --sport 1024:65535 --dport 49000:49500 -j ACCEPT #################################### #################################### #Разрешаем доступ к веб-серверу # WWW $IPTABLES -A INPUT -p tcp -m tcp -m multiport --dports 80,443 -j ACCEPT $IPTABLES -A OUTPUT -p tcp -m tcp -m multiport --sports 80,443 -j ACCEPT #################################### #################################### # Доступ к Хаб-серверу $IPTABLES -A INPUT -p tcp -m tcp -m multiport --dports 411,4111 -j ACCEPT $IPTABLES -A INPUT -p udp -m udp -m multiport --dports 411,4111 -j ACCEPT #################################### ######################################################################## # ВНЕШКА # ######################################################################## #################################### # Доступ к DNS-серверам $IPTABLES -A OUTPUT -p tcp -m tcp -o $internet --dport 53 -j ACCEPT $IPTABLES -A OUTPUT -p udp -m udp -o $internet --dport 53 -j ACCEPT #################################### #################################### #Добавляем правила по умолчанию $IPTABLES -A INPUT -i $internet -j DROP $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP $IPTABLES -P FORWARD DROP #################################### |
|
|
21.9.2011, 8:57
Сообщение
#2
|
|
Местная ТехПоддержка Группа: Администраторы Сообщений: 1 875 Регистрация: 18.7.2008 Из: Моск. Обл, г. королев, район Болшево Пользователь №: 221 Спасибо сказали: 220 раз |
Код /etc/network/if-pre-up.d/iptables Добавлю свои 5 копеек. Вот у ShadoWx путь верный но не до конца. У него при подъеме кждого интерфейса будут устанавливаться правила. То есть минимум 2 раза(!). Смысла так делать нет, т.к. можно поставить загрузчик фаера (iptables-persistant), либо настраивать таблицы тогда, когда поднимается внешний интерфейс. Для этого в тело сценария надо добавить простой if-чик. |
|
|
21.9.2011, 12:52
Сообщение
#3
|
|
Освоившийся участник Группа: Пользователи Сообщений: 216 Регистрация: 23.10.2008 Из: Саратов Пользователь №: 865 Спасибо сказали: 60 раз |
Код /etc/network/if-pre-up.d/iptables Добавлю свои 5 копеек. Вот у ShadoWx путь верный но не до конца. У него при подъеме кждого интерфейса будут устанавливаться правила. То есть минимум 2 раза(!). Смысла так делать нет, т.к. можно поставить загрузчик фаера (iptables-persistant), либо настраивать таблицы тогда, когда поднимается внешний интерфейс. Для этого в тело сценария надо добавить простой if-чик. поддерживаю, у себя так и сделал |
|
|
3.7.2012, 12:41
Сообщение
#4
|
|
Продвинутый участник Группа: Пользователи Сообщений: 189 Регистрация: 20.4.2009 Пользователь №: 3 121 Спасибо сказали: 12 раз |
Спасибо за правила, супер))
Зацените плыз то что я натворил, посоветуйте что не так и т д ? iptables # Generated by iptables-save v1.4.12 on Mon Jul 2 21:31:05 2012 *filter :FORWARD ACCEPT [0:0] :INPUT DROP [0:0] :OUTPUT ACCEPT [0:0] # Drop Hack -A INPUT -s 66.249.73.15 -j DROP -A INPUT -s 218.200.142.162 -j DROP -A INPUT -s 77.247.181.0/24 -j DROP -A INPUT -s 109.207.206.0/24 -j DROP # Drop Error -A INPUT -m state --state INVALID -j DROP -A FORWARD -m state --state INVALID -j DROP # Port Skaner -A INPUT -p tcp -m state --tcp-flags ALL ALL --state NEW -j DROP -A INPUT -p tcp -m state --tcp-flags ALL NONE --state NEW -j DROP # drop netbios netbios -A INPUT -p udp -m udp -i eth0 --dport 137:138 -j DROP # drop MC -A INPUT -d 224.0.0.1/32 -j DROP -A OUTPUT -d 224.0.0.1/32 -j DROP -A FORWARD -d 224.0.0.1/32 -j DROP # Accept traffic from internal interfaces -A INPUT ! -i eth0 -j ACCEPT # Accept traffic with the ACK flag set -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT # Allow incoming data that is part of a connection we established -A INPUT -m state --state ESTABLISHED -j ACCEPT # Allow data that is related to existing connections -A INPUT -m state --state RELATED -j ACCEPT # Accept responses to DNS queries -A INPUT -p udp -m udp --dport 1024:65535 --sport 53 -j ACCEPT # Accept responses to our pings -A INPUT -p icmp -m icmp --icmp-type echo-reply -j ACCEPT # Accept notifications of unreachable hosts -A INPUT -p icmp -m icmp --icmp-type destination-unreachable -j ACCEPT # Accept notifications to reduce sending speed -A INPUT -p icmp -m icmp --icmp-type source-quench -j ACCEPT # Accept notifications of lost packets -A INPUT -p icmp -m icmp --icmp-type time-exceeded -j ACCEPT # Accept notifications of protocol problems -A INPUT -p icmp -m icmp --icmp-type parameter-problem -j ACCEPT # Hub -A INPUT -p tcp -m tcp --dport 411 -j ACCEPT # Allow connections to our SSH server -A INPUT -p tcp -m tcp -s 178.150.158.0/24 --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp -s 159.224.39.0/24 --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp -s 109.87.66.0/24 --dport 22 -j ACCEPT # Allow connections to our Webmin server -A INPUT -p tcp -m tcp -s 159.224.39.0/24 --dport 777 -j ACCEPT -A INPUT -p tcp -m tcp -s 178.150.158.0/24 --dport 777 -j ACCEPT -A INPUT -p tcp -m tcp -s 109.87.66.0/24 --dport 777 -j ACCEPT # WWW -A INPUT -p tcp -m tcp -m multiport -j ACCEPT --dports 80,443 -A OUTPUT -p tcp -m tcp -m multiport -j ACCEPT --sports 80,443 # Max Connect -A INPUT -p udp -m hashlimit --dport 411:420 -j ACCEPT --hashlimit 15/s --hashlimit-burst 15 --hashlimit-mode srcip --hashlimit-name HUB -A INPUT -p udp --dport 411:420 -j DROP -A INPUT -p udp -m hashlimit --dport 80 -j ACCEPT --hashlimit 15/s --hashlimit-burst 15 --hashlimit-mode srcip --hashlimit-name HUB -A INPUT -p udp --dport 80 -j DROP COMMIT # Completed on Mon Jul 2 21:31:05 2012 # Generated by iptables-save v1.4.12 on Mon Jul 2 21:31:05 2012 *mangle :PREROUTING ACCEPT [217:9370] :INPUT ACCEPT [217:9370] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [233:69145] :POSTROUTING ACCEPT [233:69145] COMMIT # Completed on Mon Jul 2 21:31:05 2012 # Generated by iptables-save v1.4.12 on Mon Jul 2 21:31:05 2012 *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] # Redirect Hub -A PREROUTING -p tcp -m tcp -d 178.150.158.64 --dport 412:420 -j REDIRECT --to-ports 411 COMMIT # Completed on Mon Jul 2 21:31:05 2012 |
|
|
Похожие темы
|
Сейчас: 23.11.2024, 4:53 |