Güvenli Kabuk SSH Kılavuzu

Maceralarına 1997'de başlayan, güvenlikleriyle öne çıkan çok çeşitli araçlar sunan, çok kapsamlı olan bu muhteşem protokol hakkında öğretici, onu hem istemci hem de sunucu düzeyinde en önemli şeyi kapsamaya çalışan birkaç girişe ayıracağım.

Güvenli Kabuk Protokolü nedir?Secure Shell veya SSH, iki bilgisayar arasında güvenli bir kanal üzerinden veri alışverişini sağlayan bir ağ protokolüdür. SSH, iletişim ortamında dolaşan bilgileri okunamaz hale getiren şifreleme teknikleri kullanır ve hiçbir üçüncü kişi bağlantının kullanıcı adını ve şifresini veya tüm oturum boyunca yazılanları keşfedemez. SSH, uzak bilgisayarın kimliğini doğrulamak ve gerekirse kullanıcının kimliğini doğrulamasına izin vermek için ortak anahtar şifrelemesini kullanır.

SSH genellikle uzak bir makinede komutları yürütebileceğiniz bir oturum başlatmak için kullanılır, ancak tünel oluşturmaya, TCP bağlantı noktalarının ve X11 bağlantılarının rastgele iletilmesine de izin verir; Dosya aktarımları, ilişkili SFTP veya SCP protokolleri kullanılarak da gerçekleştirilebilir.

Büyük çekiciliğinin, bilgi şifrelemesi olmayan, erişim kimlik bilgileri de dahil olmak üzere verilerden ödün vermeyen eski TELNET protokolünün yerini almaya fazlasıyla yetecek özelliği olduğunu görebiliriz.

NS SSH sunucusu, varsayılan olarak 22 numaralı TCP bağlantı noktasını sunar.Bir SSH istemcisi genellikle uzak bağlantıları kabul eden bir sshd sunucusuna bağlantı kurmak için kullanılır. Her ikisi de Mac, Linux, Solaris ve OpenVMS dahil olmak üzere çoğu modern işletim sisteminde yaygın olarak bulunur.

Sunucu sürümü için Windows desteğinin bu yıl resmi olarak piyasaya sürülmesi beklenirken, müşteri düzeyinde diğerlerine kıyasla PuTTY'yi öne çıkaran çok çeşitli seçenekler sunuyor.

Putty'yi kullanmayı öğrenin

OpenSSHOpenSSH (Open Secure Shell), SSH protokolünü kullanarak bir ağ üzerinden şifreli iletişime izin veren bir dizi uygulamadır. SSH protokolüne ücretsiz ve açık bir alternatif olarak oluşturulmuştur, Linux altında en çok kullanılanıdır ve girişler boyunca kullanacağımız olacaktır.

1. Secure Shell SSH'yi yükleyin


Hemen hemen tüm dağıtımlarda, istemci sürümü önceden yüklenmiştir, sunucu sürümü ise depo tarafından kullanılabilir, kurulumu çok basit olmalıdır.

Debian, Ubuntu, Linux Mint ve Türevleri

 sudo apt-get install openssh-server

Centos, Rhel, Fedora

 sudo yum openssh sunucusunu kurun

Arch-Linux

 pacman -Syu opensh

Aşağıdakilerle çalıştığını doğrularız:

 curl localhost: 22
Doğru çalışması durumunda geri dönmelidir:

