Yalnızca belirli kullanıcıların bir bağlantı noktasında ssh üzerinden, diğer kullanıcıların başka bir bağlantı noktası üzerinden oturum açmasına izin verme


13

Aşağıdaki kullanım örneğim var:

  • Kullanıcıların güvenli, güvenilir bir ağdan oturum açmasına izin vermeniz gerekiyor
  • ve birkaç (sadece iki) mobil kullanıcının bir Linux Centos makinesinde uzaktan oturum açmasına izin vermek.

Ben sshd örneğin farklı bağlantı noktalarında çalışmasını yapabilirsiniz:

  • içeriden 22 üzerinde çalıştırmak için iyidir, çünkü onları diğer bağlantı noktalarına bağlamak istemiyorum (betiği karıştırıyor).
  • Dış mobil kullanıcılar için, sshd'yi farklı bir bağlantı noktasında çalıştıracağım, bağlantı noktası X diyelim (artan güvenlik - bu küçük bir ofis kurulumudur).

Ek güvenlik için, sshd'yi yalnızca X bağlantı noktasındaki belirli kullanıcılara erişime izin verecek şekilde yapılandırmayı umuyordum (ve sonra kullanıcıların X bağlantı noktasından ne zaman oturum açtıklarını öğrenebilmemiz için bazı uyarıları yapılandırıyorum).

Ancak, sshd belgelerinde böyle bir yapılandırma bulamıyorum. Böyle bir çözüm yoksa, en azından birisi X bağlantı noktasında sshd girişini tamamladığında çalıştırmak için bir kabuk komut dosyası tetiklemek mümkün müdür? Ben sshd giriş var ama bir şey ile gelemedi bir uyarı tetikleyebilir olmadığını görmek için iptables belgelere bakıyordu.

Takdir edilen girdiler

Yanıtlar:


12

Koşu SSHalternatif bağlantı noktasında artık teminat olarak sayılmaz. Sadece biraz belirsizlik ve kullanıcılarınız için karmaşıklık ekler. Ağınızı kırmak isteyen, otomatik bağlantı noktası tarayıcıları kullanan ve hangi bağlantı noktasında çalıştığına aldırış etmeyenler için sıfır engel ekler.

Uzaktan internet tabanlı gelen sshd_configSSH'ye izin veren bir sistemde güvenliği artırmak istiyorsanız, kullanıcılarınızı belirtilen @Anthon'da kontrol edin ve ardından güvenliği doğrudan PAM'de uygulayın.

İki grup oluşturun lusersve rusers. Uzak mobil kullanıcıları rusersgruba ekleyin . Bu kullanıcılara erişime izin vermek için pam_succeed_if.so PAM modülünü kullanın. Ssh için pam yapılandırmanıza satır ekleyin:

account     sufficient  pam_succeed_if.so user ingroup lusers
account     sufficient  pam_succeed_if.so user ingroup rusers

Bazı pam_succeed_if.so modülleri, örneğin, biraz farklı bir sözdizimi kullanmanızı gerektirebilir group = lusers.

Daha sonra, yalnızca sshdbağlanabilen kullanıcıları sınırlamakla kalmaz, aynı zamanda bir hata sshdolması durumunda da PAM tabanlı kısıtlamaların sunduğu korumaya sahip olursunuz.

Uzak kullanıcılar için ek bir adım, ssh_keys'i parolalarla kullanmaya zorlamaktır. Bu nedenle, yerel kullanıcılar anahtarlar veya parolalarla oturum açabilir, ancak uzak kullanıcıların bir anahtarı olması gerekir ve anahtarları kendileri için oluşturursanız, anahtarın parola ilişkilendirmeleri olduğundan emin olabilirsiniz. Böylece, SSH anahtarı ve parolaya sahip konumlara erişimi sınırlar . Ve bir kullanıcının parolası tehlikeye girerse potansiyel saldırı vektörlerini sınırlar.

İçinde sshd_config:

2 ayarı değiştir:

ChallengeResponseAuthentication yes

ve

PasswordAuthentication yes

için:

ChallengeResponseAuthentication no

ve

PasswordAuthentication no

