#!/bin/bash
## Блок описания переменных
## Интерфейсы
WAN=eth0
#LAN=eth1
## Очищаем все цепочки
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
## Политики по умолчанию
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
## Настраиваем глобальные политики
## Настраиваем NAT
iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE
## Настраиваем локальный интерфейс
## Запрещаем давать другим интерфейсам кроме lo его адресное пространство
iptables -A INPUT -s 127.0.0.1/255.0.0.0 ! -i lo -j DROP
## Разрешаем трафик через локальный интерфейс
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
## Блокируем неправильные пакеты
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
## Защита от подбора пароля к SSH
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH --rsource
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --rttl --name SSH --rsource -j LOG --log-prefix "SSH_brute_force "
iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --rttl --name SSH --rsource -j DROP
## Пропускаем пакеты если соединение уже существует
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p udp -m state --state ESTABLISHED,RELATED -j ACCEPT
## Настраиваем правила для внешнего интерфейса
iptables -A INPUT -i $WAN -p tcp --dport 22 -m state --state NEW -j ACCEPT
iptables -A INPUT -i $WAN -p tcp --dport 21 -m state --state NEW -j DROP
iptables -A INPUT -i $WAN -p tcp --dport 25 -m state --state NEW -j DROP
iptables -A INPUT -i $WAN -p tcp --dport 110 -m state --state NEW -j DROP
iptables -A INPUT -i $WAN -p tcp --dport 119 -m state --state NEW -j DROP
iptables -A INPUT -i $WAN -p tcp --dport 145 -m state --state NEW -j DROP

