Linux'ta Port Vurma Nasıl Kullanılır (ve Neden Kullanmamalısınız)

Yayınlanan: 2022-01-29
Kapalı bir kapıyı çalan el.
Photographee.eu/Shutterstock

Bağlantı noktası çalma, güvenlik duvarı bağlantı noktalarını kapatarak bir sunucuyu güvence altına almanın bir yoludur - hatta kullanılacağını bildiğiniz bağlantı noktaları. Bu bağlantı noktaları, yalnızca ve yalnızca bağlantı isteği gizli kapıyı sağlıyorsa, istek üzerine açılır.

Port Vurmak Bir “Gizli Tıklama”dır

1920'lerde, yasağın tüm hızıyla sürerken, bir konuşma ortamına girmek istiyorsanız, içeri girmek için gizli kapıyı bilmeniz ve doğru şekilde vurmanız gerekiyordu.

Liman çalma modern bir eşdeğerdir. İnsanların bilgisayarınızdaki hizmetlere erişmesini istiyorsanız, ancak güvenlik duvarınızı internete açmak istemiyorsanız, bağlantı noktası çalmayı kullanabilirsiniz. Güvenlik duvarınızda gelen bağlantılara izin veren bağlantı noktalarını kapatmanıza ve önceden ayarlanmış bir bağlantı denemesi yapıldığında bunların otomatik olarak açılmasına olanak tanır. Bağlantı girişimlerinin sırası gizli vuruş görevi görür. Başka bir gizli vuruş, limanı kapatır.

Liman çalma bir yeniliktir, ancak bunun bir belirsizlik yoluyla güvenlik örneği olduğunu bilmek önemlidir ve bu kavram temelde kusurludur. Bir sisteme nasıl erişileceğinin sırrı güvenlidir çünkü sadece belirli bir gruptakiler bunu bilir. Ancak bir kez bu sır açığa çıktığı, gözlemlendiği, tahmin edildiği veya üzerinde çalışıldığı için güvenliğiniz geçersizdir. Sunucunuzu, bir SSH sunucusu için anahtar tabanlı oturum açma gerektirme gibi daha güçlü yollarla güvence altına almanız daha iyi olur.

Reklamcılık

Siber güvenliğe yönelik en sağlam yaklaşımlar çok katmanlıdır, bu nedenle belki de bağlantı noktası çalma bu katmanlardan biri olmalıdır. Ne kadar çok katman, o kadar iyi, değil mi? Ancak, bağlantı noktası çalmanın düzgün şekilde sağlamlaştırılmış, güvenli bir sisteme (eğer bir şey varsa) fazla bir şey eklemediğini iddia edebilirsiniz.

Siber güvenlik, geniş ve karmaşık bir konudur, ancak tek savunma biçiminiz olarak bağlantı noktası çalmayı kullanmamalısınız.

İLGİLİ: Linux Kabuğundan SSH Anahtarları Nasıl Oluşturulur ve Yüklenir

Knockd yükleme

Bağlantı noktası çalmayı göstermek için, SSH bağlantı noktası olan bağlantı noktası 22'yi kontrol etmek için kullanacağız. Knockd adlı bir araç kullanacağız. Ubuntu veya başka bir Debian tabanlı dağıtım kullanıyorsanız, bu paketi sisteminize yüklemek için apt-get kullanın. Diğer Linux dağıtımlarında bunun yerine Linux dağıtımınızın paket yönetim aracını kullanın.

Aşağıdakileri yazın:

 sudo apt-get install knockd 

Muhtemelen sisteminizde iptables güvenlik duvarı zaten kuruludur, ancak iptables-persistent paketini kurmanız gerekebilir. Kaydedilmiş iptable kurallarının otomatik yüklenmesini yönetir.

Yüklemek için aşağıdakini yazın:

 sudo apt-get install iptables-kalıcı 

IPV4 yapılandırma ekranı göründüğünde, “Evet” seçeneğini kabul etmek için boşluk çubuğuna basın.

iptables-persistent IPV4 ekranında "Evet" seçeneğini kabul etmek için boşluk çubuğuna basın.

“Evet” seçeneğini kabul etmek ve devam etmek için IPv6 yapılandırma ekranında boşluk çubuğuna tekrar basın.

IPv6 yapılandırma ekranında "Evet" seçeneğini kabul etmek için boşluk çubuğuna basın.

Reklamcılık

Aşağıdaki komut iptables kurulan ve devam eden bağlantıların devam etmesine izin vermesini söyler. Şimdi SSH portunu kapatmak için başka bir komut vereceğiz.

