Arptables bir linux çekirdek (kernel) modülüdür. Ağ paketleri üzerinde ikinci katman filtreleme yapmak amacıyla kullanılır. Arp spoofing tehdidi Arptables'ın en yaygın kullanıldığı durumlardan biridir. Arptables, arptables_jf paketinin içinde bulunmaktadır.
Chain (Kural Zinciri)
Belirtilecek kuralların hangi paketleri filtrelemek için kullanılacağı, kuralların içinde bulunduğu kural zinciri denilen gruplar ile ayırt edilebilmektedir. Arptables ile birlikte gelen hazır kural zincirleri aşağıdaki tabloda mevcuttur. Hazır kural zincirlerinin yanında kullanıcı tanımlı kural zincirleri de eklenebilir.
Target (Hedef) | Açıklama |
IN (INPUT) | Gelen paketleri belirlenen kurallara göre filtreleyen kural zinciridir. |
OUT (OUTPUT) | Giden paketleri belirlenen kurallara göre filtreleyen kural zinciridir. |
Target (Hedef)
Kural oluştururken, kurala uyan pakete nasıl bir işlem uygulanacağı hedef denilen değerlerle belirtilir. Hedef değerleri sadece kurallara değil aynı zamanda hazır kural zincirlerine de (IN,OUT) Politika (Policy) olarak tanımlanabilir. IN ve OUT zincirlerinde eşleşme olmaması durumunda, zincirin politikası ne ise gelen yada giden pakete o işlem uygulanır. Hedefler ve kullanım amaçları aşağıdaki tabloda mevcuttur.
Target | Açıklama |
ACCEPT | Kural ile eşleşen paketin kabul edileceğini belirtir. |
DROP | Kural ile eşleşen paketin düşürülmesini sağlar. |
RETURN | Kural ile eşleşen paketi sıradaki bir diğer kullanıcı tanımlı kural zincirine yönlendirirerek orada filtre edilmesini sağlar. |
Komutlar
Komutlar | Açıklama |
-L / --list | Mevcut tüm arptables kural zincirlerini ve içinde barındırdığı kuralları listeler. |
-A / --append | Yeni bir kural oluşturur. Kural belirtilen kural zincirinin sonuna eklenir. |
-D / --delete | Mevcut kuralı siler. |
-I / --insert | Yeni bir kuralı belirtilecek olan zincir ve sıraya yerleştirirerek kaydırma yapar. |
-R / --replace | Belirtilecek olan zincir ve sıradaki kuralı yenisiyle değiştirir. |
-P / --policy | Hazir kural zincirlerine (IN, OUT) genel hedef belirlemek için kullanılır. |
-F / --flush | Kural zincirinde bulunan tüm kuralları siler. |
-Z / --zero | Spesifik olarak belirtilmediyse tüm kurallar ve içinde bulundukları zincirlerin Byte ve Paket sayacını sıfırlar. |
-N / --new-chain | Yeni bir kural zinciri oluşturmak için kullanılır. |
-X / --delete-chain | Belirtilen kural zincirini siler. |
-E / --rename-chain | Belirtilen kural zincirinin adını değiştirir. |
Parametreler
Parametreler | Açıklama |
-j / --jump | Kural ile eşleşen paket için belirtilen hedef değerinin uygulanmasını yada paketin belirtilen kullanıcı tanımlı kural zincirine yönlendirilmesini sağlar. |
-s / --source / --src | Kuralın belirtilen kaynak IP adresinden gelen paketi filtreleyeceğini tanımlar. |
-d / --destination / --dst | Kuralın belirtilen hedef IP adresine giden paketi filtreleyeceğini tanımlar. |
-z / --source-hw / --src-hw | Kuralın belirtilen kaynak MAC adresinden gelen paketi filtreleyeceğini tanımlar. |
-y / --destination-hw / --dst-hw | Kuralın belirtilen hedef MAC adresinden gelen paketi filtreleyeceğini tanımlar. |
Arptables 'ta Kullanılan Başlıca Komutlar
- Append
# arptables -A [zincir_adı] [kural_değerleri] [hedef]
# arptables -A IN --src 192.168.1.65 --src-hw 00:24:4A:4D:8F:C1 -j ACCEPT
# arptables -A IN --src-hw 00:24:4A:4D:8F:C1 -j ACCEPT
# arptables -A OUT --dst 192.168.1.65 --dst-hw 00:24:4A:4D:8F:C1 -j ACCEPT
# arptables -A OUT --dst-hw 00:24:4A:4D:8F:C1 -j ACCEPT - Replace
Append komut örneklerinde IP yi yanlış girdiğimizi varsayarsak değiştirmek için
# arptables -R [zincir_adi] [kural_no] [kural_değerleri] [hedef]
# arptables -R IN 1 --src 192.168.1.65 --src-hw 00:24:4A:4D:8F:C1 -j ACCEPT
# arptables -R OUT 1 --dst 192.168.1.65 --dst-hw 00:24:4A:4D:8F:C1 -j ACCEPT - Policy
# arptables -P [zincir_adı] [hedef]
# arptables -P IN DROP
# arptables -P OUT DROP
Yukarıdaki komut örneklerinin arptables -L komutununki çıktısı aşağıdaki gibidir. Bu örnekte, IN ve OUT zincirlerinin politikaları "DROP" olarak ayarlandığından 192.168.1.254 IP'si ve 00:24:4A:4D:0F:C1 MAC adresi dışındaki hiçbir paket alınamayacak ve gönderilemeyecektir.
Arptables Ayarlarının Kaydedilmesi ve Geri Yüklenmesi
Ayarları kaydetmek için;
# /etc/init.d/arptables_jf save
Kaydedilmiş en son ayarları geri yüklemek için;
# /etc/init.d/arptables_jf reload
Komutları kullanılmaktadır.