Bir SSH kullanıcısı sadece SSH tünellemesine izin verecek şekilde nasıl kısıtlanır?


31

SSH sunucusundaki bir kullanıcıyı yalnızca SSH TUNNELING ayrıcalıklarına izin vermesini nasıl kısıtlayabilirim ? Yani, SSH ile giriş yapmış olsalar bile komutları çalıştıramazlar.

Linux sunucularım Ubuntu 11.04 ve OpenWrt.

Yanıtlar:


34

Sunucu tarafında, kullanıcı kabuklarını ayarlayarak bunu kısıtlayabilirsiniz /bin/true. Bu, kimliklerini doğrulamasına izin verecek, ancak çalıştırması için bir kabuk almadıkları için aslında hiçbir şeyi çalıştırmayacaklar. Bu, SSH'nin onlara sunduğu şeylerin alt kümesi ile sınırlı kalacakları anlamına geliyor. Eğer liman yönlendirme sunuyorsa, yine de bunu yapabilecekler.

Müşteri tarafında muhtemelen ile bağlantı kurmak isteyeceksiniz -N. Bu, istemciyi kabuk gibi uzak bir komut için SORULMAYI durdurur, sadece doğrulama bölümü bittikten sonra durur. Bunu işaret eden yorumcular için teşekkürler.


Bunu deneyeceğim: P thx!
LanceBaynes

2
Caleb'in cevabına eklemek için müşteriye bir kabuk çalıştırmamasını söylemeniz de gerekebilir. Openssh komut satırı ile, bu -N bayrağı ile yapılır. PuTTY'da da benzer bir seçenek var ama tam adı hatırlamıyorum.
Bill B,

Hmm, bu temel olarak müşteri tarafında güvenlik, hayır mı? Bir sunucu tarafında güvenlik ayarı arıyorum, ancak teşekkür ederim!
LanceBaynes,

2
Üzgünüm, net değildim - Sunucu ayarıyla birlikte demek istedim. Geçmişte benim tecrübem, kabuğunu kabuk olmayan bir şeye ayarladıysanız, bir kabuk açmaya çalıştığı halde bağlanamayacağınız için bağlanamazsınız. Bu nedenle, güvenlik sunucu tarafında zorlanır (Caleb'in yöntemini kullanarak), ancak bundan sonra bağlanmada sorun yaşıyorsanız, istemci tarafı anahtarını ayarlamanız gerekebilir.
Bill B,

3
Sen böyle bir kullanıcı oluşturun useradd sshtunnel -m -d /home/sshtunnel -s /bin/true.
frakz

13

Aşağıdakiler, X11 ve SSH ajanı soket iletimlerinin ayrıca izin vermeme avantajına sahiptir; bu, Caleb'lerde yine de izin verilebilir. Diğer bir avantaj, eğer kullanıcı varsayılan kabuğunu başka bir yolla değiştirebiliyorsa, bunun SSH erişimini sadece TCP iletimleri ile sınırlandırması beklenir.

Aşağıdakileri içine yerleştirin /etc/ssh/sshd_config:

Match User that-restricted-guy
  AllowTcpForwarding yes
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /bin/false

Kullanıcının that-restricted-guySSH etkin makineniz üzerinden herhangi bir TCP bağlantısını iletmesini sağlamak için (bu makineye localhostbağlantı, hatta bu makineden diğer makinelere bağlantı bile).

Daha da kısıtlayıcı olmasını istiyorsanız (ki bu iyi bir fikirdir) şunları da yapabilirsiniz:

Match User even-more-restricted-guy
  PermitOpen 127.0.0.1:12345
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /bin/false

Bu, kullanıcının even-more-restricted-guyyalnızca 127.0.0.1 TCP port 12345'e (SSH özellikli makinenizde görülebildiği gibi) bağlantıları iletmesini sağlar.

Kullanıcı normal olarak bağlandığında, şimdi hiçbir zaman bağlantısı /bin/falsekesilecek, ancak 1 kodu ile anında çıkacak olan komut tetikleneceği için hemen bağlantısı kesilecektir. Bundan kaçınmak ve yönlendirme bağlantınızı açık tutmak için -Nbayrağı sshkomuta işaretleyin . Bu herhangi bir komut çalıştırmaya çalışmaz, ancak yine de TCP iletme ayarlarına izin verir.

İkinci kurulumda çalışması gereken bir ileri komut örneği:

ssh -L 12345:127.0.0.1:12345 -N even-more-restricted-guy@insert-your-machine

1
Caleb'in cevabına göre cevabı geliştirilmiş bir çözüm olarak tekrar yazdım.
aef

Emin. Ben de temizledim. Yanlış anlaşılmanın çözüldüğünü görmek güzel. İyi geceler.
Jakuje

1

İnsanların, ssh sürümünüzün onu destekleyecek kadar yeni olduğunu varsayarak gruplarını eşleştirerek ne yapabileceklerini kontrol edebilirsiniz (openssh 5.x +).

Temel olarak, onlara sftp kullanıcısıymış gibi davranıyoruz, ancak tcp yönlendirmesine izin veriyor ve isteğe bağlı olarak iletebilecekleri hedefleri belirtiyoruz . Onlara bir ev dizini verirseniz, ancak altında herhangi bir dizin oluşturmazsanız, dosyalara izin veremezler çünkü dosyalara izin veremezler.

Match Group                     nicepeople
    PubkeyAuthentication        yes
    PasswordAuthentication      yes
    PermitEmptyPasswords        no
    GatewayPorts                no
    ChrootDirectory             /opt/dummy_location/%u
    ForceCommand                internal-sftp
    AllowTcpForwarding          yes
        PermitOpen              192.168.0.8:22
        PermitOpen              192.168.0.5:8080
    # Or leave out the PermitOpen to allow forwarding to anywhere.
    HostbasedAuthentication     no
    RhostsRSAAuthentication     no
    AllowAgentForwarding        no
    Banner                      none

Bu Eşleme Grubu bloklarını, farklı davranış veya kısıtlamalar sağlamak istediğiniz her grup için tekrarlayabilirsiniz .

IPtables kullanarak bu kişinin ağda nereye gidebileceğini de kontrol edebilirsiniz.

/sbin/iptables -I OUTPUT -m owner --gid-owner 500 -j REJECT
/sbin/iptables -I OUTPUT -m owner --gid-owner 500 -m tcp -p tcp -d 192.168.0.0/24 -j ACCEPT

Bu, "nicepeople" grubunun GID'nin 500 olduğunu varsayar.

Yukarıdaki ssh seçeneklerinden bazıları openssh'ın eski sürümlerinde bulunur, ancak Eşleme Grubu bölümünde bulunmaz. Maç Grubu OpenSSH 4.x ve daha önceki sürümlerde çok sınırlı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.