Bu komutu verdiğimizde birisi SSH ile bağlıysa, onların kesilmesini istemiyoruz:

 sudo iptables -A INPUT -m conntrack --ctstate KURULDU, İLGİLİ -j KABUL 

Bu komut, güvenlik duvarına şöyle bir kural ekler:

  • -A : Kuralı güvenlik duvarı kuralları tablosuna ekleyin. Yani en alta ekleyin.
  • INPUT : Gelen bağlantılarla ilgili bir kuraldır.
  • -m conntrack : Güvenlik duvarı kuralları, kuraldaki ölçütlerle eşleşen ağ trafiğine (paketlere) göre hareket eder. -m parametresi iptables fazladan paket eşleştirme modülleri kullanmasına neden olur; bu durumda, conntrack adı verilen, çekirdeğin ağ bağlantısı izleme yetenekleriyle çalışır.
  • –cstate ESTABLISHED,RELATED : Bu, kuralın uygulanacağı bağlantı türünü, yani KURULAN ve İLGİLİ bağlantıları belirtir. Kurulan bir bağlantı, halihazırda devam etmekte olan bir bağlantıdır. İlişkili bir bağlantı, kurulmuş bir bağlantının eylemi nedeniyle yapılan bağlantıdır. Belki bağlanan biri bir dosya indirmek istiyor; bu, ana bilgisayar tarafından başlatılan yeni bir bağlantı üzerinden gerçekleşebilir.
  • -j ACCEPT : Trafik kuralla eşleşiyorsa, güvenlik duvarındaki ACCEPT hedefine atlayın. Başka bir deyişle, trafik kabul edilir ve güvenlik duvarından geçmesine izin verilir.

Şimdi portu kapatmak için komut verebiliriz:

 sudo iptables -A INPUT -p tcp --dport 22 -j REJECT 

Bu komut, güvenlik duvarına şöyle bir kural ekler:

  • -A : Kuralı güvenlik duvarı kuralları tablosuna ekleyin, yani en alta ekleyin.
  • INPUT : Bu kural gelen bağlantılarla ilgilidir.
  • -p tcp : Bu kural, İletim Denetimi Protokolünü kullanan trafik için geçerlidir.
  • –dport 22 : Bu kural, özellikle 22 numaralı bağlantı noktasını (SSH bağlantı noktası) hedefleyen TCP trafiği için geçerlidir.
  • -j REJECT : Trafik kuralla eşleşiyorsa, güvenlik duvarındaki REJECT hedefine atlayın. Bu nedenle, trafik reddedilirse, güvenlik duvarından izin verilmez.

netfilter-persistent arka plan programını başlatmalıyız. Bunu şu komutla yapabiliriz:

 sudo systemctl netfilter-kalıcı başlat 

netfilter-persistent uygulamasının bir kaydetme ve yeniden yükleme döngüsünden geçmesini istiyoruz, bu nedenle iptable kurallarını yükler ve kontrol eder.

Aşağıdaki komutları yazın:

 sudo netfilter-kalıcı kaydetme 

 sudo netfilter-kalıcı yeniden yükleme 

Reklamcılık

Artık yardımcı programları yüklediniz ve SSH bağlantı noktası kapatıldı (umarım, kimsenin bağlantısını kesmeden). Şimdi, gizli vuruşu yapılandırma zamanı.

Knockd'yi yapılandırma

knockd yapılandırmak için düzenlediğiniz iki dosya vardır. İlki, aşağıdaki knockd yapılandırma dosyasıdır:

 sudo gedit /etc/knockd.conf 

knockd gedit dosyası yüklenmiş olarak açılır.

gedit düzenleyicideki knockd yapılandırma dosyası.

Bu dosyayı ihtiyaçlarımıza göre düzenleyeceğiz. İlgilendiğimiz bölümler “openSSH” ve “closeSSH”. Her bölümde aşağıdaki dört giriş vardır:

  • sıra : 22 numaralı bağlantı noktasını açmak veya kapatmak için birinin erişmesi gereken bağlantı noktalarının sırası. Açmak için varsayılan bağlantı noktaları 7000, 8000 ve 9000 ve kapatmak için 9000, 8000 ve 7000'dir. Bunları değiştirebilir veya listeye daha fazla bağlantı noktası ekleyebilirsiniz. Amaçlarımız için varsayılanlara bağlı kalacağız.
  • seq_timeout : Açılıp kapanmasını tetiklemek için birinin bağlantı noktalarına erişmesi gereken süre.
  • komut : Aç veya kapat eylemi tetiklendiğinde iptables güvenlik duvarına gönderilen komut. Bu komutlar ya güvenlik duvarına bir kural ekler (portu açmak için) ya da çıkarır (portu kapatmak için).
  • tcpflags : Her bağlantı noktasının gizli sırada alması gereken paket türü. Bir SYN (eşzamanlama) paketi, üç yönlü el sıkışma olarak adlandırılan bir TCP bağlantı isteğindeki ilk pakettir.

