Ağınızın güvenliğini Iptables - Proxy - NAT - IDS: BÖLÜM 1

Bu gönderi, ağların nasıl çalıştığı ve Linux ekipmanımızı, ister ev ister iş olsun, ağımızı biraz daha fazla sağlayan bir Yönlendiriciye nasıl dönüştürebileceğimiz hakkında biraz açıklama yapmaya çalışıyor. Öyleyse işe başlayalım:

Bu içerik "Linux - Sistem Yönetimi ve Ağ Hizmetleri İşlemi" - Sébastien BOBILLIER kitabına dayanmaktadır.

Yönlendirme ve filtreleme

Yönlendirme hakkında konuşmak ve anlamak için önce yönlendiricinin işlevi nedir? Bunun için bir yönlendiricinin, bir ağ oluşturmanın ve diğer ekipmanlarla bağlantıya izin vermenin yanı sıra (bunu bir AP, Switch, Hub veya diğerleri ile yapabileceğimizi bilerek) iki farklı ağı birbirine bağlama yeteneğine sahip olduğunu söyleyebiliriz.

yönlendirici

Görüntüde görebileceğimiz gibi, yönlendirici tarafından oluşturulan ve iki arayüzünden birine ulaşan yerel bir ağ "10.0.1.0" var. Daha sonra, diğer arabirimindeki yönlendirici, İnternet'e bağlanabileceği genel IP'si olan başka bir ağa sahiptir. Yönlendirme işlevi temelde bu iki ağ arasında iletişim kurabilmeleri için bir aracı görevi görmektir.

Yönlendirici olarak Linux.

Doğal olarak, Linux Çekirdeği zaten "yönlendirme" yapma yeteneğine sahiptir, ancak varsayılan olarak devre dışıdır, bu nedenle Linux'umuzun bu işi yapmasını istiyorsak, dosyaya gitmeliyiz.

/proc/sys/net/ipv4/ip_forward

Orada sadece sıfır "0" içeren bir dosya olduğunu bulacağız, yapmamız gereken bu davranışı etkinleştirmek için onu bir "1" olarak değiştirmektir. Bu maalesef bilgisayarı yeniden başlattığımızda silinir, varsayılan olarak etkin durumda bırakmak için şu komutu kullanmamız gerekir:

sysctl net.ipv4.ip_forward=1

Veya doğrudan dosyada düzenleyin /etc/sysctl.conf. Dağıtıma bağlı olarak, bu konfigürasyon aynı zamanda bir dosyada da olabilir.  /etc/sysctl.d/.

Varsayılan olarak, Linux'umuzun genellikle lan ağımızın yapılandırması ve yönlendiriciye bağlanması olan bir yönlendirme tablosu olmalıdır. Bu yönlendirmeyi görmek istiyorsak iki komut kullanabiliriz:

route -n

o

netstat -nr

Her iki komut da aynı şekilde dönmelidir.

Ekran görüntüsü 2014-09-30 18:23:06

Genel olarak, bu yapılandırma Linux'unuzun bir Ağ Geçidi olarak hizmet vermesi için yeterlidir ve diğer bilgisayarlar bizim bilgisayarımızda gezinebilir. Şimdi, Linux'umuzun yerel olsun ya da olmasın iki veya daha fazla ağı bağlamasını istiyorsak, örneğin, statik rotaları kullanabiliriz.

Linux'umun iki ağ arabirimi olduğunu varsayalım, birincisinin ağ 172.26.0.0 olan bir İnternet bağlantısı var ve ikincisi (10.0.0.0) başka bir yerel ağdan bilgisayarlara sahip. Paketleri diğer ağa yönlendirmek istersek kullanabiliriz:

route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8

Genel olarak:

route add -net REDDESTINO netmask MASCARA gw IPDELLINUX

eğer verirsek rota -n bu ağın var olup olmadığına bakılmaksızın, bu yönlendirme tablomuzda düzeltilecektir.

Ekran görüntüsü 2014-09-30 18:31:35

Söz konusu yönlendirmeyi ortadan kaldırmak istiyorsak kullanabiliriz

route del -net 10.0.0.0 netmask 255.0.0.0

Iptable'lar.

