5 Ağustos 2015 Çarşamba

Güvenlik Duvarına Kural Ekleme

   Iptables ağ trafiğini yönlendirmek ve kurallar yazmak için kullanılan bir duvar programıdır.Bir ağ sitemi üzerinde bağlantı kurmaya çalıştığınızda kural listesinde arama yapar eğer bulamazsa varsayılan eyleme başvurur. Bir linux dağıtımına kurulu gelmediyse iptables paketini indirmelisiniz:

sudo yum install iptables

iptables da üç farklı zincir vardır: giriş ,ileri ve çıkış:

Girdi(input): Bu zincir gelen bağlantıların davranışlarını kontrol etmek için kullanılır. Örneğin bir pc sunucuya ssh çalışırsa , iptables giriş zincirinin bir kuralının ip adresi ve port ile uyuşmasını sağlayacaktır.

İleri(forward): Bu zincir aslında gelen bağlantıların yerele teslim edilmediğinde kullanılır. Eğer yönlendirme gerekmiyorsa genelde bu zincir kullanılmaz.

Çıkış(output): Bu zincir giden bağlantılar için kullanılır.Bir siteye ping atarken iptables karar vermeden önce site konusundaki kurallara bakar yani çıkış zincirini kontrol eder.

Sistemin bir kural yolu olup olmadığını kontrol etmek için:

 sudo iptables -L -v





 Görüldüğü gibi girdi zincirinde 11G bytes işlenir çıktı zincirinde ise 17G bytes.
Dikkat edilmesi gereken bir nokta da protokollerin çoğu giriş ve çıkış zincirini birlikte kullanır bu yüzden düzgün yapılandırılmalıdır.


Belirli kuralları eklemeden önce bağlantı herhangi bir kurala uymazsa varsayılan olarak ne yaptığını ayarlamalıyız. iptables genelde varsayılan olarak bağlantıları kabul etmenizi söyler:

sudo iptables -L | grep policy



Eğer varsayılan olarak böyle değilse yani siz bir değişiklik yapmışsanız bu varsayılan olarak bağlantıyı kabul et yapılır:

iptables --policy INPUT ACCEPT
iptables --policy OUTPUT ACCEPT
iptables --policy FORWARD ACCEPT


Eğer sadece el ile bağlanılmasına izin vermek istiyorsunuz o zaman varsayılanı değiştirmeniz gerekecektir. Ama bu çok hassas bilgiler içeren sunucular için yararlı olacaktır:

iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP

Üç tane temel yanıt vardır.

Accept -> Hepsi bağlansın.




Drop -> Bağlantıyı bırak,hiç olmamış gibi davran.




Reject->Bağlantıya izin verme ama hatayı gönder.




       Belirli adresleri , adres aralıklarını ve bağlantı noktalarını engellemek, izin vermek için kural tanımlayabilirsiniz. iptables kuralları zincirin en üstünden başlar ve uyan bir kural bulana kadar hepsinin üstünden geçer. Listenin istediğiniz bir yerine kural koymak istiyorsanız:

iptables -I [zincir ][sıra]

Zincire kural eklemek için iptables -A parametresi kullanılır.

Tek ip adresi için kural:

iptables -A INPUT -s  18.18.18.18  -j DROP

ip adresi aralığı için kural :

iptables -A INPUT -s 18.18.18.0/24  -j DROP  
iptables -A INPUT -s 18.18.18.0/255.255.255.0 -j DROP

Bağlantıya özel port verme

 iptables -A INPUT -p tcp --dport ssh -s  18.18.18.18  -j DROP
  
Siz herhangi bir protokol veya port numarası ile "ssh" değiştirebilirsiniz.
-p tcp iptablesın hangi kısmı protokolle bağlantı kuracağını söyler. TCP yerine UDP kullanan bir protokol engellenseydi o zaman tcp yerine udp yazılcaktı.

Herhangi bir ip adresine gelen ssh bağlantılarını engellemek için :

iptables -A INPUT -p tcp --dport ssh  -j DROP

iptables -L listeleme -v ile paket ve veri byte bilgisi -n ile konak protokol ve ağlar sayı olarak listelenir.

Eklediğiniz özel kuralları -D parametresiyle silebilirsiniz:

iptables -D INPUT -p tcp --dport ssh -s  18.18.18.18  -j DROP

Tüm kuralları temizlemek için iptables -F komutu kullanılır.

Yaptığımız değişiklikleri kaydetmek için(Dağıtıma göre değişiklik gösterebilir.):

Ubuntu:      sudo /sbin/iptables-save
Redhat ya da Centos:      /sbin/service iptables save
Ya da:       /etc/init.d/iptables save





Hiç yorum yok:

Yorum Gönder