"openSSH" bölümü, "22 numaralı bağlantı noktasını açma komutunun güvenlik duvarına gönderilmesi için 7000, 8000 ve 9000 numaralı bağlantı noktalarına bu sırayla ve 5 saniye içinde bir TCP bağlantı isteği yapılmalıdır" şeklinde okunabilir.

Reklamcılık

"closeSSH" bölümü, "22 numaralı bağlantı noktasını kapatma komutunun güvenlik duvarına gönderilmesi için 9000, 8000 ve 7000 numaralı bağlantı noktalarına bu sırayla ve 5 saniye içinde bir TCP bağlantı isteği yapılmalıdır" şeklinde okunabilir.

Güvenlik Duvarı Kuralları

openSSH ve closeSSH bölümlerindeki "komut" girişleri bir parametre dışında aynı kalır. Bu şekilde oluşurlar:

  • -A : Kuralı güvenlik duvarı kuralları listesinin en altına ekleyin (openSSH komutu için).
  • -D : Güvenlik duvarı kuralları listesinden komutu silin (closeSSH komutu için).
  • GİRİŞ : Bu kural, gelen ağ trafiği ile ilgilidir.
  • -s %IP% : Bağlantı talep eden cihazın IP adresi.
  • -p : Ağ protokolü; bu durumda, bu TCP'dir.
  • –dport : Hedef bağlantı noktası; Örneğimizde, 22 numaralı bağlantı noktası.
  • -j ACCEPT : Güvenlik duvarı içindeki kabul hedefine atlar. Başka bir deyişle, paketin, üzerinde hareket etmeden kuralların geri kalanını geçmesine izin verin.

Çalınan Yapılandırma Dosyası Düzenlemeleri

Dosyada yapacağımız düzenlemeler aşağıda kırmızı ile vurgulanmıştır:

Düzenlemelerin vurgulandığı gedit düzenleyicisindeki knockd yapılandırma dosyası.

“seq_timeout”u 15 saniyeye uzatıyoruz. Bu cömert bir şey, ancak birisi bağlantı isteklerini manuel olarak tetikliyorsa, bu kadar zamana ihtiyacı olabilir.

“openSSH” bölümünde komuttaki -A (ekle) seçeneğini -I (insert) olarak değiştiriyoruz. Bu komut, güvenlik duvarı kural listesinin en üstüne yeni bir güvenlik duvarı kuralı ekler. -A seçeneğinden ayrılırsanız, güvenlik duvarı kural listesini ekler ve en alta yerleştirir .

Gelen trafik, yukarıdan aşağıya listedeki her bir güvenlik duvarı kuralına göre test edilir. 22 numaralı bağlantı noktasını kapatan bir kuralımız zaten var. Dolayısıyla, gelen trafik, trafiğe izin veren kuralı görmeden önce bu kurala göre test edilirse bağlantı reddedilir; önce bu yeni kuralı görürse bağlantıya izin verilir.

Kapat komutu, openSSH tarafından eklenen kuralı güvenlik duvarı kurallarından kaldırır. SSH trafiği bir kez daha önceden var olan “port 22 kapalı” kuralı tarafından işlenir.

Bu düzenlemeleri yaptıktan sonra yapılandırma dosyasını kaydedin.

İLGİLİ: Gedit ile Linux'ta Metin Dosyaları Grafiksel Olarak Nasıl Düzenlenir

Knockd Kontrol Dosyası Düzenlemeleri

knockd kontrol dosyası tamamen daha basittir. Yine de dalmadan ve bunu düzenlemeden önce, ağ bağlantımızın dahili adını bilmemiz gerekir; bulmak için şu komutu yazın:

 ip adresi 

Reklamcılık

Bu makinenin bu makaleyi araştırmak için kullandığı bağlantının adı enp0s3 . Bağlantınızın adını not edin.

Aşağıdaki komut, knockd kontrol dosyasını düzenler:

 sudo gedit /etc/default/knockd 

İşte gedit knockd dosyası.

Gedit'teki knockd kontrol dosyası.

Yapmamız gereken birkaç düzenleme kırmızıyla vurgulanmıştır:

Düzenlemeler vurgulanmış olarak gedit'te çalınan kontrol dosyası.