Dolayısıyla, varsayılan ayar artık yalnızca anahtar kimlik doğrulamasına izin vermektir. Daha sonra yerel kullanıcılar için, yerel kullanıcılar matchiçin varsayılanı değiştirmek üzere yapılandırma ayarını kullanabilirsiniz. Yerel özel ağınızın 192.168.1.0/24 olduğunu varsayarsak, şunu ekleyin sshd_config:

Match Address 192.168.1.0/24
PasswordAuthentication yes

Artık yerel kullanıcılar parola veya anahtarlarla bağlanabilir ve uzak kullanıcılar anahtarları kullanmaya zorlanır. Anahtar sözcükleri anahtar sözcüklerle oluşturmak size kalmıştır.

Ek bir avantaj olarak, yalnızca bir tanesini yönetmeniz sshd_configve yalnızca tek bir bağlantı noktasında ssh çalıştırmanız gerekir, bu da kendi yönetiminizi kolaylaştırır.


düzenlemek 2017-01-21 - authorized_keysDosya kullanımını sınırlama .

Kullanıcıların sadece bir ssh anahtarı üretemediklerinden ve authorized_keysgiriş yapmak için bir dosyayla kullanamayacaklarından emin olmak istiyorsanız, sshd için belirli bir konum ayarlayarak yetkili anahtarları arayacağını kontrol edebilirsiniz.

İçinde /etc/ssh/sshd_config, değiştirin:

AuthorizedKeysFile  %h/ssh/authorized_keys

gibi bir şeye:

AuthorizedKeysFile  /etc/.ssh/authorized_keys/%u

Kullanıcıların yazma iznine sahip olmadığı denetimli bir dizine işaret etmek, kendi anahtarlarını üretemedikleri ve yerine koyduğunuz kurallar üzerinde çalışmak için kullanamayacakları anlamına gelir.


2
Cevabınızın uzak kullanıcıları yerel kullanıcılardan nasıl ayırdığını görmüyorum. Birisi ise lusersgrupta ancak içinde rusersgrubun bir keypair üretir ve onların günceller ~/.ssh/authorized_keys, onlar uzak mesafede giriş mümkün olacak.
Richard Hansen

8

Şunun gibi bir şey ekleyebilirsiniz /etc/ssh/sshd_config:

AllowUsers mobileuser1 mobileuser2 *@10.0.0.0/8

Yukarıda izin verilen uzak kullanıcıların adlandırıldığı mobileuser1ve mobileuser2güvenilen ağınızın 255.0.0.0 alt ağ maskesi ile 10.0.0.0 olduğu varsayılmaktadır .

Bu, iki mobil kullanıcının herhangi bir yerden oturum açmasını ve herkesin güvenilir ağdan oturum açmasını sağlar. Bu kalıplardan hiçbiriyle eşleşmeyen kullanıcıların ( foouzaktan kumandadan oturum açan kullanıcı gibi ) erişimi reddedilir.


Cevabımda eksik olduğum parça bu. Cevabınızı benimki ile birleştirirsek, oldukça sağlam bir çözüm.
Tim Kennedy

2

Bunu iki ssh artalan süreci ve iki sshd_configdosya başlatarak yapabilirsiniz . Mevcut olanınızı kopyalayın (örneğin /etc/ssh/sshd_config /etc/ssh/sshd_alt_configalternatif yapılandırma ayarlarından ve alternatif yapılandırma ayarlarından ( mansayfa için sshd_config:

Liman

Specifies the port number that sshd(8) listens on.  The default
is 22.  Multiple options of this type are permitted.  See also
ListenAddress

AllowUsers

This keyword can be followed by a list of user name patterns,
separated by spaces.  If specified, login is allowed only for
user names that match one of the patterns.  Only user names are
valid; a numerical user ID is not recognized.  By default, login
is allowed for all users.  If the pattern takes the form
USER@HOST then USER and HOST are separately checked, restricting
logins to particular users from particular hosts.  The
allow/deny directives are processed in the following order:
DenyUsers, AllowUsers, DenyGroups, and finally AllowGroups.

Muhtemelen farklı bir dosyaya alternatif ssh günlüğüne sahip olmak ve örneğin anormal giriş denemelerini fark etmek için o dosyaya yazılanları takip etmek istersiniz.

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.