Faydalı iptables kural seti

Aşağıdaki not aldığım kurallar genellikle bir sunucu için faydalı olabilecek yapılandırmalar (bazıları çıkartılarak istemciler içinde uygun olabilir)

 

export LOG=”LOG –log-level debug –log-tcp-sequence –log-tcp-options –log-ip-options”

export RLIMIT=”-m limit –limit 3/s –limit-burst 8″

# ESTABLISHED ICMP trafik
iptables -A INPUT -p icmp -m state –state ESTABLISHED -j ACCEPT $RLIMIT
iptables -A OUTPUT -p icmp -m state –state ESTABLISHED -j ACCEPT $RLIMIT

#RELATED ICMP trafiğe izin verip, geri kalanını blokla
iptables -A INPUT -p icmp -m state –state RELATED -j RELATED_ICMP $RLIMIT
iptables -A OUTPUT -p icmp -m state –state RELATED -j RELATED_ICMP $RLIMIT

# rate limit uygulamadan icmp-echo lara izin ver (ping)
iptables -A INPUT -p icmp –icmp-type echo-request -j ACCEPT $RLIMIT

# dışarı çıkan icmp-echo paketlerine izin ver
iptables -A OUTPUT -p icmp –icmp-type echo-request -j ACCEPT $RLIMIT

# geri kalan tüm ICMP trafiğini bloke et
iptables -A INPUT -p icmp -j DROPLOG
iptables -A OUTPUT -p icmp -j DROPLOG
iptables -A FORWARD -p icmp -j DROPLOG

# loopback üzerindeki tüm trafiğe izin ver
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Mevcut bağlantılarla alakalı bağlantılara izin ver
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

# geçersiz paket harici tüm bağlantılara izin ver
iptables -A INPUT -m state –state INVALID -j DROP
iptables -A OUTPUT -m state –state INVALID -j DROP

# NAT kullanılacaksa INVALID paketler geçecektir, buna istainaden drop et
iptables -A FORWARD -m state –state INVALID -j DROP

# çıkan DNS trafiğine izin ver.
iptables -A OUTPUT -m state –state NEW -p udp –dport 53 -j ACCEPT
iptables -A OUTPUT -m state –state NEW -p tcp –dport 53 -j ACCEPT

# çıkan 80 port, http trafiğine izin ver.
#iptables -A OUTPUT -m state –state NEW -p tcp –dport 80 -j ACCEPT

# çıkan arayüz portuna izin ver.
iptables -A OUTPUT -m state –state NEW -p tcp –dport 2023 -j ACCEPT

# çıkan ssh portuna izin ver (belirli bir ip adresine)
#iptables -A OUTPUT -m state –state NEW -p tcp –dport 22 -d 192.168.1.0/24 -j ACCEPT

# NTP servisine izin ver
iptables -A OUTPUT -m state –state NEW -p udp –dport 123 -j ACCEPT

# WHOIS servisine izin ver.
iptables -A OUTPUT -m state –state NEW -p tcp –dport 43 -j ACCEPT

# DHCP requestleri için servis portlarına izin ver
iptables -A OUTPUT -m state –state NEW -p udp –sport 67:68 –dport 67:68 -d 192.168.1.0/24 -j ACCEPT

# VPN portuna (udp) izin ver
iptables -A OUTPUT -m state –state NEW -p udp –dport 1194 -j ACCEPT

# Gelen DNS isteklerine izin ver
iptables -A INPUT -m state –state NEW -p udp –dport 53 -j ACCEPT
iptables -A INPUT -m state –state NEW -p tcp –dport 53 -j ACCEPT

# Gelen 80 port(http) isteklerine izin ver
#iptables -A INPUT -m state –state NEW -p tcp –dport 80 -j ACCEPT

# gelen arayüz portuna isteklere izin ver.
iptables -A INPUT -m state –state NEW -p tcp –dport 2023 -j ACCEPT

# kaynak adresi belirli ip olan ssh isteklerine izin ver
iptables -A INPUT -m state –state NEW -p tcp –dport 22 -s 192.168.1.0/24 -j ACCEPT

# gelen NTP isteklerine izin ver.
iptables -A INPUT -m state –state NEW -p udp –dport 123 -j ACCEPT

# Gelen WHOIS isteklerine izin ver
iptables -A INPUT -m state –state NEW -p tcp –dport 43 -j ACCEPT

# gelen dhcp req. isteklerine izin ver
iptables -A INPUT -m state –state NEW -p udp –dport 67:68 –sport 67:68 -s 192.168.1.0/24 -j ACCEPT

# gelen udp vpn isteklerine izin ver
iptables -A INPUT -m state –state NEW -p udp –dport 1194 -j ACCEPT

# SYN FLOOD için koruma (bknz: http://cr.yp.to/syncookies.html).
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# RST FLOOD
iptables -N rst-flood
iptables -A rst-flood -p tcp –tcp-flags RST RST -m limit –limit 2/s –limit-burst 2 -j ACCEPT
iptables -A rst-flood -p tcp –tcp-flags RST RST -j DROP

# DoS ataklarını sınırlandır
iptables -N dos-attack
iptables -A dos-attack -p tcp –dport 80 -m limit –limit 25/minute –limit-burst 100 -j ACCEPT
iptables -A dos-attack -p tcp –dport 443 -m limit –limit 25/minute –limit-burst 100 -j ACCEPT
iptables -A dos-attack -p udp –dport 80 -m limit –limit 25/minute –limit-burst 100 -j ACCEPT
iptables -A dos-attack -p udp –dport 443 -m limit –limit 25/minute –limit-burst 100 -j ACCEPT

#Geri kalan herşeyi  reddet

iptables -A INPUT -j REJECTLOG
iptables -A OUTPUT -j REJECTLOG
iptables -A FORWARD -j REJECTLOG