“START_KNOCKD=” girişini 0'dan 1'e değiştirdik.

Ayrıca “KNOCKD_OPTS=” girişinin başlangıcındaki karma # 'yi kaldırdık ve “eth1” yerine ağ bağlantımızın adı olan enp0s3 . Elbette ağ bağlantınız eth1 ise bunu değiştirmezsiniz.

Kanıt, puding içerisindedir

Bunun işe yarayıp yaramadığını görmenin zamanı geldi. knockd arka planını şu komutla başlatacağız:

 sudo systemctrl vuruşu başlat 

Reklamcılık

Şimdi başka bir makineye atlayıp bağlanmayı deneyeceğiz. knockd aracını o bilgisayara da yükledik, çünkü bağlantı noktası çalmayı ayarlamak istediğimiz için değil, knockd paketi knock adlı başka bir araç sağladığı için. Bu makineyi gizli sıramızda ateş etmek ve bizim için kapıyı çalmak için kullanacağız.

Bağlantı isteklerinizin gizli sırasını, 192.168.4.24 IP adresiyle bağlantı noktası çalan ana bilgisayardaki bağlantı noktalarına göndermek için aşağıdaki komutu kullanın:

 vur 192.168.4.24 7000 8000 9000 -d 500

Bu, knock bilgisayarı 192.168.4.24 IP adresinde hedeflemesini ve 7000, 8000 ve 9000 numaralı bağlantı noktalarına, aralarında 500 milisaniyelik bir -d (gecikme) ile bir bağlantı isteği başlatmasını söyler.

"dave" adlı bir kullanıcı daha sonra 192.168.4.24'e bir SSH isteğinde bulunur:

 ssh [email protected]

Bağlantısı kabul edilir, şifresini girer ve uzak oturumu başlar. Komut istemi, dave@nostromo dave@howtogeek . Uzak bilgisayardan çıkmak için şunu yazar:

 çıkış

Komut istemi yerel bilgisayarına döner. Bir kez daha knock kullanır ve bu sefer uzak bilgisayardaki SSH portunu kapatmak için portları ters sırada hedefler.

 vur 192.168.4.24 9000 8000 7000 -d 500 

Reklamcılık

Kuşkusuz, bu özellikle verimli bir uzak oturum değildi, ancak bağlantı noktası çalma yoluyla bağlantı noktasının açılıp kapanmasını gösterir ve tek bir ekran görüntüsüne sığar.

Peki, bu diğer taraftan nasıl görünüyordu? Bağlantı noktası çalma ana bilgisayarındaki sistem yöneticisi, sistem günlüğüne gelen yeni girişleri görüntülemek için aşağıdaki komutu kullanır:

 tail -f /var/log/syslog 

  • Üç openSSH girişi görüyorsunuz. Bunlar, her bağlantı noktası uzaktan vuruntu yardımcı programı tarafından hedeflendiğinden yükseltilir.
  • Tetikleme dizisinin üç aşaması da karşılandığında, "AÇIK SUSAM" yazan bir giriş günlüğe kaydedilir.
  • Kuralı iptables kuralları listesine ekleme komutu gönderilir. Doğru gizli vuruşu (192.168.4.23) veren bilgisayarın belirli IP adresinden 22 numaralı bağlantı noktasındaki SSH aracılığıyla erişime izin verir.
  • Kullanıcı "dave" yalnızca birkaç saniye bağlanır ve ardından bağlantıyı keser.
  • Üç adet closeSSH girişi görüyorsunuz. Bunlar, her bağlantı noktası uzaktan vuruntu yardımcı programı tarafından hedeflendiğinde yükseltilir; bağlantı noktası vuran ana bilgisayara 22 numaralı bağlantı noktasını kapatmasını söyler.
  • Her üç aşama da tetiklendikten sonra tekrar “AÇIK SUSAM” mesajını alıyoruz. Komut, kuralı kaldırmak için güvenlik duvarına gönderilir. (Limanı kapatırken neden “SUSAM KAPAT” değil? Kim bilir?)

Şimdi iptables kuralları listesinde 22 numaralı bağlantı noktasıyla ilgili tek kural, o bağlantı noktasını kapatmak için başta yazdığımız kuraldır. Böylece, 22 numaralı bağlantı noktası şimdi tekrar kapatılmıştır.

Kafasına Vur

Bu, kapı çalmanın salon numarası. Bunu bir oyalama olarak görün ve gerçek dünyada yapmayın. Veya gerekiyorsa, tek güvenlik biçiminiz olarak ona güvenmeyin.