Skip to main content

Базовая конфигурация

  • Создаем файл конфигурации
mkdir /etc/iptables
touch /etc/iptables/rc.firewall
chmod +x /etc/iptables/rc.firewall

nano -w /etc/iptables/rc.firewall
#!/bin/bash

# Setting variables
ipt="/usr/sbin/iptables"
iface="ifname"

# SYN Rate (pps)
syn_interval="1"
syn_count="100"

# Flushing the tables
$ipt -t nat -F
$ipt -t mangle -F
$ipt -t raw -F
$ipt -F
$ipt -X

# Setting explicit deny rules
$ipt -P INPUT DROP
$ipt -P FORWARD DROP
$ipt -P OUTPUT DROP

# SYN Flood
$ipt -N SYNFLOOD
$ipt -A INPUT ! -i lo -p tcp -m tcp --tcp-flags SYN,ACK,FIN,RST SYN -m recent --name SYNFLOOD --update --seconds $syn_interval --hitcount $syn_count -j SYNFLOOD
$ipt -A SYNFLOOD -m limit --limit 30/min -j LOG --log-prefix "Firewall: *SYNFLOOD* "
$ipt -A SYNFLOOD -j DROP

# Allowing Loopback traffic
$ipt -A INPUT -i lo -j ACCEPT
$ipt -A OUTPUT -o lo -j ACCEPT

# Stateful rules
$ipt -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
$ipt -A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

#
# INPUT
#

# SSH
$ipt -A INPUT -i $iface -p tcp -m state --state NEW --dport 22 -j ACCEPT

#
# OUTPUT
#

# HTTPS
$ipt -A OUTPUT -o $iface -p tcp -m state --state NEW --dport 443 -j ACCEPT
# DNS
$ipt -A OUTPUT -o $iface -p udp -m state --state NEW --dport 53 -j ACCEPT
# NTP
$ipt -A OUTPUT -o $iface -p udp -m state --state NEW --dport 123 -j ACCEPT
# Ping
$ipt -A OUTPUT -o $iface -p icmp --icmp-type echo-request -m state --state NEW -j ACCEPT
# Traceroute
$ipt -A OUTPUT -o $iface -p udp -m state --state NEW --dport 33434:33523 -j ACCEPT
  • Проверяем
/etc/iptables/rc.firewall

iptables -nvL
  • Добавляем в автозагрузку (см здесь)
nano -w /etc/rc.local
# IPTABLES
/etc/iptables/rc.firewall