IpTables Nedir
IpTables yani Linux Firewall Nedir
Bu soruya 1 cevap yazıldı. Cevap İçin Alta Doğru İlerleyin.
İşte Cevaplar
Cevap : 1. IPTables Nedir?
İnternete bağlanan her sistem potansiyel saldırı tehlikelerine gebedir. Bir saldırgan direkt olarak veya kendini gizleyerek sisteme sızmak isteyebilir. Güncel Linux çekirdeklerinde kullanılan firewalllarin son gözdesi iptables, paket filtrelemesi yaparak erişim yetkisini belli bir seviyede tutar. Bilinmelidir ki sistem kurulmaya başladığı andan itibaren, yönetim politikasinin belirlenmeye başlaması ve firewall'in bu politika üzerine inşası şarttır. Netfilter (iptables) kurulmadan önce, kullanıcının gereksiz servisleri çalıştırmaması ve gerekli olanlarda daha seçici davranması gerekir. Daha seçici davranmasından kasıt bir servisin her zaman bir kaç tane daha alternatifi olmasıdır (sendmail yerine postfix gibi). Sendmail eski günlerdeki verdiği güveni artık verememektedir.
Aslında iptables Linux'un 4. nesil paket filtreleme yönetim aracı. İlk olarak Alan Cox tarafından 1994'de BSD'den uyarlanan ipfw aracı vardı ve Linux 1.1 serisi çekirdekten bu yana paket filtreleme sistemine sahip durumda.
2. IPTables Komutu
IPtables komutunun temel kullanım betikleri ve prosedürü şu şekildedir ;
#iptables <İŞLEM> <PROSEDÜR> < DENETİM>
IPTables kural seçenekleri aşağıdaki gibidir:
! Kuralı tersine çevirir.
-s [!] Kaynak adresini belirtir.127.0.0.1/255.0.0.0 gibi..
-p [!] UDP, TCP, ICMP, ALL protokollerinden biri kullanılır. ALL hepsi içindir.
--sport [!] Kaynak portu belirtir.etc/services da listelenen port isimleri olabilir ya da numarasıyla yazılabilir. --source-port --sport ile aynı
-d [!] Varış adresidir.
--dport [!] Varış portudur.
--icmp-type ICMP (Internet Control Message Protocol) tipini belirtir.
-i [!] arabirim eth1, ppp0 gibi..
-j Kural için belirtilen zincirde hedef belirtir. -j ACCEPT gibi..
--to-source Yeni kaynak ip'si yazar SNAT ile kullanılır.
-o [!] Çıkan ve yönlendirilen zincirlerde kullanılır.(-o ppp1 gibi)
-t Tabloyu belirtir.Nat tablosu için -t nat şeklinde yazılır.
-m Kullanılacak modülü belirtir.-m limit gibi
--state State (durum) modülü içindir. NEW, INVALID, RELATED ve ESTABLISHED seçenekleri içindir.
--tcp-flags TCP flag'laridir. ACK, FIN, RST, URG, SYN, PS veya ALL.
--syn SYN paketlerini kontrol etmek içindir.
--limit Saniye başina eşleşme hızını kontrol etmek için kullanılır.
-V Iptables'ın versiyonunu öğrenmek için kullanılır.
--mac-source[!] Belirtilen fiziksel adres için işleme alınır yada alınmaz.
2.1. İşlem
Bir diğer adıyla zincir. IPTables için en temel işlemler aşağıdaki gibidir:
N - Yeni İşlem Ekleneceğini belirtir ( New )
X - Silme işlemini belirtir. ( Eks )
L - Listeleme İşlemini belirtir ( List )
F - Tüm Kuralların silineceğini belirtir ( Flush )
Z - Sayaçların sıfırlanacağını belirtir ( Zero )
A - Yeni Kural eklentileri için kullanılır ( Add )
I - Bir aralığa kural eklemek için kullanılır ( Insert )
D - Belirtilen kuralı silmek için kullanılır ( Delete )
R - Belirtilen kuralı değiştirmek için kullanılır ( Replace )
2.2. Prosedür
İşlemin yapılacağı prosedürü belirtir. Burası için üç temel Prosedür vardır:
"INPUT - OUTPUT - FORWARD"
Sistemimiz üzerinden geçecek tüm trafikler ya giriş, ya çıkış yada yönlendirmedir. Dışarıdan sistemimize gelecek paketler için "INPUT", sistemimizden dışarıya çıkacak paketler için "OUTPUT", başka bir sistemden, diğer bir sisteme gidecek ve bizim üzerimizden geçecek paketler için "FORWARD" prosedürlerini kullanırız.
2.3. Protokol
Denetimi hangi protokol üzerinde yapacağımızı, "Tcp, Udp" bu betikte belirtiriz.
Örneğin "-p tcp"
2.4. Hedef
Yapacağımız denetim işleminin hedefini belirtir. Örneğin "-d 212.174.199.71"
2.5. Kaynak
Yapacağımız denetimin kaynağını belirtir.
Örneğin "-s 127.0.0.1"
Burada 127.0.0.1 IP adresini kaynak olarak belirtiyoruz.
2.6. Denetim
Yapacağımız denetimin türünü belirtir.
Örneğin, yasaklamak istiyor isek "DROP", izin vermek istiyor isek "ACCEPT", kabul etmeyip red cevabını göndermek istiyor isek "REJECT", işlemin kaydını tutmak istiyor isek "LOG"seçenklerini kullanırız.
3. Uygulama
Sistemimizde HTTP, FTP, Pop3, Smtp servisleri çalışıyor olsun. Sistemimiz dışarıdan gelecek Ping'lere yanıt vermesin ve belirtilen servisler dışındaki hiçbir porta talep gönderilemesin.
3.1. Prosedürleri sil
#iptables –F
Öncelikle daha önce girdiğimiz tüm betikleri temizliyoruz.
root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
3.2. Tüm girişleri yasakla
#iptables -A INPUT -p tcp -j DROP
Daha sonra IPtables -A INPUT diyerek dışıradın gelen tapeler hakkında bir kayıt gireceğimiz belirterek protokolümüzü "-p tcp" diyerek seçiyoruz. Eğer kaynak ve hedef belirtmezsek tüm kaynak ve tüm hedefleri kapsar yaptığımız işlem. Ozaman kaynak belirtmiyoruz ve "-j DROP" diyerek denetimlerimizi yasaklıyoruz. Böylelikle sistemimize dışarıdan hiç kimse ulaşamaz hale geliyor.
[root@localhost ~]# iptables -A INPUT -p tcp -j DROP
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
NOT: Browserınızla bir web sayfasına bağlanmaya çalışarak kuralın çalışmasını test edin.
3.3. Ping'leri yasakla
#iptables -A INPUT -p ICMP -j DROP
Şimdi Dışarıdan sistemimize Ping atılmasını engelleyelim. Bunun için yine "IPtables -A INPUT" diyoruz ve yeni bir işlem gireceğimizi belirtiyoruz. "-p ICMP" diyoruz ve üzerinde işlem yapacağımız protokolün "ICMP" olduğunu gösteriyoruz. Akabinde "-j DROP" diyoruz ve tüm kaynak ve hedefleri içine kapsayacak bir kural ile bu prosedüre engel kuyoyoruz.
[root@localhost ~]# iptables -A INPUT -p ICMP -j DROP
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- anywhere anywhere
DROP icmp -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
NOT: Bilgisayarınızın IP adresine ping atmaya çalışarak kuralın çalışmasını test edin.
3.4. 80 nolu portu (HTTP portunu) aç
#iptables -A INPUT -p tcp -s 0/0 --dport 80 -j ACCEPT
IPtables -A diyoruz, ve bir denetim gireceğimiz gösteriyoruz. "-p tcp" diyoruz ve işlemin hangi protokol üzerinde uygulanacağını belirtiyoruz. "-s 0/0" diyoruz ve kaynağı tüm network olarak gösteriyoruz. Burada hiçbirşey belirtmeyebilirdikte. "-s" kullanımına örnek olması açısından gösteriyoruz. "-s 0/0" diyerek tüm IP aralıklarını içine kapsayacağını gösteriyoruz. "--dport 80" diyerek sistemimizdeki 80 nolu portu belirtiyoruz ve "-j ACCEPT" diyerek bu porta erişimleri olanaklı kılıyoruz.
[root@localhost ~]# iptables -A INPUT -p tcp -s 0/0 --dport 80 -j ACCEPT
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- anywhere anywhere
DROP icmp -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:http
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
NOT: Browserınızla bir web sayfasına bağlanmaya çalışarak kuralın çalışmasını test edin.
3.5. 21 Nolu Portu aç
#iptables -A INPUT -p tcp -s 0/0 --dport 21 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp -s 0/0 --dport 21 -j ACCEPT
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- anywhere anywhere
DROP icmp -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:ftp
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
3.6. 25 Nolu portu aç
#iptables -A INPUT -p tcp -s 0/0 --dport 25 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp -s 0/0 --dport 25 -j ACCEPT
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- anywhere anywhere
DROP icmp -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:ftp
ACCEPT tcp -- anywhere anywhere tcp dpt:smtp
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
3.7. 110 Nolu portu aç
#iptables -A INPUT -p tcp -s 0/0 --dport 110 -j ACCEPT
[root@localhost ~]# iptables -D INPUT -p tcp -s 0/0 --dport 110 -j ACCEPT
iptables: Bad rule (does a matching rule exist in that chain?)
[root@localhost ~]# iptables -A INPUT -p tcp -s 0/0 --dport 110 -j ACCEPT
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- anywhere anywhere
DROP icmp -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:ftp
ACCEPT tcp -- anywhere anywhere tcp dpt:smtp
ACCEPT tcp -- anywhere anywhere tcp dpt:pop3
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
4. Referanslar
www.fatih.edu.tr/~gulshatk/linux_II/IPTABLES%20SERVISI.pdf
https://www.wardom.org/iptables-nedir-genis-bilgi-t274001.html
Diğer Cevaplara Gözat
İnternete bağlanan her sistem potansiyel saldırı tehlikelerine gebedir. Bir saldırgan direkt olarak veya kendini gizleyerek sisteme sızmak isteyebilir. Güncel Linux çekirdeklerinde kullanılan firewalllarin son gözdesi iptables, paket filtrelemesi yaparak erişim yetkisini belli bir seviyede tutar. Bilinmelidir ki sistem kurulmaya başladığı andan itibaren, yönetim politikasinin belirlenmeye başlaması ve firewall'in bu politika üzerine inşası şarttır. Netfilter (iptables) kurulmadan önce, kullanıcının gereksiz servisleri çalıştırmaması ve gerekli olanlarda daha seçici davranması gerekir. Daha seçici davranmasından kasıt bir servisin her zaman bir kaç tane daha alternatifi olmasıdır (sendmail yerine postfix gibi). Sendmail eski günlerdeki verdiği güveni artık verememektedir.
Aslında iptables Linux'un 4. nesil paket filtreleme yönetim aracı. İlk olarak Alan Cox tarafından 1994'de BSD'den uyarlanan ipfw aracı vardı ve Linux 1.1 serisi çekirdekten bu yana paket filtreleme sistemine sahip durumda.
2. IPTables Komutu
IPtables komutunun temel kullanım betikleri ve prosedürü şu şekildedir ;
#iptables <İŞLEM> <PROSEDÜR> < DENETİM>
IPTables kural seçenekleri aşağıdaki gibidir:
! Kuralı tersine çevirir.
-s [!] Kaynak adresini belirtir.127.0.0.1/255.0.0.0 gibi..
-p [!] UDP, TCP, ICMP, ALL protokollerinden biri kullanılır. ALL hepsi içindir.
--sport [!] Kaynak portu belirtir.etc/services da listelenen port isimleri olabilir ya da numarasıyla yazılabilir. --source-port --sport ile aynı
-d [!] Varış adresidir.
--dport [!] Varış portudur.
--icmp-type ICMP (Internet Control Message Protocol) tipini belirtir.
-i [!] arabirim eth1, ppp0 gibi..
-j Kural için belirtilen zincirde hedef belirtir. -j ACCEPT gibi..
--to-source Yeni kaynak ip'si yazar SNAT ile kullanılır.
-o [!] Çıkan ve yönlendirilen zincirlerde kullanılır.(-o ppp1 gibi)
-t Tabloyu belirtir.Nat tablosu için -t nat şeklinde yazılır.
-m Kullanılacak modülü belirtir.-m limit gibi
--state State (durum) modülü içindir. NEW, INVALID, RELATED ve ESTABLISHED seçenekleri içindir.
--tcp-flags TCP flag'laridir. ACK, FIN, RST, URG, SYN, PS veya ALL.
--syn SYN paketlerini kontrol etmek içindir.
--limit Saniye başina eşleşme hızını kontrol etmek için kullanılır.
-V Iptables'ın versiyonunu öğrenmek için kullanılır.
--mac-source[!] Belirtilen fiziksel adres için işleme alınır yada alınmaz.
2.1. İşlem
Bir diğer adıyla zincir. IPTables için en temel işlemler aşağıdaki gibidir:
N - Yeni İşlem Ekleneceğini belirtir ( New )
X - Silme işlemini belirtir. ( Eks )
L - Listeleme İşlemini belirtir ( List )
F - Tüm Kuralların silineceğini belirtir ( Flush )
Z - Sayaçların sıfırlanacağını belirtir ( Zero )
A - Yeni Kural eklentileri için kullanılır ( Add )
I - Bir aralığa kural eklemek için kullanılır ( Insert )
D - Belirtilen kuralı silmek için kullanılır ( Delete )
R - Belirtilen kuralı değiştirmek için kullanılır ( Replace )
2.2. Prosedür
İşlemin yapılacağı prosedürü belirtir. Burası için üç temel Prosedür vardır:
"INPUT - OUTPUT - FORWARD"
Sistemimiz üzerinden geçecek tüm trafikler ya giriş, ya çıkış yada yönlendirmedir. Dışarıdan sistemimize gelecek paketler için "INPUT", sistemimizden dışarıya çıkacak paketler için "OUTPUT", başka bir sistemden, diğer bir sisteme gidecek ve bizim üzerimizden geçecek paketler için "FORWARD" prosedürlerini kullanırız.
2.3. Protokol
Denetimi hangi protokol üzerinde yapacağımızı, "Tcp, Udp" bu betikte belirtiriz.
Örneğin "-p tcp"
2.4. Hedef
Yapacağımız denetim işleminin hedefini belirtir. Örneğin "-d 212.174.199.71"
2.5. Kaynak
Yapacağımız denetimin kaynağını belirtir.
Örneğin "-s 127.0.0.1"
Burada 127.0.0.1 IP adresini kaynak olarak belirtiyoruz.
2.6. Denetim
Yapacağımız denetimin türünü belirtir.
Örneğin, yasaklamak istiyor isek "DROP", izin vermek istiyor isek "ACCEPT", kabul etmeyip red cevabını göndermek istiyor isek "REJECT", işlemin kaydını tutmak istiyor isek "LOG"seçenklerini kullanırız.
3. Uygulama
Sistemimizde HTTP, FTP, Pop3, Smtp servisleri çalışıyor olsun. Sistemimiz dışarıdan gelecek Ping'lere yanıt vermesin ve belirtilen servisler dışındaki hiçbir porta talep gönderilemesin.
3.1. Prosedürleri sil
#iptables –F
Öncelikle daha önce girdiğimiz tüm betikleri temizliyoruz.
root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
3.2. Tüm girişleri yasakla
#iptables -A INPUT -p tcp -j DROP
Daha sonra IPtables -A INPUT diyerek dışıradın gelen tapeler hakkında bir kayıt gireceğimiz belirterek protokolümüzü "-p tcp" diyerek seçiyoruz. Eğer kaynak ve hedef belirtmezsek tüm kaynak ve tüm hedefleri kapsar yaptığımız işlem. Ozaman kaynak belirtmiyoruz ve "-j DROP" diyerek denetimlerimizi yasaklıyoruz. Böylelikle sistemimize dışarıdan hiç kimse ulaşamaz hale geliyor.
[root@localhost ~]# iptables -A INPUT -p tcp -j DROP
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
NOT: Browserınızla bir web sayfasına bağlanmaya çalışarak kuralın çalışmasını test edin.
3.3. Ping'leri yasakla
#iptables -A INPUT -p ICMP -j DROP
Şimdi Dışarıdan sistemimize Ping atılmasını engelleyelim. Bunun için yine "IPtables -A INPUT" diyoruz ve yeni bir işlem gireceğimizi belirtiyoruz. "-p ICMP" diyoruz ve üzerinde işlem yapacağımız protokolün "ICMP" olduğunu gösteriyoruz. Akabinde "-j DROP" diyoruz ve tüm kaynak ve hedefleri içine kapsayacak bir kural ile bu prosedüre engel kuyoyoruz.
[root@localhost ~]# iptables -A INPUT -p ICMP -j DROP
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- anywhere anywhere
DROP icmp -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
NOT: Bilgisayarınızın IP adresine ping atmaya çalışarak kuralın çalışmasını test edin.
3.4. 80 nolu portu (HTTP portunu) aç
#iptables -A INPUT -p tcp -s 0/0 --dport 80 -j ACCEPT
IPtables -A diyoruz, ve bir denetim gireceğimiz gösteriyoruz. "-p tcp" diyoruz ve işlemin hangi protokol üzerinde uygulanacağını belirtiyoruz. "-s 0/0" diyoruz ve kaynağı tüm network olarak gösteriyoruz. Burada hiçbirşey belirtmeyebilirdikte. "-s" kullanımına örnek olması açısından gösteriyoruz. "-s 0/0" diyerek tüm IP aralıklarını içine kapsayacağını gösteriyoruz. "--dport 80" diyerek sistemimizdeki 80 nolu portu belirtiyoruz ve "-j ACCEPT" diyerek bu porta erişimleri olanaklı kılıyoruz.
[root@localhost ~]# iptables -A INPUT -p tcp -s 0/0 --dport 80 -j ACCEPT
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- anywhere anywhere
DROP icmp -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:http
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
NOT: Browserınızla bir web sayfasına bağlanmaya çalışarak kuralın çalışmasını test edin.
3.5. 21 Nolu Portu aç
#iptables -A INPUT -p tcp -s 0/0 --dport 21 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp -s 0/0 --dport 21 -j ACCEPT
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- anywhere anywhere
DROP icmp -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:ftp
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
3.6. 25 Nolu portu aç
#iptables -A INPUT -p tcp -s 0/0 --dport 25 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp -s 0/0 --dport 25 -j ACCEPT
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- anywhere anywhere
DROP icmp -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:ftp
ACCEPT tcp -- anywhere anywhere tcp dpt:smtp
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
3.7. 110 Nolu portu aç
#iptables -A INPUT -p tcp -s 0/0 --dport 110 -j ACCEPT
[root@localhost ~]# iptables -D INPUT -p tcp -s 0/0 --dport 110 -j ACCEPT
iptables: Bad rule (does a matching rule exist in that chain?)
[root@localhost ~]# iptables -A INPUT -p tcp -s 0/0 --dport 110 -j ACCEPT
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- anywhere anywhere
DROP icmp -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:ftp
ACCEPT tcp -- anywhere anywhere tcp dpt:smtp
ACCEPT tcp -- anywhere anywhere tcp dpt:pop3
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
4. Referanslar
www.fatih.edu.tr/~gulshatk/linux_II/IPTABLES%20SERVISI.pdf
https://www.wardom.org/iptables-nedir-genis-bilgi-t274001.html
Diğer Cevaplara Gözat