Iptables ip paketlerini filtreleme aracıdır. Gelen bağlantıları engelleyebilir, istediğimiz portlardaki girişleri düzenleyebiliriz. Ben bu aşağıda size göstereceklerimi birkaç kaynaktan edindiğim bilgilerden yola çıkarak derledim. Standart bir güvenlik ayarıdır. Eğer daha önce kurulumunu yapmadıysanız root ile giriş yaptıktan sonra iptables yükleyelim.
iptables yükleyelim:
apt-get install iptables
Aşağıdaki komutları giriniz:
sudo apt-get update
sudo apt-get install iptables-persistent
Şu komutu giriyoruz:
nano /etc/iptables/rules.v4
Şimdi bu alanda ne varsa silip aşağıdaki komutları oraya aktarıyoruz:
*filter
# veritabanini sadece sunucu kullanabilir
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 -j REJECT
# sunucu icindeki guncellemeler vs bu izin ile verilir
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# cikislara izin verilir
-A OUTPUT -j ACCEPT
# http ve https baglantilarina izin verilir https kullanmiyorsaniz 443 kuralini kaldirabilirsiniz
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# ssh girislerine izin
#
# bu oldukca onemlidir ssh bu port ile baglanilir
#
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
# pinge izin ver
-A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# log cagirmalarina engelle
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# diger bütün baglantilari engelle
-A INPUT -j DROP
-A FORWARD -j DROP
COMMIT
ctrl + x yapıp enter deyip çıkış yapıyoruz. Şimdi ise bu kuralları iptables’a aktarıyoruz:
iptables-restore < /etc/iptables/rules.v4
iptables -L deyip kuralları teyit edelim. Ardından da bu kuralları iptables-persistent’e tekrar import edeceğiz.
sudo invoke-rc.d iptables-persistent save
iptables-persistent sunucu kapansa bile bizim kurallarımızı geçerli kılmaya yarayan bir araçtır. Normalde kurallar silinir.
Blacklist
Cron işlemi için gerekli olacak sh dosyasını indirelim:
wget -O /usr/local/sbin/update-blacklist.sh https://raw.githubusercontent.com/trick77/ipset-blacklist/master/update-blacklist.sh
gerekli izinleri verelim:
chmod +x /usr/local/sbin/update-blacklist.sh
listeyi oluşturacak komutların bulunduğu ve çağırılacak alanları barındıran dosyayı indirip gerekli klasörü oluşturalım:
mkdir -p /etc/ipset-blacklist ; wget -O /etc/ipset-blacklist/ipset-blacklist.conf https://raw.githubusercontent.com/trick77/ipset-blacklist/master/ipset-blacklist.conf
ipset'i yükleyelim:
apt-get install ipset
blacklist'i oluşturalım:
/usr/local/sbin/update-blacklist.sh /etc/ipset-blacklist/ipset-blacklist.conf
blacklist'i meşrulaştıralım:
ipset restore < /etc/ipset-blacklist/ip-blacklist.restore
iptables -I INPUT 1 -m set --match-set blacklist src -j DROP
bu kuralı kalıcı kılalım:
sudo invoke-rc.d iptables-persistent save
şimdi bunu zamanlayalım:
nano /etc/cron.d/update-blacklist
çıkan alana bu kodu yapıştıralım:
MAILTO=root
33 23 * * * root /usr/local/sbin/update-blacklist.sh /etc/ipset-blacklist/ipset-blacklist.conf
Ek olarak
ipset v6.20.1: Error in line 2: Set cannot be created: set with the same name already exists hatası alırsanız
nano /etc/ipset-blacklist/ipset-blacklist.conf
"IP_BLACKLIST=" diye giden satırın altında şunu ekleyin:
MAXELEM=80000
Kaynakça:
Tehlikeli ve spam ip adresleri engelleme ve basit önlemler
iptables ile sunucu için basit güvenlik önlemleri (Ubuntu 14.04)