Y3ko
Yeni bir Steve doğdu!
Merhaba herkese ilk konumu böyle açmak nasip oldu. Erkan Abi'nin ricası üzerine, işinizi görebilecek bir "FIREWALL"ı sizlerle paylaşıyorum.
Lütfen açıklamaları iyi okuyun. İyi forumlar.
Lütfen açıklamaları iyi okuyun. İyi forumlar.
Kod:
# DIKKAT! %100 koruma vaat etmesemde, sunucunuza gelen ufak çaplı saldırıları engelleyeceğini düşünüyorum
# Lütfen benden destek vs. beklemeyin çünkü veremeyecek kadar yoğunum. Kendi başınızın çaresine bakın.
# Sağdan soldan araştıra araştıra, bata çıka, biriktirdiğim tecrübelerle bu firewall'ı oluşturdum.
# Evet bazı yerleri hatta belki çoğu yeri alıntı olabilir. Sonuç olarak iş görüyor.
# Kötü yorumlarınızı kendinize saklayın.
# Sevgiler. <3
ipset=/sbin/ipset
iptables=/sbin/iptables
route=/etc/acl
zone=zones
wgetd="wget -q -c --retry-connrefused -t 0"
if [ ! -d $zone ]; then mkdir -p $zone; fi
echo "Ülke IP Adresleri indiriliyor."
$wgetd http://www.ipdeny.com/ipblocks/data/countries/all-zones.tar.gz && tar -C $zone -zxvf all-zones.tar.gz >/dev/null 2>&1 && rm -f all-zones.tar.gz >/dev/null 2>&1
# Lütfen sunucu portunuzu girin.
port=25565
# Linux (SSH) saldırıları engellensin mi? Bir çok saldırıyı engelleyebilir.
block_linux_connections=true
limit_global_connections=true
limit_global_connections_max=300
burstconns=15
timeout=900
# Beyaz listeye alınan ülkeler her zaman bağlanabilecek.
# Beyaz listede olmayanlar ise bazen sorun yaşabilir.
# Yararlı Komutlar:
# sudo ipset flush whitelist
# sudo ipset flush proxies
#
echo "IPSet hazırlanıyor."
$ipset -F
$ipset -N -! proxies hash:net maxelem 150000 timeout $timeout
$ipset -N -! whitelist hash:net maxelem 1000000
# Beyaz listeye alınan ülkeler.
for ip in $(cat $zone/{tr,az,cy,gb}.zone); do
$ipset -A whitelist $ip
done
# Bot Önlemi İçin Kurallar:
# Tablo Oluşturma:
$iptables -N BotKoruma
$iptables -F BotKoruma
# Maximum Bağlantı Sayısı Kontrol Etme:
$iptables -A BotKoruma -p tcp --dport $port -m set --match-set proxies src -j DROP
$iptables -A BotKoruma -p tcp --dport $port -m set --match-set whitelist src -j ACCEPT
$iptables -A BotKoruma -p tcp --dport $port --syn -m limit --limit $burstconns/s -j ACCEPT
$iptables -A BotKoruma -p tcp --dport $port --syn -j DROP
# Kendi eklediğim ve önemli gördüğüm kurallar.
# Lütfen kendi sunucu IP adresinizide aşşağıya eklemeyi unutmayın.
# $iptables -I OUTPUT -p tcp -d SUNUCUIPADRESI -j ACCEPT
# Toksik olan ülkeler aşşağıda engellenmiştir. Kendinize göre düzenleyebilirsiniz.
$iptables -D INPUT -p tcp -j BotKoruma
$iptables -A INPUT -p tcp -j BotKoruma
$iptables -A INPUT -p tcp -m tcp --syn --tcp-option 8 --dport 25565 -j REJECT
$iptables -I INPUT -p tcp -s 149.202.74.183 -j ACCEPT
$iptables -I OUTPUT -p tcp -d 149.202.74.183 -j ACCEPT
$iptables -I INPUT -p tcp -s 178.32.62.55 -j ACCEPT
$iptables -I OUTPUT -p tcp -d 178.32.62.55 -j ACCEPT
$iptables -I INPUT -p tcp -s 37.187.63.146 -j ACCEPT
$iptables -I OUTPUT -p tcp -d 37.187.63.146 -j ACCEPT
$iptables -I INPUT -p tcp -s 92.222.160.58 -j ACCEPT
$iptables -I INPUT -p tcp -s 5.196.10.200 -j ACCEPT
$iptables -I OUTPUT -p tcp -d 5.196.10.200 -j ACCEPT
$iptables -I OUTPUT -p tcp -d 92.222.160.58 -j ACCEPT
$iptables -A INPUT -p tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
$iptables -A INPUT -p tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN -j DROP
$iptables -A INPUT -p tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP
$iptables -A INPUT -p tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
$iptables -A INPUT -p tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
$iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
$iptables -A OUTPUT -p udp -j DROP
$ip6tables -A OUTPUT -p udp -j DROP
$iptables -A INPUT -p tcp --destination-port 8080 -j DROP
$iptables -t mangle -A PREROUTING -p tcp ! --syn -m conntrack --ctstate NEW -j DROP
$iptables -A INPUT -p tcp --tcp-flags SYN,ECN,CWR -j DROP
if $block_linux_connections ; then
$$iptables -A INPUT -p tcp -m tcp --syn --tcp-option 8 --dport $port -j REJECT
echo 'Linux bağlantıları engellendi!'
fi
if $limit_global_connections ; then
$iptables -I INPUT -p tcp --dport $port -m state --state NEW -m limit --limit $limit_global_connections_max/s -j ACCEPT
echo 'Global bağlantılar limitlendi!'
fi
echo "Firewall kurulumu tammalandı."