Ubuntu’daki üç bağlantı noktasından hariç tümünü nasıl engelleyebilirim?


22

1962, 999, 12020 dışındaki tüm bağlantı noktalarını nasıl engelleyebilirim?

SSH için bir bağlantı noktası ve bir tür komut dosyası için diğer iki bağlantı noktası. Yani, bu limanlarda çıkışa izin vermek gerekli, değil mi?

Benim iptables:

# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*mangle
:PREROUTING ACCEPT [643521:136954367]
:INPUT ACCEPT [643521:136954367]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [645723:99904505]
:POSTROUTING ACCEPT [645723:99904505]
COMMIT
# Completed on Sat Feb 25 17:25:21 2012
# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*filter
:INPUT ACCEPT [643490:136950781]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [645723:99904505]
-A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 999 -j ACCEPT 
COMMIT
# Completed on Sat Feb 25 17:25:21 2012
# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*nat
:PREROUTING ACCEPT [5673:734891]
:POSTROUTING ACCEPT [2816:179474]
:OUTPUT ACCEPT [2816:179474]
COMMIT
# Completed on Sat Feb 25 17:25:21 2012

Üzgünüm, ama bu konu söz konusu olduğunda ben gerçekten yeni bir acemiyim ve sadece sunucumu daha güvenli hale getirmek istiyorum.


Neden UFW kullanmıyorsunuz?
Soviero

Yanıtlar:


25

Önceden tanımlanmış olandan emin olmak için her zaman akın etmelisin… hiçbir şey

iptables -F

Ardından, sonuna ulaşılmış ve kural eşleşmediyse, INPUT zincirinin varsayılan politikasını DROP olarak ayarlayın:

iptables -P INPUT DROP

Geri döngü etkilenmediğinden emin olmak için eklemelisiniz

iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

kurduğunuz bağlantılar için lo-if ve her gelen trafikteki tüm trafiğe izin vermek. Bu sizin hizmetler için gereken her kuralı ekledikten sonra (! Başka bitti İhtiyacınız olduğunda açık ssh unutmayın) :

iptables -A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 999 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 12020 -j ACCEPT 

Kendimi ve başkalarını yanlışlıkla güvenceye delik açmaktan korumak için yaptığım küçük bir numara:

iptables -A INPUT -j DROP

Bu satır INPUT zinciri için her şeye uyuyor ve politika hiçbir şey alamamalı. Bunun avantajı, kurallarınızı belirledikten sonra bir KABUL kuralı eklemeniz durumunda bile, her şey daha önce bırakıldığı için asla kontrol edilmeyecektir. bu yüzden her şeyi tek bir yerde tutmanız gerekir.

Sorunuz için her şey özetle şöyle görünür:

iptables -F
iptables -P INPUT DROP
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 999 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 12020 -j ACCEPT 
iptables -A INPUT -j DROP

1
Sadece açıklığa kavuşturmak için: -Ppolitikaya zincir kurar. Aslında bir kural eklemek değildir. Zincirin politikası, zincirin sonuna gelindiğinde, paket üzerinde gerçekleştirilecek olan eylemi gösterir. Bu nedenle, bir politika belirlemeden önce kurallarınızı eklemek akıllıca olur DROP.
Belmin Fernandez

Doğru hatırlıyorsam, normalde politikayı nereye koyacağın önemli değil… belki de cevabımı biraz düzenlemeliyim.
Mose

3
bir not: ssh ile güvenlik duvarı kurarken varsayılan ilkeyi reddetme ve temizleme konusunda çok dikkatli olun. Kendini kilitleyeceksin. Evet, bunu yaptım. :-) Şimdi genelde bu yüzden son kuralı yapıyorum iptables -A INPUT -j DROP.
Sirex

Ssh
uyarımı

@Mose: Genel olarak önemli değil, doğru. Bunu vurgulamaya çalışıyordum. Ancak heh'den daha önce de bahsedildiği gibi kilitli kalmanıza neden olabilir.
Belmin Fernandez,

20

Tıpkı senin gibi bir aceminin cevabı :-) Ubuntu sunucumu da güvenceye almam gerekiyordu, iptables'ı öğrenmek başaramadığım bir acıydı. UFW (Karmaşık Güvenlik Duvarı), güvenlik duvarı yapılandırmasını mümkün olduğu kadar kolaylaştıran bir programdır.

  • ufw yükleyin:

    sudo apt-get install ufw
    
  • hemen devre dışı bırak (kendi SSH giriş bilgilerim kilitlendiği için kurtarma-önyüklemem gerekiyordu):

    sudo ufw disable
    
  • "deny" yi varsayılan kural olarak ayarlayın (bu, tüm bağlantı noktalarını engeller):

    sudo ufw default deny
    
  • İhtiyacınız olan portlara izin verin:

    sudo ufw allow to 1962
    sudo ufw allow to 999
    sudo ufw allow to 12020
    
    sudo ufw allow from 1962
    sudo ufw allow from 999
    sudo ufw allow from 12020
    
  • Yukarıdaki kuralların ssh bağlantınızı bozmadığından eminseniz, ufw'yi etkinleştirin:

    sudo ufw enable
    

Dokümanlar iyi yazılmış ve daha fazla örnek sunmaktadır: https://help.ubuntu.com/community/UFW


1
Güvenlik duvarı yapılandırmalarıyla çalışırken, güvenlik duvarını tekrar devre dışı bırakan bir cron işi oluşturmak iyi bir fikir olabilir. Sadece kilitli kalmanız durumunda.
pymkin

Bunun ufw 0.35 ile çalışmadığını, ERROR: Bad destination addressve gibi hataların atıldığını unutmayınERROR: Bad source address
Dave

Ve belirli bir arabirim için bir bağlantı noktası dışındaki tüm bağlantı noktalarına nasıl izin verilir? Varsayılan reddetme kuralını kullanıyorum ve VPN kullanırken DNS sızıntısını önlemek için Ethernet bağlantı noktasında 53 numaralı DNS bağlantı noktasını engellemek istiyorum. Şu anda, çok uygun olmayan özel IP aralıkları için kullanmak istediğim tüm bağlantı noktalarına izin vermek zorundayım.
baptx
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.