Temelde iptables paketleri, giden, gelen veya diğerlerini filtrelemek için kullanılır, bu onu ağ trafiğimizi yönetmek için harika bir araç haline getirir. Eh, iptables, aynı bilgisayardan gelen trafiği filtrelememize izin verdiği gibi, aynı zamanda içinden geçen trafiği filtrelememize de izin verir. (Yönlendirme). Iptables tablolara, zincirlere ve eylemlere bölünebilir.

  • Panolar:  temelde iki tablo olabilir, filtre, paketleri filtrelemek ve  nat adresleri çevirmek, yani bir ağdan diğerine geçmek.
  • Zincirler: Zincir, filtrelemek veya yüzmek istediğimiz trafik türünü ifade eder, yani tabloları hangi trafiğe uygulayacağız? ve şunlar olabilir:  GİRİŞ: Gelen trafik, ÇIKIŞ: giden trafik veya İLERİ: İçinden geçen trafik, ancak uygun bir bağlantı değil.
  • Ayrıca görünebilir SONRAKİ, Paket yönlendirildikten sonra belirli bir şekilde işlem yapmak için kullanılır.
  • eylemler: Eylemler temelde zincirle gerçekleştirilecek eylemdir. Bu eylem olabilir DAMLA, bu sadece trafiği yok eder veya KABUL ETMEK. Bu, trafiğin bu işlemi yapmasına izin verir.

IPTABLES kuralları, oluşturuldukları sıraya göre kaydedilir ve yürütülür ve bir kural önceki bir kuralı silerse, sıradaki son kural her zaman uygulanır.

Güvenlik Duvarı Politikaları.

Genel olarak, güvenlik duvarları doğal olarak iki şekilde çalışır:

  1. Veya dışındaki tüm trafiğe izin ver
  2. Aşağıdakiler dışında hiçbir trafiğe izin verme ...

Politikaları uygulamak için kullanın IPTABLES - P EYLEM ZİNCİRİ

Dize, trafik türünü (INPUT, OUTPUT, FORWARD, POSTROUTING ...) temsil ettiğinde ve eylem DROP OR ACCEPT şeklindedir.

Bir örneğe bakalım.

Ekran görüntüsü 2014-09-30 18:53:23

Burada ilk başta ping atabildiğimi görüyoruz, sonra IPTABLES'a tüm OUTPUT trafiğinin DROP olduğunu veya izin verilmediğini söyledim. Sonra IPTABLES'a bunu kabul etmesini söyledim.

Sıfırdan bir güvenlik duvarı oluşturacaksak, her zaman (dışında herhangi bir trafiğe izin vermeyin ... Bunun için kuralları uygulamalıyız.

iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
Bu politikalar geçerliyse, herhangi bir bağlantı türü olmayacak
.

Geri dönmek için aynısını yazıyoruz ve DROP'u ACCEPT ile değiştiriyoruz.

Bu noktada, tüm trafik reddedildiğinden, IPTABLES'ımıza hangi trafiğe sahip olabileceğini söylemeye başlarız.

Sözdizimi şöyledir:

iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acción

Nerede:

String = INPUT, OUTPUT veya FORWARD

origin_ip = Paketlerin orijini, bu tek bir IP veya ağ olabilir ve bu durumda maskeyi belirlemeliyiz).

Hedef IP = paketlerin nereye gittiği. bu tek bir IP veya ağ olabilir ve bu durumda maskeyi belirlemeliyiz).

protokol = paketler tarafından kullanılan protokolü gösterir (icmp, tcp, udp ...)

port = trafiğin hedef bağlantı noktası.

eylem = DROP veya KABUL.

Örnek:

Ekran görüntüsü 2014-09-30 19:26:41

TÜM kısıtlanmış politikalar geçerlidir.

Ekran görüntüsü 2014-09-30 19:27:42

Ardından TCP protokolü ile 80 HTTP ve 443 HTTPS portları üzerinden trafik alabilmek için kuralları ekliyoruz. Ardından 53 numaralı bağlantı noktası DNS istemcisinin etki alanlarını çözmesi için uygulanır, aksi takdirde gezinemezsiniz. Bu, udp protokolü ile çalışır.

Çizgi:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Bunun nedeni şudur: Örneğin bir HTTP isteği yaptığınızda, sunucunun 80 numaralı bağlantı noktasına bağlanırsınız, ancak bilgileri döndürmek için sunucunun herhangi bir bağlantı noktası üzerinden size bağlanması gerekir. (Genellikle 1024'ten büyük).

Tüm bağlantı noktalarımız kapalı olduğundan, 1024'ten yüksek tüm bağlantı noktalarını açmazsak bu gerçekleştirilmeyecektir (Kötü fikir). Bu, kendi kurduğum bir bağlantıdan gelen tüm gelen trafiğin kabul edildiğini söylüyor. Demek istediğim, prensipte başladığım bir bağlantı.

ÇIKIŞ'ı kurallara koyarken, bu sadece söz konusu ekipman için geçerlidir, eğer ekipmanımızı bu bağlantılara izin vermek için yönlendirici olarak kullanıyorsak, OUTPUT'u FORWARD olarak değiştirmeliyiz. Trafik bilgisayardan geçtiği ancak bilgisayar tarafından başlatılmadığı için
Tüm bu kurallar yeniden başlatmanın ardından silinir, bu nedenle varsayılan olarak başlaması için komut dosyaları oluşturmanız gerekir. Ama bunu daha sonra göreceğiz

Umarım bu bilgiyi beğenmişsindir. Bir sonraki bölümde NAT, Proxy ve Firewal için betiklerden bahsedeceğim.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   Rogelio pinto dijo

    Bu, birçok girişimcinin kendi güvenlik duvarlarını üretmek için kullandığı temeldir, bu nedenle piyasada gömülü linux bulunan pek çok güvenlik duvarı markası vardır, bazıları iyi, bazıları ise çok fazla değildir.

  2.   Heber dijo

    Harika makale. İkinci bölümü dört gözle bekliyorum.

  3.   Milton dijo

    Çok iyi bir açıklama, işimin vekaletini anlamama yardımcı oldu. teşekkür ederim

  4.   Faustod dijo

    Merhaba Jlcmux,

    Mükemmel, gerçekten beğendim, karşı taraf ne zaman müsait olacak?

    Selamlar ve paylaşım için teşekkürler

    1.    @Hayalhanemersin dijo

      Yorum için teşekkürler.

      Diğer bölümü dün gönderdim, gün içinde yayınlayacaklarını düşünüyorum.

      Selamlar.

  5.   Israil dijo

    Çok iyi makale arkadaşım @ Jlcmux, onunla gerçekten öğrendim çünkü bir süredir sahip olduğum bazı şüpheleri açıklığa kavuşturdu, bu nedenle makalenin kaynağını, Sébastien BOBILLIER'ın kitabını, iyi slau2s ve şimdi 2. bölümü görmek için salu2s.

    1.    @Hayalhanemersin dijo

      Merhaba İsrail'e yorum yaptığınız için teşekkürler.

      Kitabın fiziksel formda olduğu ortaya çıktı. Ama bu bağlantıyı Google Kitaplar'da buldum. http://books.google.com.co/books?id=zxASM3ii4GYC&pg=PA356&lpg=PA356&dq=S%C3%A9bastien+BOBILLIER+Linux+%E2%80%93+Administraci%C3%B3n+del+sistema+y+explotaci%C3%B3n+de+los+servicios+de+red#v=onepage&q=

      Sanırım tamamlandı.

  6.   Ariel dijo

    Çok güzel bir makale, bir soru ekliyorum: Linux'u yönlendirici olarak kullanmanın, eğer varsa, kendisine adanmış bir donanıma göre avantajı ne olabilir? Yoksa sadece egzersiz için mi? Özel dağıtımlar olduğunu biliyorum, ancak eski bilgisayarları kurtaracak mı yoksa yapılandırmada daha fazla esneklik mi sağlayacaklarını bilmiyorum.

    1.    @Hayalhanemersin dijo

      Bence avantajları ve dezavantajları, bunu uygulayacağınız senaryoya bağlı. Neden kesinlikle eviniz için bir UTM veya bunun gibi bir şey satın almayacaksınız? Ve belki de karşılayamayacak küçük bir işletme için. Ayrıca, bunun tüm mantığını anlamanıza yardımcı olduğu ve özel bir FWall'ı daha iyi yapılandırabileceğiniz için bir egzersiz olarak da iyidir. Buna ek olarak, neredeyse tüm bu aygıtların sahip oldukları gerçekten Gömülü Linux'tur.

      Selamlar.

  7.   Ariel dijo

    Merhaba, bir soru, ağlar arasında benzer yönlendirme için linux'ta "yapay" bir arayüz oluşturabilir misiniz? (paket izleyici stili) sanal makinelerle çalışmak için? Örneğin, eth0'a sahipsem (tabii ki tek bir kartım olduğu için) başka bir ağ oluşturmak için eth1 oluşturabilir miyim? Çok iyi öğretmen!

    1.    ela dijo

      Linux'ta elbette sanal arayüzler oluşturabilirsiniz. Eth0'a sahipseniz, eth0: 0, eth0: 1, eth0: 2 ... vb olabilir.

  8.   Chinoloco dijo

    Çok güzel, paylaştığın için teşekkürler