Özel bir Debian deposuna erişimi güvenli bir şekilde kısıtlayın


9

Özel bir Debian deposuna erişimi kısıtlamak ve etkileşimli olmayan (yani bir komut dosyası kullanarak) kimlik doğrulaması yapabilmek için bir yöntem arıyordum

En yararlı makale aslında Debian yönetim sitesinden biri ama güvenli yöntem ssh ve genel / özel anahtarlar kullanırsa buldum . Harika çalışıyor ancak başarılı bir şekilde kimlik doğrulaması için her ana bilgisayarın ortak anahtarının uzak yetkili_anahtarlar dosyasında olması gerekir. Ssh: // için parola sağlama hakkında hiçbir şey söylemiyor ama sanırım mümkün olmalı.

Başka alternatifler denediniz mi (örn. Ftps)?

Şimdiden teşekkürler


Yukarıdaki makalede yaşadığım sorun, yalnızca APT veri havuzu erişimini sağlamakla kalmıyor, aynı zamanda APT veri havuzuma kabuk erişimi de veriyor. Bu kabul edilemez bir risk.
BobDoolittle

Yanıtlar:


5

apt-getSunucularınızda her zaman el ile çalışırsanız ( apt-getcrons tarafından başlatılan otomatik komutlar yoksa ), ssh aracı iletmeyi kullanmayı düşünebilirsiniz . Bu, yönettiğiniz sunucu başına bir genel / özel anahtar çifti yönetmek zorunda kalmaz ve muhtemelen her sunucuda özel anahtarlar bırakmaktan daha güvenlidir.

İlk yapılandırma - yönetmek istediğiniz sunuculara bağlanın ve buna benzer bir şey ekleyin /etc/apt/sources.list(bu örnekte sunucularınızın managerhesaba bağlanmasını istediğiniz varsayılmaktadır ):

    deb ssh://manager@my.repository.org/path other stuff
  • johndoeörneğin , giriş bilgilerinizle kendi bilgisayarınızda bir çift özel / genel anahtar oluşturun (bilgisayarınızın debian'da çalışması şartıyla: eğer değilse, bunu yönetime adanmış bir debian sunucusundan yapabilirsiniz):

    ssh-keygen
    
  • güçlü bir anahtar sözcükle korunduğundan emin olun
  • ortak anahtarınızı depo sunucusuna kopyalayın /home/manager/.ssh/authorized_keys:

    ssh-copy-id manager@my.repository.org
    

Yönetim oturumu başına bir kez

  • yazarak makinenizdeki ssh aracısını başlatın:

    eval `ssh-agent`
    
  • anahtarınızı aracıya ekleyin (bu parolanızı gerektirir):

    ssh-add
    

Bir sunucuyu yönetme

  • kullanarak yönetmek istediğiniz sunucuya bağlanın ssh -A( -Aaracı yönlendirmeyi etkinleştirir):

    ssh -A some.server.org
    
  • köke geçin (kullanmak sudoistiyorsanız yapılandırmanız gerekir, /etc/sudoersaksi sudotakdirde aracı yönlendirmeyi keser, bunu okuyun ):

    su
    
  • artık aracı yönlendirmesi sayesinde şifrenizi tekrar yazmadan deponun yönetici hesabına ssh kullanarak bağlanabilmeniz gerekir. Bu nedenle, apt-getiyi çalışmalıdır:

    apt-get udate
    

Yönetim oturumunuzu sonlandırma

  • Sunucularınızı yönetmeyi bitirdiğinizde, anahtarlarınızı aracıdan kaldırın:

    ssh-add -D
    

Avantajları

  • Çok fazla başlangıç ​​yapılandırması gerekmez
  • Sadece bir özel anahtar gerekli
  • Özel anahtar güçlü bir parola ile korunur
  • Birisi sunucunuzdan birine kök erişimi elde ederse, depo sunucunuza hemen erişemez.
    • Bilgisayar korsanı sabırlı ve nitelikli ise, aracı yönlendirmeyi kullanarak sunucuya bağlanana kadar bekleyebileceğini ve depo sunucunuza erişmek için yönlendirme mekanizmasını ele geçirebileceğini unutmayın.
    • Bunu önlemeye yardımcı olmak için ssh-ask, anahtarınızı kullanma girişimlerini kabul etmek / reddetmek için kullanabilirsiniz.
    • Her durumda, korsan olacak değil o sadece amacıyla yönlendirme mekanizmasını kaçırmak mümkün olacak: özel anahtar kendisi erişmek kullanmak anahtarı ve sadece süre içinde sunucuya bağlanır.

Tekrar teşekkürler MiniQuark. Aslında, güncellemeler katılımsız, ancak bu test amacıyla uygulayabileceğim harika bir yöntem.
Humber

Zevkle! :) Yardımcı olursa sevindim.
MiniQuark

4

Bunu yapmanın bir yolu, sadece belirli bir IP setinin depoya erişmesine izin vermektir. Bu, LAN ve VPN için çok iyi çalışıyor.

Basit ve verimli.


1
Teşekkürler Antoine :). Aslında, şu anda sahip olduğum depoya bu yöntemle erişilebilir (http bir OpenVPN bağlantısı üzerinden). VPN'ye ait IP'leri kısıtlıyorum. Buradaki dezavantaj, repoya erişmek için her ana bilgisayarın VPN'ye bağlanması gerektiğidir, biraz can sıkıcıdır (birkaç sertifika / anahtarı yönetin). Soruda belirtmediğim için üzgünüm.
Humber

Doğru, OpenVPN'i yönetmek rahatsız edicidir, ancak deponuzun güvenliğini yönetmeyi çok basit hale getirir. Ayrıca, kullanıcıların VPN içinde bir kez kimlik bilgileriyle uğraşmak zorunda kalmazlar.
Antoine Benkemoun

2

Ssh + genel / özel anahtarlar çözümü o kadar da kötü değil :

  • istemci makinede root olarak giriş yap
  • yazın ssh-keygen, sonrassh-copy-id your_login@your.repository.org
  • aşağıdaki gibi düzenleme /etc/apt/sources.listve ekleme:

    deb ssh://your_login@your.repository.org/path other stuff
    

Verilen, her sunucunun ortak anahtarını sunucudaki ~/.ssh/authorized_keysdosyaya koymanızı gerektirir , ancak bu o kadar karmaşık değildir (yukarıya bakın) ve herhangi bir zamanda hangi sunuculara izin verdiğinizi veya vermediğinizi kontrol etmenizi sağlar (bir anahtarı herhangi bir zamanda authorized_keys).


Teşekkürler MiniQuark. Evet, bu çözüm o kadar da kötü değil, ancak ssh-copy-id, openssh sunucusunda parola kimlik doğrulaması devre dışı bırakılmışsa çalışmaz. Kullanabilmek için havuzu kullanarak her istemciye aynı anahtar dosyasını yaymayı düşündüm. Daha fazla güvenlik için, asgari izinlere sahip bir kullanıcı kullanılır. Kimlik bilgilerini paylaşmakla neredeyse aynı. Şu anda nasıl çalıştığını / çalıştığını kontrol etmek için bu yöntemi test ediyorum.
Humber


0

Sorunuzdaki bağlantı birden çok yöntem gösteriyor. 2 numara, https + temel kimlik doğrulaması istiyorsunuz.


Teşekkürler Justin. Bence apt ile https aktarımı sadece apt-transport-https kurulu ise çalışır. Bu ilginç bir alternatif. Tek dezavantajı sources.list içindeki kimlik bilgileri
Humber

chmod 600 /etc/apt/sources.list
Justin
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.