RSS
 

Linux iptables. Строим бастион.

Привожу пример подробного скрипта по реализации бастиона с помощью iptables.

#!/bin/sh

# Конфигурация Интернет-интерфейса.

INET_IP=»0/0″ #Ваш внешний IP — если динамический — то 0/0

INET_IFACE=»eth0″ #Ваш интерфейс в интернет (ppp,ippp,eth)

# Конфигурация LAN-интерфейса

LAN_IFACE=»eth1″

LAN_IP=»192.168.0.1″

# предварительно создаём иерархию каталогов и файлов

LAN_IP_RANGE=»/root/firewall/ip_clients» (изменяем)

LAN_IP_PORTS_TCP=»/root/firewall/ports_tcp»(изменяем)

LAN_IP_PORTS_UDP=»/root/firewall/ports_udp»(изменяем)

# Конфигурация localhost

LO_IFACE=»lo»

LO_IP=»127.0.0.1″

# Конфигурация IPTables.

IPTABLES=»iptables»

#Загрузка модулей

/sbin/depmod -a

# Необходимые модули

/sbin/modprobe ip_tables

/sbin/modprobe ip_conntrack

/sbin/modprobe iptable_filter

/sbin/modprobe iptable_mangle

/sbin/modprobe iptable_nat

/sbin/modprobe ipt_LOG

/sbin/modprobe ipt_limit

/sbin/modprobe ipt_state

# Дополнительные модули

#/sbin/modprobe ipt_owner

#/sbin/modprobe ipt_REJECT

/sbin/modprobe ipt_MASQUERADE

#/sbin/modprobe ip_conntrack_ftp

#/sbin/modprobe ip_conntrack_irc

#/sbin/modprobe ip_nat_ftp

#/sbin/modprobe ip_nat_irc

# Включаем FORWARDинг

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

# Сбразываем все существующие политики

$IPTABLES -F
$IPTABLES -F -t nat
$IPTABLES -F -t mangle

# Политика по умолчанию

$IPTABLES -P INPUT DROP

$IPTABLES -P OUTPUT DROP

$IPTABLES -P FORWARD DROP

# Создание собственных цепочек

$IPTABLES -N bad_tcp_packets

$IPTABLES -N allowed

$IPTABLES -N tcp_packets

$IPTABLES -N udp_packets

$IPTABLES -N icmp_packets

# Заполнение собственных цепочек

# Цепочка bad_tcp_packets

$IPTABLES -A bad_tcp_packets -p tcp —tcp-flags SYN,ACK SYN,ACK -m state

—state NEW -j REJECT —reject-with tcp-reset

$IPTABLES -A bad_tcp_packets -p tcp ! —syn -m state —state NEW -j DROP

# Цепочка allowed

$IPTABLES -A allowed -p TCP —syn -j ACCEPT

$IPTABLES -A allowed -p TCP -m state —state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A allowed -p TCP -j DROP

# Порты TCP открыто из Инета к Серверу

#$IPTABLES -A tcp_packets -p TCP -s 0/0 —dport 21 -j allowed

#$IPTABLES -A tcp_packets -p TCP -s 0/0 —dport 22 -j allowed

#$IPTABLES -A tcp_packets -p TCP -s 0/0 —dport 80 -j allowed

# Порты UDP

#$IPTABLES -A udp_packets -p UDP -s 0/0 —destination-port 53 -j ACCEPT

# Правила ICMP

$IPTABLES -A icmp_packets -p ICMP -s 0/0 —icmp-type 8 -j ACCEPT

$IPTABLES -A icmp_packets -p ICMP -s 0/0 —icmp-type 11 -j ACCEPT

# Цепочка INPUT

$IPTABLES -A INPUT -p tcp -j bad_tcp_packets

# Правила для LAN (разрешаем все)

$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT

$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT

$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT

$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT

# Правила для пакетов из интернета

$IPTABLES -A INPUT -p ALL -d $INET_IP -m state —state

ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets

$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets

$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets

# Цепочка FORWARD

$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets

# FORWARDинг на всю локальную сеть.(Пользователи из локалки могут ходить

в интернет)

#####$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT

#####$IPTABLES -A FORWARD -m state —state ESTABLISHED,RELATED -j ACCEPT

# Цепочка OUTPUT

$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets

# Правила цепочки

$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT

$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT

$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT

# Включаем IP Forwarding и трансляцию адресов(или маскарадинг)

# Врубаем NAT

$IPTABLES —table nat —append POSTROUTING —o eth0 -j MASQUERADE &&

$IPTABLES —append FORWARD —o eth1 -j ACCEPT &&

$IPTABLES -A FORWARD -s $LAN_IP_RANGE -p tcp —dport $LAN_IP_PORTS_TCP -j ACCEPT

$IPTABLES -A FORWARD -s $LAN_IP_RANGE -p udp —dport $LAN_IP_PORTS_UDP -j ACCEPT

$IPTABLES -A FORWARD -s $LAN_IP_RANGE -j DROP # запрещаем всё остальное.

Оставить комментарий

 

 
  1. Евгений

    12.03.2014 at 10:40 пп

    Здравствуйте. Просьба объяснить строки:

    # предварительно создаём иерархию каталогов и файлов
    LAN_IP_RANGE=»/root/firewall/ip_clients» (изменяем)
    LAN_IP_PORTS_TCP=»/root/firewall/ports_tcp»(изменяем)
    LAN_IP_PORTS_UDP=»/root/firewall/ports_udp»(изменяем)

     
  2. admin

    21.03.2014 at 3:52 пп

    ip_clients это файл куда нужно вписать айпишники клиентов, с файлами портов аналогично

     
  3. Евгений

    21.03.2014 at 8:13 пп

    А где можно узнать об это подробней? В каком формате файл?

     
  4. admin

    01.04.2014 at 3:58 пп

    это обычный текст