Skip to content

Instantly share code, notes, and snippets.

@Dzhan85
Forked from anonymous/firewall.iptables.txt.txt
Created August 13, 2020 07:36
Show Gist options
  • Save Dzhan85/16ddcde7e676e91604ebbb8ae6e7754d to your computer and use it in GitHub Desktop.
Save Dzhan85/16ddcde7e676e91604ebbb8ae6e7754d to your computer and use it in GitHub Desktop.
firewall.iptables.txt
echo "Обнуляем правила"
iptables -X
iptables -t nat -X
iptables -F
iptables -t nat -F
echo "Блокируем весь трафик"
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
export LAN=eth1
export WAN=eth0
echo "Разрешаем трафик с уже установленных соединений"
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "Блокируем multi & broad casts"
iptables -A INPUT -m pkttype --pkt-type broadcast -j DROP
iptables -A OUTPUT -m pkttype --pkt-type broadcast -j DROP
iptables -A FORWARD -m pkttype --pkt-type broadcast -j DROP
iptables -A INPUT -m pkttype --pkt-type multicast -j DROP
iptables -A OUTPUT -m pkttype --pkt-type multicast -j DROP
iptables -A FORWARD -m pkttype --pkt-type multicast -j DROP
echo "Отбрасывает плохие пакеты"
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP
iptables -A OUTPUT -m conntrack --ctstate INVALID -j DROP
iptables -A FORWARD -d 0.0.0.0/8 -j DROP
iptables -A FORWARD -d 127.0.0.0/8 -j DROP
iptables -A FORWARD -d 255.255.255.255 -j DROP
iptables -A FORWARD -d 224.0.0.0/4 -j DROP
iptables -A FORWARD -d 240.0.0.0/5 -j DROP
iptables -A FORWARD -p tcp --tcp-flags ALL ALL -j DROP
iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j DROP
iptables -A FORWARD -p icmp -m icmp --icmp-type address-mask-request -j DROP
iptables -A FORWARD -p icmp -m icmp --icmp-type timestamp-request -j DROP
iptables -A FORWARD -p icmp --fragment -j DROP
echo "Разрешаем PING для всех"
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type 0 -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
echo "Разрешаем DNS для всех"
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -i ${LAN} -s 192.168.0.0/22 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -i ${WAN} -d 192.168.0.0/22 -p udp --sport 53 -j ACCEPT
echo "Разрешаем перенаправление HTTP(S)"
iptables -A INPUT -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i ${LAN} -s 192.168.0.0/22 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i ${WAN} -d 192.168.0.0/22 -p tcp --sport 80 -j ACCEPT
iptables -A FORWARD -i ${LAN} -s 192.168.0.0/22 -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -i ${WAN} -d 192.168.0.0/22 -p tcp --sport 443 -j ACCEPT
echo "Разрешаем перенаправление FTP"
iptables -A FORWARD -i ${LAN} -s 192.168.0.0/22 -p tcp --dport 20 -j ACCEPT
iptables -A FORWARD -i ${WAN} -d 192.168.0.0/22 -p tcp --sport 20 -j ACCEPT
iptables -A FORWARD -i ${LAN} -s 192.168.0.0/22 -p tcp --dport 21 -j ACCEPT
iptables -A FORWARD -i ${WAN} -d 192.168.0.0/22 -p tcp --sport 21 -j ACCEPT
echo "Разрешаем перенаправление SSH (22)"
iptables -A FORWARD -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -p tcp --sport 22 -j ACCEPT
echo "Разрешаем RSYNC для всех"
iptables -A INPUT -p tcp --sport 873 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 873 -j ACCEPT
iptables -A FORWARD -i ${LAN} -s 192.168.0.0/22 -p tcp --dport 873 -j ACCEPT
iptables -A FORWARD -i ${WAN} -d 192.168.0.0/22 -p tcp --sport 873 -j ACCEPT
echo "Закрываем снаружи все сервисы кроме разрешенных. Работаем только для внутренней сети"
iptables -I INPUT 1 -i ${LAN} -j ACCEPT
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -A INPUT -p UDP --dport bootps -i !${LAN} -j REJECT
iptables -A INPUT -p UDP --dport domain -i !${LAN} -j REJECT
echo "Блокируем все нестандартные порты - 1024-65535"
iptables -A FORWARD -p tcp --dport 1024:65535 -j DROP
iptables -A FORWARD -p tcp --sport 1024:65535 -j DROP
iptables -A FORWARD -p udp --dport 1024:65535 -j DROP
iptables -A FORWARD -p udp --sport 1024:65535 -j DROP
echo "Блокируем внешний доступ к привелегированным портам 0-1023"
iptables -A INPUT -p TCP -i !${LAN} -d 0/0 --dport 0:1023 -j DROP
iptables -A INPUT -p UDP -i !${LAN} -d 0/0 --dport 0:1023 -j DROP
# Ниже не редактировать !!!
echo "Добавляем правила для перенаправления трафика (NAT)"
iptables -A FORWARD -i ${LAN} -s 192.168.0.0/22 -j ACCEPT # Перенаправляем исходящий
iptables -A FORWARD -i ${WAN} -d 192.168.0.0/22 -j ACCEPT # Перенаправляем входящий
iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE # Маскируем внутренние IP под внешний для инета
echo "Выравниваем значение MTU воизбежании глюков с сайтами"
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
echo "Сообщаем ядру о разрешении перенаправления всего трафика"
echo 1 > /proc/sys/net/ipv4/ip_forward
for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment