Bazı güvenlik duvarı bağlantı noktalarını yalnızca yerel ağ bağlantılarını kabul edecek şekilde mi ayarladınız?


18

Bazı bağlantı noktalarının dış dünyadan değil, yalnızca yerel alan ağından bağlantılara açık olması için LAN'daki bir sistemde güvenlik duvarını nasıl kurarım?

Örneğin, Scientific Linux 6.1 (RHEL tabanlı dağıtım) çalıştıran bir kutum var ve SSH sunucusunun yalnızca localhost veya LAN bağlantılarını kabul etmesini istiyorum. Bunu nasıl yaparım?

Yanıtlar:


24

Çekirdeğin iptables'ı tamamen boşken ( iptables -F), bu istediğinizi yapar:

# iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j DROP

Bu, tüm LAN adreslerinin TCP bağlantı noktası 22 ile konuşmasına izin verildiğini, localhost'un aynı düşünceyi aldığını (evet, 127. * sadece 127.0.0.1 değil) ve bu ilk iki kurala uymayan diğer adreslerden gelen paketlerin belirsiz bir şekilde düştüğünü söylüyor bit kova . Sen kullanabilirsiniz REJECTyerine DROPaktif bir ret (TCP RST) isterseniz yerine TCP bağlantı noktası 22 paketleri için bir kara delik yapma.

LAN'ınız 192.168.0. * Bloğunu kullanmıyorsa, doğal olarak ilk satırdaki IP ve maskeyi LAN'ınızın IP şemasına uyacak şekilde değiştirmeniz gerekir.

Güvenlik duvarınızda zaten bazı kurallar yapılandırılmışsa, bu komutlar istediğinizi yapamayabilir. (Öğrenmek iptables -Liçin kök olarak söyleyin .) Sık sık olan şey, mevcut kurallardan birinin filtrelemeye çalıştığınız paketleri almasıdır, böylece yeni kurallar eklemenin bir etkisi yoktur. Eğer kullanabilirsiniz ancak -Iyerine -Aile iptablesyerine onları ekleme zincirinin ortasına yeni kurallar kesikler komuta, bu zincirler sistem açılışta doldurulan öğrenmek ve yeni kuralları her zaman yüklü olsun böylece bu süreci değiştirmek için genellikle iyidir doğru sipariş.

RHEL 7+

Son RHEL tipi sistemlerde, bunu yapmanın en iyi yolu kullanmak firewall-cmdveya GUI eşdeğeri. Bu, işletim sisteminin firewalldarka plan programına ne istediğinizi söyler iptables -L.

RHEL 6 ve Daha Önce

Eski RHEL tipi sistemlerde, sipariş verirken güvenlik duvarı zincirlerini değiştirmenin en kolay yolu düzenlemektir /etc/sysconfig/iptables. İşletim sisteminin GUI ve TUI güvenlik duvarı araçları oldukça basittir, bu nedenle daha karmaşık kurallar eklemeye başladığınızda, eski iyi yapılandırma dosyalarına geri dönmek daha iyidir. Bunu yapmaya başladığınızda, yapılandırmayı değiştirmek için işletim sisteminin güvenlik duvarı araçlarını kullanırsanız değişikliklerinizi kaybetme riskiniz olduğunu unutmayın, çünkü bunlar gibi el işi kurallarla nasıl başa çıkılacağını bilemeyebilir.

Bu dosyaya böyle bir şey ekleyin:

-A RH-Firewall-1-INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 22 -j DROP

Eklediğiniz yerde zor bit. --dport 22Söz konusu dosyada bir satırın konuşulduğunu görürseniz , bunu yukarıdaki üç satırla değiştirin. Aksi takdirde, muhtemelen mevcut ilk satırın sonuna kadar gitmelidir -j ACCEPT. Genel olarak, iptables'ın çalışma biçimine biraz aşina olmanız gerekir ; bu noktada doğru ekleme noktası açıktır.

Bu dosyayı kaydedin, ardından service iptables restartgüvenlik duvarı kurallarını yeniden yüklemeyi söyleyin . Düzenlemeleri yağla işaretlemeniz durumunda, konsola giriş yaparken bunu yaptığınızdan emin olun! SSH üzerinden oturum açarken kendinizi makinenizden kilitlemek istemezsiniz.

Yukarıdaki komutlara benzerlik tesadüf değildir. Bu dosyanın çoğu iptableskomutun argümanlarından oluşur . Yukarıdakilere göre farklılıklar, iptableskomutun bırakılması ve INPUTzincir adının RHEL'e özel özel zincir haline gelmesidir RH-Firewall-1-INPUT. (Dosyayı daha ayrıntılı olarak incelemeye özen gösterirseniz, dosyanın daha önce INPUTzinciri yeniden adlandırdıkları dosyayı daha önce görürsünüz . Neden? Söyleyemedim.)


4

Linux altında güvenlik duvarı kurulumu için düşük düzeyli araç iptables . Ayrıca daha yüksek seviye araçlar da mevcuttur. Scientific Linux'un önerilen bir güvenlik duvarı aracı olup olmadığını bilmiyorum.

Göre bu web sayfasından (ben 6.1 için geçerlidir olmadığı henüz doğrulanmamıştır) service iptables savegüncel güvenlik duvarı kurallarını kazandıracak ve bu kaydedilen kurallar önyükleme sırasında yüklenir. Bu nedenle, iptableskomutları (veya başka bir yolu) kullanarak istediğiniz kuralları ayarlamanız ve ardından service iptables savekurulumunuzu kalıcı hale getirmek için çalıştırmanız gerekir.

Scott Pack'in blog yazısı , genellikle gerekli olmayan ve bir saldırının parçası olma riski yüksek olan “oddball” paketlerini bırakmak için bir başlangıçtır. Bunun ötesinde, gelen tüm bağlantı noktalarını kapatmak ve yalnızca ihtiyacınız olan bağlantı noktalarını açmak istersiniz. Bunun gibi bir şey:

# Accept everything on the loopback interface
iptables -A INPUT -i lo -j ACCEPT
# Accept ICMP
iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
# Drop oddball packets
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -f -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
# Accept packets that are part of established connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Accept selected incoming connections, e.g. ssh from 10.0.42.x
iptables -A INPUT -p tcp --dport 22 -s 10.0.42.0/24 -j ACCEPT
# Reject incoming connections that aren't explicitly accepted
iptables -A INPUT -j REJECT

1
Gilles, soruyu biraz yanlış okumadın mı? Scientific Linux kutusunun LAN'daki bilgisayarlardan biri olduğunu, ancak güvenlik duvarından olmadığını anlıyorum.
rozcietrzewiacz

@Gilles Evet, kutu LAN üzerindeki bilgisayarlardan biridir.
hpy

@rozcietrzewiacz Güvenlik duvarının sunucuyla aynı makinede olduğunu anlıyorum. Sorunun bir dereceye kadar belirsiz olduğunu kabul ediyorum, ancak penyuan sadece bir makinenin işletim sisteminden bahsettiğinden, o makinede her şeyin olduğunu sanıyorum. Aksi takdirde bu bir unix sorusu olmaz, bu eksik bir ağ yöneticisi sorusudur.
Gilles 'SO- kötü olmayı bırak

1

Bunu yapmanın tercih edilen yolu iptables. Bu, diğerleri tarafından yeterince kapsanmış gibi görünüyor, bu yüzden, sadece bütünlük için, çoğu Linux dağıtımında birçok cin için mevcut olan alternatif bir erişim kontrol yöntemine dikkat çekeceğim. Bu erişim kontrol yöntemi libwrapkütüphane tarafından sağlanır .

En sevdiğiniz arka plan programının libwrapdestek olup olmadığını kontrol etmek için aşağıdakileri çalıştırmayı deneyin:

ldd `which sshd` | grep libwrap

Boş olmayan bir sonuç alırsanız, örneğin

libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f84e7b0e000)

o zaman kesinlikle gitmek iyidir.

sshdDaemon'unuzun libwrapdesteğe sahip olduğu neredeyse kesindir ve bu nedenle erişim kontrolü için /etc/hosts.allowve /etc/hosts.denydosyalarına danışmalıdır . Yerel LAN ağı olduğu varsayılırsa 192.168.100.0/24, şunları yapabilirsiniz inkar erişimi sshdtüm müşterilerine hariç senin içine aşağıdakileri koyarak yerel ana bilgisayarda veya yerel LAN üzerindeki bu /etc/hosts.denydosyada:

sshd: ALL EXCEPT 127.0.0.0/255.0.0.0, [::1]/128, 192.168.100.0/255.255.255.0

Not Bu yöntem değildir aslında açmak veya kapatmak limanlar, haddi zatında. Basitçe, bu erişim kontrolü yöntemini kullanan armağanlara, verilen kalıplarla eşleşen istemcilerden bağlantı denemelerini kabul edip etmemeyi söyler.

Tüm ayrıntılar için ile başlayan man sayfalarına göz atın hosts_access(5).


1

Kendi linux tabanlı güvenlik duvarınız varsa iptables, diğerleri burada açıklandığı gibi en iyi kurulumu yaparsınız . Değilse ve güvenlik duvarı yönlendiricinizse, bağlantı noktası yönlendirmeyi açıkça etkinleştirmediğiniz sürece (muhtemelen bu soruya yanıt olarak açıkladığım gibi) büyük olasılıkla varsayılan yapılandırma dışarıdan erişimi engeller .

Bunun üzerinde ek güvenlik için, LAN içi bağlantılar için ayrı bir alt ağ kullanabilirsiniz. Bunu yapmak için, her bilgisayar için yönlendirici tarafından değil, yalnızca LAN içinde kullanılacak ikinci bir IP adresi ekleyin. Diyelim ki tüm LAN şimdi 192.168.0.xxxadresleri kullanıyor ve yönlendirici (ağ geçidi, güvenlik duvarı) 192.168.0.1. Her bilgisayar için ikinci bir adres ekleyin - örneğin:

ifconfig eth0:0 192.168.5.1/24

Ardından, sshdyapılandırmayı yalnızca bu adresi kullanacak şekilde düzenleyin (bağlantıların açılmasına izin vermeyecek şekilde 192.168.0.xxx) - yeni alt ağınızdan birini düzenleyin /etc/ssh/sshd_configve değiştirin ListenAddress( 192.168.5.1yukarıdaki örnekte). Bu kadar! Ağ geçidini bu alt ağın iletişimini yönlendirecek şekilde yapılandırmazsanız, dıştan ayrılmalıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.