Linux Güvenlik Duvarı iptables, Başlangıç Kılavuzu
Iptables, Linux işletim sistemleri için geliştirilmiş son derece esnek bir güvenlik duvarı aracıdır. Acemi Linux geek veya sistem yöneticisi olsanız da, iptables'ın sizin için iyi bir şekilde kullanabileceği bir yöntem olabilir. Size çok yönlü Linux güvenlik duvarını nasıl yapılandıracağınızı gösterdiğimizi okuyun..
fotoğrafı çeken ezioman.
İptables hakkında
iptables, trafiğe izin vermek veya engellemek için politika zincirleri kullanan bir komut satırı güvenlik duvarı yardımcı programıdır. Bir bağlantı sisteminizde kendisini kurmaya çalıştığında, iptables listesindeki ile eşleşecek bir kural arar. Bir tane bulamazsa, varsayılan işleme başvurur.
iptables neredeyse her zaman herhangi bir Linux dağıtımında önceden kurulmuş olarak gelir. Güncellemek / kurmak için iptables paketini almanız yeterlidir:
sudo apt-get install iptables
Firestarter gibi iptable'lara GUI alternatifleri var, ancak iptables birkaç komut aldığınızda gerçekten zor değil. Iptables kurallarını yapılandırırken son derece dikkatli olmak istersiniz, özellikle bir sunucuya SSH'deyseniz, yanlış bir komut fiziksel makinede manuel olarak düzeltilinceye kadar sizi kalıcı olarak kilitleyebilir.
Zincir Türleri
iptables üç farklı zincir kullanır: girdi, ileri ve çıktı.
Giriş - Bu zincir, gelen bağlantıların davranışını kontrol etmek için kullanılır. Örneğin, bir kullanıcı PC / sunucunuza SSH göndermeye çalışırsa, iptables IP adresini ve portu giriş zincirindeki bir kuralla eşleştirmeye çalışır..
ileri - Bu zincir, aslında yerel olarak teslim edilmeyen gelen bağlantılar için kullanılır. Bir yönlendirici düşünün - veriler her zaman kendisine gönderilir ancak nadiren yönlendiricinin kendisi için yönlendirilir; veri sadece hedefine iletilir. Bir çeşit yönlendirme, NATing veya sisteminizde yönlendirme gerektiren başka bir şey yapmıyorsanız, bu zinciri kullanmayacaksınız.
Sisteminizin ileri zinciri kullanıp kullanmadığını kontrol etmenin kesin bir yolu var..
iptables -L -v
Yukarıdaki ekran görüntüsü, birkaç haftadan beri çalışan ve gelen veya giden bağlantılarla ilgili hiçbir kısıtlamaya sahip olmayan bir sunucudur. Gördüğünüz gibi, giriş zinciri 11GB'lık paket işledi ve çıkış zinciri 17GB'lık işlendi. Öte yandan, ileri zincir, tek bir paketi işlemeye ihtiyaç duymamıştır. Bunun nedeni, sunucunun herhangi bir yönlendirme yapmaması veya doğrudan geçiş aygıtı olarak kullanılmamasıdır..
Çıktı - Bu zincir giden bağlantılar için kullanılır. Örneğin, howtogeek.com’a ping yapmaya çalışırsanız, iptables, bağlantı girişimine izin vermeye veya reddetmeye karar vermeden önce ping ile ilgili kuralların neler olduğunu görmek için çıkış zincirini kontrol eder..
Uyarı
Harici bir ana bilgisayara ping atmak yalnızca çıkış zincirini geçmesi gereken bir şey gibi görünse de, verileri döndürmek için giriş zincirinin de kullanılacağını unutmayın. Sisteminizi kilitlemek için iptables kullanırken, birçok protokolün iki yönlü iletişim gerektireceğini unutmayın; bu nedenle hem giriş hem de çıkış zincirlerinin doğru şekilde yapılandırılması gerekir. SSH, insanların her iki zincire de izin vermeyi unuttukları ortak bir protokoldür..
Politika Zinciri Varsayılan Davranışı
İçeri girmeden ve belirli kuralları yapılandırmadan önce, üç zincirin varsayılan davranışının ne olacağına karar vermek istersiniz. Diğer bir deyişle, bağlantı mevcut herhangi bir kuralla eşleşmiyorsa iptables'ın ne yapmasını istiyorsunuz??
Politika zincirlerinin şu anda benzersiz trafikle ne yapmak üzere yapılandırıldığını görmek için iptables -L
komuta.
Gördüğünüz gibi, bize daha temiz çıktılar vermek için grep komutunu kullandık. Bu ekran görüntüsünde, zincirlerimiz şu anda trafiği kabul etmeye kararlı..
Olmamasından çok, sisteminizin varsayılan olarak bağlantıları kabul etmesini istersiniz. İlke zinciri kurallarını daha önce değiştirmediyseniz, bu ayar önceden yapılandırılmış olmalıdır. Her iki durumda da, varsayılan olarak bağlantıları kabul etme komutu:
iptables - policy GİRİŞ KABUL
iptables - policy ÇIKIŞ KABUL
iptables --policy İLERİ KABUL
Kabul et kuralına varsayılan olarak, diğer tüm bağlantıları kabul etmeye devam ederken, belirli IP adreslerini veya port numaralarını reddetmek için iptables komutunu kullanabilirsiniz. Bir dakika içinde bu komutlara ulaşacağız..
Tüm bağlantıları reddetmek ve hangilerinin bağlanmasına izin vermek istediğinizi elle belirtmek istiyorsanız, zincirlerinizin varsayılan politikasını bırakmanız gerekir. Bunu yapmak, muhtemelen yalnızca hassas bilgiler içeren ve bunlara yalnızca aynı IP adreslerini bağlayan sunucular için yararlı olacaktır..
iptables - policy INPUT DROP
iptables - policy ÇIKIŞ DAMLA
iptables - policy FORWARD DROP
Bağlantıya Özel Yanıtlar
Varsayılan zincir politikalarınız yapılandırıldığında, iptables'a kural eklemeye başlayabilirsiniz, böylece belirli bir IP adresi veya bağlantı noktasından veya belirli bir IP adresi veya bağlantı noktasından bir bağlantıyla karşılaştığında ne yapacağını bilir. Bu rehberde, en temel ve en çok kullanılan üç “yanıt” üzerinden geçeceğiz.
Kabul etmek - Bağlantıya izin ver.
Düşürmek - Bağlantıyı kes, hiç olmamış gibi davran. Kaynağın sisteminizin var olduğunu fark etmesini istemiyorsanız, bu en iyisidir..
reddetmek - Bağlantıya izin verme, ancak bir hata geri gönder. Belirli bir kaynağın sisteminize bağlanmasını istemiyorsanız, ancak güvenlik duvarınızın bunları engellediğini bilmelerini istiyorsanız, bu en iyisidir..
Bu üç kural arasındaki farkı göstermenin en iyi yolu, bir PC bir Linux makinesini bu ayarların her biri için yapılandırılmış iptables ile pinglemeye çalıştığında nasıl göründüğünü göstermektir..
Bağlantıya izin vermek:
Bağlantıyı bırakmak:
Bağlantıyı reddetme:
Belirli Bağlantılara İzin Verme veya Engelleme
Politika zincirleriniz yapılandırıldığında, belirli adreslere, adres aralıklarına ve bağlantı noktalarına izin vermek veya bunları engellemek için iptables'ı artık yapılandırabilirsiniz. Bu örneklerde, bağlantıları şu şekilde ayarlayacağız: DÜŞÜRMEK
, ama onları değiştirebilirsin. KABUL ETMEK
veya REDDET
, gereksinimlerinize ve politika zincirlerinizi nasıl yapılandırdığınıza bağlı olarak.
Not: Bu örneklerde kullanacağız iptables -A
mevcut zincire kurallar eklemek için. iptables listesinin başında başlar ve her kuralı eşleştiğini bulana kadar devam eder. Bir kuralın üst üste eklenmesi gerekirse, iptables -I [zincir] [sayı]
Listede olması gereken numarayı belirtmek için.
Tek bir IP adresinden gelen bağlantılar
Bu örnek, tüm bağlantıların IP adresinden nasıl engelleneceğini gösterir 10.10.10.10.
iptables -Bir GİRİŞ -s 10.10.10.10 -j DROP
Bir dizi IP adresinden gelen bağlantılar
Bu örnek, 10.10.10.0/24 ağ aralığındaki tüm IP adreslerinin nasıl engelleneceğini gösterir. IP adreslerinin aralığını belirlemek için bir ağ maskesi veya standart eğik çizgi gösterimi kullanabilirsiniz.
iptables -Bir GİRİŞ -s 10.10.10.0/24 -j DROP
veya
iptables -Bir GİRİŞ -s 10.10.10.0/255.255.255.0 -j DROP
Belirli bir bağlantı noktasına yapılan bağlantılar
Bu örnek, SSH bağlantılarının 10.10.10.10’dan nasıl engelleneceğini gösterir..
iptables -Bir GİRİŞ -p tcp --dport ssh -s 10.10.10.10 -j DROP
Herhangi bir protokol veya port numarası ile "ssh" değiştirebilirsiniz. -p tcp
Kodun bir kısmı iptables'a protokolün ne tür bir bağlantı kullandığını söyler. TCP yerine UDP kullanan bir protokolü engelliyorsanız, -p udp
bunun yerine gerekli olur.
Bu örnek, SSH bağlantılarının herhangi bir IP adresinden nasıl engelleneceğini gösterir..
iptables-GİRİŞ -p tcp --sport ssh -j DROP
Bağlantı devletler
Daha önce de belirttiğimiz gibi, birçok protokol iki yönlü iletişim gerektirecektir. Örneğin, sisteminize SSH bağlantılarına izin vermek istiyorsanız, giriş ve çıkış zincirlerinin bunlara eklenmiş bir kurala ihtiyacı olacaktır. Ancak, yalnızca sisteminize SSH'nin girmesine izin vermek isterseniz? Çıkış zincirine bir kural eklemeyecek, aynı zamanda SSH denemelerine de izin vermeyecektir.?
Bağlantı durumlarının girdiği yer burasıdır; bu, size iki yönlü iletişime izin vermeniz, ancak yalnızca bir yönlü bağlantıların kurulmasına izin vermeniz gereken yeteneği verir. 10.10.10.10’dan SSH bağlantılarına izin verilen, ancak 10.10.10.10’dan SSH bağlantılarına izin verilmeyen bu örneğe bir göz atın. Bununla birlikte, sistem oturumu kurulduğu sürece SSH üzerinden bilgi geri göndermesine izin verilir ve bu, bu iki ana bilgisayar arasında SSH iletişimini mümkün kılar..
iptables -Bir GİRİŞ -p tcp --dport ssh -s 10.10.10.10 -m durum - devlet YENİ, KURULUŞ - j KABUL
iptables -Bir ÇIKIŞ -p tcp --spor 22 -d 10.10.10.10 -m devlet - devlet KURULUŞU -j KABUL
Değişiklikleri kaydediyor
İptables kurallarınızda yaptığınız değişiklikler, değişiklikleri kaydetmek için bir komut çalıştırmadığınız sürece iptables hizmetinin bir sonraki yeniden başlatılması sırasında hurdaya çıkar. Bu komut dağıtımınıza bağlı olarak farklılık gösterebilir:
Ubuntu:
sudo / sbin / iptables-save
Kırmızı Şapka / CentOS:
/ sbin / service iptables save
Veya
/etc/init.d/iptables save
Diğer Komutlar
Halen yapılandırılmış iptables kurallarını listeleyin:
iptables -L
Ekleme -v
seçenek size paket ve bayt bilgisi verir ve -n
her şeyi sayısal olarak listeleyecektir. Başka bir deyişle - ana bilgisayar adları, protokoller ve ağlar sayı olarak listelenir.
Halihazırda yapılandırılmış olan tüm kuralları silmek için, flush komutunu verebilirsiniz..
iptables -F