[renk = # 696969] [/Renk]

Sunucuya bağlanıyor
İstemciyi kullanarak, localhost kullanarak dahili olarak bağlanmak için her iki sürümümüz olsa bile uzak olabilen sunucuya bağlanabiliriz.

Bağlanmanın en temel yolu şudur:

 ssh kullanıcısı @ ana bilgisayar adresi
Dahili olarak bağlanması durumunda şöyle olacaktır:
 ssh kullanıcısı @ localhost
Bağlanırken çok çeşitli seçeneklerimiz var, çok kullanışlı olanları açıklayacağım, tüm seçeneklerinizi şu şekilde listeleyebilirsiniz:
 adam ssh
İşte onlara gösteriyoruz:

Adam SSH seçenekleri
-CBir mobil ağda olması durumunda bant genişliği veya veri tasarrufu sağlayan veri sıkıştırması isteyin.

-lBağlanacağımız kullanıcıyı belirtin.

-VEStandart hatanın sapacağı bir günlük dosyası oluşturun.

-FOlağandışı seçeneklere sahip sunucular için yararlı olan başka bir yapılandırma dosyası seçiyoruz.

-GBağlantı noktası tünelleme için gereklidir.

-benAlternatif bir özel anahtar için kullanacağımız klasörü seçiyoruz.

-KGSSAPI kimlik bilgilerini kullanırken etkinleştirin.

-nBu şekilde X11 ile birlikte kullanıldığında, uygulama tarafından oluşturulan tüm günlükler / dev / null'a yönlendirilir.

-veyaServerAliveInterval 30 gibi daha gelişmiş seçenekleri kullanmak için gereklidir.

-PAna bilgisayara bağlanmak için 22 dışında bir bağlantı noktası seçin.

-vBağlantı kurmak için gerekli tüm adımları gösterir. -vv -vvv ile daha da fazla bilgi alabilirsiniz.

-XX11 Yönlendirmeyi kullanmak istiyorsak gereklidir.

-YGüvenli X11 Yönlendirmeyi etkinleştirir.

AWS üzerindeki instance’ımızın 8022 portunu kullanarak /home/jcarrillo/keys-aws klasörümüzde bulunan farklı bir private key kullanarak jcarrillo kullanıcısı ile test.solvetic.com sunucusuna bağlanacağız.

 Örnek → ssh -C -i “~ / keys-aws /” -p 8022 -l jcarrillo test.solvetic.com
Gördüğümüz gibi, orta veya Profesyonel düzeydeki herhangi bir Sysadmin için gerekli işlevlerini yerine getirebilmek için daha fazla girişi hak eden kapsamlı ama çok eksiksiz bir araçtır.

Şimdi, istemci-sunucu düzeyinde yapılandırmasına, genel ve özel anahtarlar üretmeye, gerçek durumlarda bağlantı noktası yönlendirmenin kullanımına, X Sunucusunun X11 Yönlendirme yoluyla yeniden yönlendirilmesine, diğerleri arasında scp, sftp, ssh-agent kullanımına geçiyoruz. .

2. SSH sunucusunu güvenli hale getirin


ile devam ediyoruz OpenSSH odaklanmak SSH Sunucumuzun güvenliğini sağlamak, Sunucumuzu tehlikeye atabilecek her türlü Saldırıdan kaçınmak için. Tüm bu yapılandırmalar, benim durumumda herhangi bir metin düzenleyici ile değiştirebileceğimiz / etc / ssh / dizininde bulunan sshd_config dosyasında yapılacaktır. vim:
 sudo vim / etc / ssh / sshd_config
Şimdi onu nasıl değiştireceğimizi görüyoruz.

sshd_config'i değiştirin
İçeride, aşağıdakilere dayalı tipik bir yapılandırma dosyası göreceğiz. "Değer seçeneği" Seçeneklerden herhangi biri varsayılan olarak bulunmazsa, satırı tamamen yerleştirmeliyiz, diğer durumlarda sadece Hayır'dan Evet'e 0'dan 1'e değiştirmek veya bir satırın yorumunu kaldırmak olacaktır.

Bağlantı Noktası 22'yi Değiştir
Gereklidir varsayılan bağlantı noktasını rastgele bir bağlantı noktasıyla değiştirin birçok komut dosyası bu bağlantı noktasına saldırmak üzere yapılandırılmıştır, bunu 1000 ila 23000 aralığında bağlantı noktasının başka bir hizmet tarafından kullanılmamasını sağlamak.

2222, 8022 veya 1022 gibi bağlantı noktalarını da kullanmamalıyız, bunlar 22 kadar yaygındır ve birçok komut dosyası bunlara saldırmak üzere yapılandırılmıştır.

2345 numaralı bağlantı noktası

Eğer sahipsek SELINUX etkinleştirildiğinde, dışarıdan yeni bağlantı noktasına erişime izin vermek için ek bir komut kullanmalıyız.

Semanage bağlantı noktası -a -t ssh_port_t -p tcp 2345 #Güvenlik için bağlantı noktası 22'yi değiştirme

Varsayılan Protokol 2'yi kullan
1'in birçok güvenlik açığı olduğundan, tüm bağlantılarımızın Protokol 2 kapsamında yapıldığından emin olmalıyız.

Protokol 2

Kimlik bilgilerini girme zamanı
Arama bölümü "Kimlik doğrulama". İlk iki seçeneğiniz de önemlidir. Birincisi, uzak kullanıcının makinenizde oturum açması gereken saniye sayısıdır. Bu değeri birkaç saniyeye ayarlayın, hesabı ve şifreyi biliyorsak oturum açmamız uzun sürmez.

Bu şekilde, o zamandan yararlanan belirli komut dosyalarından kaçınırız. Güvenlik açısından tipik değer 30'dur, ancak daha da az olabilir.

GirişGraceTime 30

Kök Erişimini Devre Dışı Bırak
Bu Bir saldırının kurbanı olmak en önemli seçenektir, 3 şeye ihtiyaçları var:

  • kullanıcı
  • Liman
  • Parola

Kökü devre dışı bırakırsak, kök tüm sistemlerde ortak bir kullanıcı olduğu için zaten bir tane vardır. Buna ek olarak, bu kullanıcı aşağıdakilere sahip olarak hasara yol açabilir. tüm izinler etkin.

PermitRootGiriş no

Kontrollü Erişimi Etkinleştir
Hangi kullanıcının SSH üzerinden giriş yapabileceğini kontrol edebilir ve hatta sadece belirli bir IP'den bağlanmak için bir madde koyabiliriz. Bu, AWS'nin bizi bulut sunucularınıza bağlamak için sunduğu şeye benzer.

AllowUsers [email protected]

Yalnızca uzaktan erişime ihtiyaç duyan kullanıcılara erişime izin vermek ve mümkünse bunları bilinen bir IP ile sınırlamak önemlidir.

Başarısız denemelerin sayısını yapılandırın
Parolayı yanlış koyarsak, sunucu bize tekrar girmemiz için birkaç girişimde bulunur, bu sınırlı olmalıdır veya kaba kuvvet komut dosyasının kurbanı olabilirsiniz, 2 veya 3 kez yerleştirebiliriz.

MaxAuthDeneme 2

Eşzamanlı Olarak İzin Verilen Bağlantı Sayısı
Bu, sunucuyu nasıl kullandığınıza bağlı olarak değişebilir, ancak ideal olan onu kontrol etmektir, sadece SSH tarafından izin verilen toplam kullanıcı sayısını ekleyin.

MaxStartups X

Dosyamızdaki tüm değişiklikleri yaptıktan sonra sshd hizmetimizi yeniden başlatın, Servis yöneticisine göre değişiklik gösterebilir.

SistemD

 systemctl sshd'yi yeniden başlat

Başlangıç ​​/ Sysinit

 hizmet yeniden başlatma sshd

Tüm bu değişiklikler, bir ekstra güvenlik seviyesi ama aklımızda tutmalıyız:

  • Alfanümerik şifreler kullanın.
  • Kullanmak Genel / Özel Anahtarlarla Kimlik Doğrulama mümkün olduğunda.
  • SELINUX ve Güvenlik Duvarları ile Güvenliği Tamamlayın.
  • Kullanıcıların uzaktan oturum açması gereken erişimi kontrol edin.

SSH Genel / Özel Anahtarlarını Doğrulayın


Şu anda kullan SSH anahtarları Vazgeçilmez bir gerekliliktir, bu kimlik doğrulama Yöneticiler tarafından çeşitli sunucular arasındaki görevleri otomatikleştirmek için yaygın olarak kullanılır ve hatta geliştiriciler tarafından diğerleri arasında GIT, GITHUB, GITLAB gibi SCM'ye erişmek için kullanılır.

Büyük güvenlik ve olasılık sunar Otomatik Görevler oluştur olarak komut dosyası tabanlı Geri veya Değişiklikleri çoğalt aynı anda birden fazla düğüme.

Anahtar kullanırken SSH (genel ve özel), her seferinde parola girmek zorunda kalmadan bir sunucuya veya birden çok sunucuya kolayca bağlanabilirler. Anahtarlarınızı bir parola olmadan yapılandırmak mümkündür, ancak bu pervasızlık olur, eğer biri anahtarınızı alırsa kullanabilir. Anahtarların nasıl oluşturulacağı, dağıtılacağı ve daha fazla Güvenlik elde etmek için ssh-agent'ın nasıl kullanılacağı hakkında konuşacağız.

Parolasız Anahtar Oluşturma
Her şeyden önce, OpenSSH'nin kurulu olduğundan emin olun, gerekli değildir, sunucu sadece istemcidir.

1024 bit güvenlikli bir DSA tipi anahtar oluşturarak başlıyoruz, ancak daha ileri gidebilir ve 4096 limitli bir RSA tipi anahtar oluşturabilirsiniz.

 ssh-keygen -b 1024 -t dsa
~ / .ssh varsayılan anahtarlarını kaydedeceği yeri bize soracaktır.
 Anahtarın kaydedileceği dosyayı girin (/home/test/.ssh/id_dsa)
Daha sonra şimdilik kullanmayacağımız bir cümle isteyecek ve onu boş bırakacağız ve anahtarın yaratıldığını ve bizi yansıttığını söyleyecektir.

Görüntü her zaman farklı olacaktır, rastgele oluşturulur, o zaman .ssh klasörüne gidersek 2 dosyamız olmalıdır.

id_dsa -----> Özel Anahtar (Kimseyle paylaşmayın, TDC'niz gibidir).
id_dsa.pub ----> Bağlanmak için paylaştığımızdır.

Ortak Anahtarı Paylaşın
Açık anahtarı SCM'de veya Chef, Puppet, Jenkins'de paylaşmak istersek, ortak anahtar dosyasını görselleştirir, kopyalayıp karşılık geldiği yere yapıştırırız.

 daha id_dsa.pub SSH-DSS AAAAB3NzaC1kc3MAAACBAN6SEI4Qqzb23pJYRXIAtPmGJHln5hFdthFq43ef + ifR29v2IknXCFwefKK8jorSDiUEY / 1F / yp0xao mjhFQu1jNXOgF0PAZTfivRVFn6Q9FRsyXU9s + fx + L22sV7GkCHPxAAAAFQCyF1Gdh3 xQiW3mf3y4IX654O82SLGl7Vhh5UsvG8r8d8pV6R Cap4xr / J44xDDn 0gFArHmFwAxfQAAAIEAmVYjPYAdQ9DCNWP + + + 03anWgyoZqSPPs23djyVQ756U4VitM0GiIQQ89HCdvTFFpSagnfdVpWh4 Hxo4Y5skKihnPMtB bFNbP / 2SmGdPz1AOmb7tvRrTkj5VLtXeDeB3ulowUKarwiBVVvAvxtxmozoZHOADWqrEPizxIAAACAU2DF1ZGTiJMP OhVB7mlsVhhkq53OxKKJbZqsl9hkOiSxaLUfQBNu6Ae441ekIObqolWNCBIvCO3uQYOozyzNGBhqHE7FVq 1oXguj + + + 2GAQ UGNkee96D2by S7daieIKNmFer2hO / SBxzepMrWAiIUnUsP5irmYspkjGlQxP + YXG = testi @ solvetic 
Bir sunucuya erişmek için paylaşmak istemeniz durumunda, her zaman OpenSSH'de bulunan ssh-copy-id'yi kullanmanızı öneririm ve kullanımı çok kolaydır:
 ssh-copy-id user @ remote-server-ip -i, kullanılacak anahtarın konumunu belirtir.
Bunun gibi başka yollar da var:
 ssh kullanıcısı @ uzak-sunucu-ip \ 'cat >> .ssh / yetkili_keys2' <.ssh / id_dsa.pub
 scp ~ / .ssh / id_dsa.pub kullanıcı @ uzak sunucu-ip
Şu andan itibaren anahtarlar bağlı ve sadece ana bilgisayara girmeniz gerekiyor.
 ssh -l kullanıcı uzak-sunucu-ip
Bu sefer herhangi bir şifre sormayacak ve scriptleri etkileşimsiz kullanabiliyoruz.

Parola Oluştur ve ssh-agent ile ilişkilendir
NS SSH anahtar güvenliği Erişim kartı gibi çalışan özel anahtarımıza dayanmaktadır, ancak birisi anahtarımızı çalarsa, erişimimiz olan tüm yerlere erişebileceklerdir. Ancak bir parola oluştururken fazladan bir seviyeye sahip olabiliriz, sadece anahtar gerekli olmakla kalmaz, aynı zamanda ifademizi tanıtmamıza da gerek yoktur.

Bu sefer bir ifade yapılandırarak daha yüksek güvenlikli bir rsa anahtarı oluşturacağız.

 ssh-keygen -b 4096 -t rsa -C "Parolalı Anahtar" # -C Yorum ekleyin. 
Bir cümle olarak boşluk, nokta ve özel karakterler kullanabiliriz
 örnek ---> Bu benim Fr @ S3 ile yeni anahtarım.
Yeni anahtarı paylaşıyoruz:
 scp ~ / .ssh / id_rsa.pub kullanıcı @ uzak sunucu-ip
Bu sefer anahtara ve Parolaya ihtiyacımız var ama birkaç kez girmek sıkıcı ama ssh-agent ile tamamlayabiliriz, başlatmalıyız.
 ssh aracısı
Anahtarımızı ekliyoruz
 ssh-add /home/user/.ssh/id_rsa için parola girin: # Yapılandırdığımız ifadeyi giriyoruz. 
Artık anahtarımızı kullanan herhangi bir sunucuya, sunucumuza girmek zorunda kalmadan bağlanabiliriz. parola.

İnternet üzerinde farklı noktalarda intranet, istemci ve sunucu dışındaysanız ve otomatikleştirilmiş görevleri kullanmayacaksak, bunun yerine sunucuya uzaktan yönetim amacıyla bağlanıyorsanız, bir şifre belirtmek veya çok uzun bir süre için bu yöntemi tavsiye ederim. ortak anahtara (15 veya daha fazla karakter, büyük harf, küçük harf, sayı ve sembol) parola.

Bu yoldan saldırıya uğramak neredeyse imkansız olacak bu yöntemle, bilgisayar korsanının yalnızca parolayı bilmesi gerekmeyecek, aynı zamanda kimliğinin doğrulanabilmesi için sunucuda geçerli bir genel sertifikaya sahip olması gerekecektir. (Tabii ki, sunucunun hiçbir zaman güvenliğinin ihlal edilmediğini ve tamamen güncel olduğunu ve mümkün olan en iyi güvenlikte olduğunu varsayarsak).

Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave