Помогите "самым простым" способо давить в скрипт iptables цепочку bad_ip

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС для молодых и начинающих системных администраторов.

Модераторы: SLEDopit, Модераторы разделов

fergios
Сообщения: 512
ОС: debian stable

Помогите "самым простым" способо давить в скрипт iptables цепочку bad_ip

Сообщение fergios »

#!/bin/sh
# Задаем некоторые переменные:

# Переменная, задающая путь к файлу запуска iptables.
IPT="/sbin/iptables"

# Ваш сетевой интерфейс. Это нужно, чтобы не писать в правилах одно и тоже.
INET_IFACE="ppp0"

# Номера непривилегированных портов
UNPRIPORTS="1024:65535"

start_fw()
{
# Сбросить правила и удалить цепочки.
$IPT -F
$IPT -X

# Политики по умолчанию.
$IPT -P INPUT DROP
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT DROP

# Разрешаем прохождение любого трафика по интерфейсу обратной петли.
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# Запрещаем любые новые подключения с любых интерфейсов, кроме lo к компьютеру.
$IPT -A INPUT -m state ! -i lo --state NEW -j DROP

# Если интерфейс не lo, то запрещаем входить в список его адресов.
$IPT -A INPUT -s 127.0.0.1/255.0.0.0 ! -i lo -j DROP

# Принимать все пакеты, которые инициированы из уже установленного соединения, и имеющим признак ESTABLISHED.
# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Разрешаем ICMP соединение. Значительная часть ICMP используется для передачи сообщений о
# том, что происходит с тем или иным UDP или TCP соединением.
$IPT -A INPUT -p icmp -m icmp -i $INET_IFACE --icmp-type source-quench -j ACCEPT
$IPT -A OUTPUT -p icmp -m icmp -o $INET_IFACE --icmp-type source-quench -j ACCEPT

# Разрешаем себе ping наружу - нас же не попингуешь - пакеты отбрасываются.
$IPT -A INPUT -p icmp -m icmp -i $INET_IFACE --icmp-type echo-reply -j ACCEPT
$IPT -A OUTPUT -p icmp -m icmp -o $INET_IFACE --icmp-type echo-request -j ACCEPT

# DNS сервер имен разрешаем.
$IPT -A OUTPUT -p udp -m udp -o $INET_IFACE --dport 53 --sport $UNPRIPORTS -j ACCEPT
$IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 53 --sport $UNPRIPORTS -j ACCEPT
$IPT -A INPUT -p udp -m udp -i $INET_IFACE --dport $UNPRIPORTS --sport 53 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport 1024:65353 --sport 53 -j ACCEPT

# Открываем некоторые порты:
# HTTP/HTTPS клиент (80, 443)
$IPT -A OUTPUT -p tcp -m tcp -m multiport -o $INET_IFACE --sport $UNPRIPORTS -j ACCEPT --dports 80,443
$IPT -A INPUT -p tcp -m tcp -m multiport -i $INET_IFACE --dport $UNPRIPORTS -j ACCEPT --sports 80,443 ! --syn

# Разрешаем прохождение DHCP запросов через iptables. Нужно, если IP адрес динамический.
$IPT -A OUTPUT -p udp -m udp -o $INET_IFACE --dport 67 --sport 68 -j ACCEPT
$IPT -A INPUT -p udp -m udp -i $INET_IFACE --dport 68 --sport 67 -j ACCEPT

}

case "$1" in
start) echo -n "Starting firewall: iptables"
start_fw
echo "."
;;
stop) echo -n "Stopping firewall: iptables"
iptables -F
iptables -X
echo "."
;;
reload|force-reload) echo -n "Reloading configuration files for firewall: iptables"
echo "."
;;
*) echo "Usage: /etc/init.d/rc.iptables start|stop|restart|reload|force-reload"
exit 1
;;
esac
exit 0

Взято с : http://www.posix.ru/network/iptables/

Нужно добавить проверку на очень большой список ip, поэтому нужно создать отдельную цепочку bad_ip для этого.
У меня очень большой скрипт наподобие этого. Мой скрипт также не использует ниодной цепочки.
Но сейчас когда он стал очень большим нужна цепочка bad_ip (кол-во ip большое).

Прошу Вас, кто разбирается в iptables цепочках, как проще доавить проверку по списку ip в такой скрипт, а именно цепочку bad_ip ?
Спасибо сказали:
fergios
Сообщения: 512
ОС: debian stable

Re: Помогите "самым простым" способо давить в скрипт iptables цепочку bad_ip

Сообщение fergios »

Как сложно, бьыло написать,
добавь строку
iptables -A INPUT -j bad_ip
в самое начало скрипта, после правил по умолчанию.

А в bad_ip уже записывать ip адреса для блокирования.
Спасибо сказали: