Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- root@debian:~# cat /etc/network/if-up.d/firewall
- #! /bin/sh
- #
- #######################
- # Настройка интерфейсов
- #######################
- # Internet (Поменяйте на ваш интернет-интерфейс)
- Inet_Interface="eth0"
- # Lan (поменяйте на ваш интерфейс сетевого моста)
- Lan_Interface="br0"
- # Lo (локальный интефейс - петля)
- Lo_Interface="lo"
- # Описываем путь до iptables
- IPT="/sbin/iptables"
- # Очищаем текущие правила (если вдруг есть какие-то правила)
- $IPT -F
- $IPT -t nat -F
- $IPT -t mangle -F
- $IPT -X
- $IPT -t nat -X
- $IPT -t mangle -X
- # Задаем политики по умолчанию
- $IPT -P INPUT DROP
- $IPT -P FORWARD DROP
- $IPT -P OUTPUT DROP
- # Создаем цепочку для обработки неправильных пакетов.
- # bad_packets
- $IPT -N bad_packets
- $IPT -A bad_packets -p tcp --tcp-flags SYN,ACK SYN,ACK \
- -m state --state NEW -j REJECT --reject-with tcp-reset
- $IPT -A bad_packets -p tcp ! --syn -m state --state NEW \
- -j LOG --log-prefix "New not syn:"
- $IPT -A bad_packets -p tcp ! --syn -m state --state NEW -j DROP
- # Создаем цепочку для обработки входящих (из интернета) tcp соединений.
- # tcp_p
- $IPT -N tcp_p
- # Чтобы, например, разрешить подключаться к нашему шлюзу из интернета по ssh:
- ##ssh="22"
- ##ssh_ip_allowed="0/0"
- ##$IPT -A tcp_p -p tcp -s $ssh_ip_allowed --dport $ssh -j ACCEPT
- $IPT -A tcp_p -p tcp -s 0/0 -j DROP
- # Создаем цепочку для обработки входящих (из интернета) udp соединений.
- # udp_p
- $IPT -N udp_p
- $IPT -A udp_p -p udp -s 0/0 -j DROP
- # Создаем цепочку для обработки входящих (из интернета) icmp соединений.
- # icmp_p
- $IPT -N icmp_p
- # Разрешаем "пинговать" наш шлюз из интернета:
- $IPT -A icmp_p -p icmp -s 0/0 --icmp-type 8 -j ACCEPT
- $IPT -A icmp_p -p icmp -s 0/0 --icmp-type 11 -j ACCEPT
- $IPT -A icmp_p -p icmp -s 0/0 -j DROP
- # Цепочка INPUT
- $IPT -A INPUT -p tcp -j bad_packets
- $IPT -A INPUT -p all -i $Lan_Interface -j ACCEPT
- $IPT -A INPUT -p all -i $Lo_Interface -j ACCEPT
- $IPT -A INPUT -p all -i $Inet_Interface -m state --state \
- ESTABLISHED,RELATED -j ACCEPT
- $IPT -A INPUT -p tcp -i $Inet_Interface -j tcp_p
- $IPT -A INPUT -p udp -i $Inet_Interface -j udp_p
- $IPT -A INPUT -p icmp -i $Inet_Interface -j icmp_p
- # Цепочка FORWARD
- $IPT -A FORWARD -p tcp -j bad_packets
- $IPT -A FORWARD -p all -i $Lan_Interface -j ACCEPT
- $IPT -A FORWARD -p all -i $Lo_Interface -j ACCEPT
- $IPT -A FORWARD -p all -i $Inet_Interface -m state \
- --state ESTABLISHED,RELATED -j ACCEPT
- # Цепочка OUTPUT
- $IPT -A OUTPUT -p tcp -j bad_packets
- $IPT -A OUTPUT -p all -o $Inet_Interface -j ACCEPT
- $IPT -A OUTPUT -p all -o $Lan_Interface -j ACCEPT
- $IPT -A OUTPUT -p all -o $Lo_Interface -j ACCEPT
- # Цепочка POSTROUTING (таблица nat)
- $IPT -t nat -A POSTROUTING -o $Inet_Interface -j MASQUERADE
- # Включаем перенаправление ipv4.
- echo "1" > /proc/sys/net/ipv4/ip_forward
- echo "Firewall started"
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement