Centos 7 üzerinde port açmak, port kapatmak veya gelen istekleri yönetmek isteyebilirsiniz. Örneğin SSH portunuzu değiştirdiniz ve sunucunuza farklı bir port üzerinden SSH erişimi yapmaya çalışıyorsunuz fakat yanıt alamıyorsunuz. Bir başka örnek: sunucuya gelen istekleri ip bazlı içeriden engellemek istiyorsunuz. Bu her ne kadar sunucu dışında bulunan güvenlik duvarından daha stabil ve sağlıklı yapılsa da bazen sunucu içerisinde bu gibi değişikliklere ihtiyaç duyulabiliyor.

Iptables servisi ile tüm bu yönetimi sanal makinanız içerisinde kolaylıkla yapabilirsiniz.

İlgili servisi aşağıdaki komut ile kuralım.

yum -y install iptables-services

Centos 7 ile beraber gelen firewall-cmd servisini durduralım.

sudo systemctl stop firewalld

Servisi deaktif edelim.

sudo systemctl disable firewalld

Iptables servisini başlatalım ve reboot’tan sonra otomatik çalışması için aktif edelim.

service iptables start
sudo systemctl enable iptables

Servisin çalışması için gerekli komutları girdik. Şimdi Iptables tarafında tcp, udp port açma ve gelen/giden kısımlarına kural eklemeye göz atalım.

iptables -A [INPUT/OUTPUT] -p [TCP/UDP] --dport [PORT-NUMARASI] -j [ACCEPT/DROP/REJECT]
  • Yukarıdaki komutumuzdaki -A parametresi append olan eklemek anlamına gelmektedir. Yerine aynı parametre olan –append ‘te kullanabilirsiniz.
  • [INPUT/OUTPUT] yazan kısımdaki parametre, girilecek olan kuralın hangi tarafa ekleneceğini belirtir. INPUT gelen trafiği OUTPUT giden trafiği temsil eder.
  • -p Parametresi protokol belirtmemizi sağlar. Bununla beraber TCP veya UDP olarak bir protokol belirtmelisiniz.
  • –dport parametresi ekleyeceğiniz kuralı bir port ile kısıtlar. Gelecek veya Gidecek paketler için bir port numarası belirlersiniz.
  • -j parametresi eklenecek olan kuralın istek aldığında iptables tarafından hangi işlem göreceğini belirtir. Bu parametre ile beraber aşağıdaki seçenekler kullanılmalıdır.
    • ACCEPT parametresini yazarsanız gelen veya giden isteği kabul eder.
    • DROP parametresini yazarsanız giden veya gelen istek için bir boşluk yaratırsınız. Bir bakıma paket bir yere yanıt göndermeden sonlanır.
    • REJECT parametresini yazarsanız giden veya gelen istek reddedilir ve karşı tarafa paketin reddedildiğine dair bir TCP RST paketi gönderir.

Eklediğimiz kuralların iptables veri tabanına kaydedilmesi için aşağıdaki komutu girelim.

service iptables save

Servisi yeniden başlatmak için aşağıdaki komutu kullanabilirsiniz.

service iptables restart

Girdiğimiz kuralları gelen/giden, tcp/udp, satır numarası ile listelemek için aşağıdaki komutu kullanabilirsiniz.

iptables -nvL --line-numbers
  • -n parametresi portları numeric olarak gösterir.
  • -v parametresi ayrıntılı olarak listelemeye yardımcı olur.
  • -L parametresi kuralları listeler.
  • –line-numbers parametresi listelenen kuralların satır numaralarını gösterir. Silme işleminde kolaylık sağlar.

Iptables servisini kullanarak 223 tcp portuna gelen istekleri kabul eden kuralı yazalım, kaydedelim ve listeleyelim.

iptables -A INPUT -p TCP --dport 223 -j ACCEPT
service iptables save
iptables -nvL --line-numbers

Çıktı aşağıdaki gibi olacaktır.

Chain INPUT (policy ACCEPT 150 packets, 14699 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:223

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 141 packets, 14703 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Iptables üzerinde girdiğimiz kuralı silmek istiyorsak aşağıdaki komutu kullanabiliriz.

iptables -D [INPUT/OUTPUT/FORWARD] 1
  • -D parametresi delete anlamına gelir. Bu parametreden sonra gelen terim INPUT (gelen), OUTPUT (giden), FORWARD (yönlendirilen) kuralları temsil eder.
  • Komutun sonundaki rakam iptables -nvL çıktısında aldığımız kural listesindeki rakamı temsil eder. Biz INPUT tablosundaki bir kuralı sileceğimiz için INPUT 1 yazdık.