Linux: uzak sysadmin için ayarlanmış


51

Her şimdi ve sonra Linux sistemlerinde uzaktan destek, sorun giderme ve / veya performans ayarlaması gibi tuhaf bir istek alıyorum.

Büyük şirketler genellikle satıcılara / tedarikçilere uzaktan erişim sağlamak için iyi kurulmuş prosedürlere sahiptir ve sadece bunlara uymam gerekiyor. (Daha iyi veya daha kötüsü için.)

Öte yandan, küçük şirketler ve bireyler her zaman, beni kurmak için ne yapmaları gerektiğini onlara bildirmek için bana sürekli yöneliyorlar. Genellikle sunucuları doğrudan internete bağlanır ve mevcut güvenlik önlemleri, Linux dağıtımları ne olursa olsun varsayılan değerlerden oluşur.

Neredeyse her zaman kök düzeyinde erişime ihtiyacım olacak ve kim benim için erişim ayarlayacak olursa uzman bir sysadmin değil. Kök şifrelerini istemiyorum ve eylemlerimin kötü niyetli olmayacağından da eminim , ancak ne kadar basit talimatlar vermeliyim:

  • Bir hesap oluşturmak ve güvenli bir şekilde kimlik bilgileri alışverişi yapmak
  • root (sudo) erişimini ayarla
  • hesabıma erişimi kısıtla
  • denetim izi sağlamak

(Evet, farkındayım ve bu müşterileri her zaman, herhangi bir kötü amaçlı eylemi gizlemek için yönetici erişimine sahip olmadığımda önemsiz olduğunu, ancak bir denetim izi oluşturmak için gizlenecek ve aktif olarak katılmayacak bir şeyim olmadığını varsayalım.)

Aşağıdaki adımlarda neler geliştirilebilir?


Mevcut talimat setim:

Bir hesap oluşturmak ve güvenli bir şekilde kimlik bilgileri alışverişi yapmak

Bir şifre sağlama sağlıyorum ve hesabımın şifrelenmiş şifreyle ayarlandığını soruyorum, bu yüzden açık bir metin şifresi iletmemize gerek kalmayacak, şifreyi bilen tek kişi olacağım ve başlamayız tahmin edilebilir bir zayıf şifre.

sudo useradd -p '$1$********' hbruijn

Bir genel anahtar SSH (müşteri başına belirli bir anahtar çifti) sağlıyorum ve hesabımı şu anahtarla kurmasını istiyorum:

sudo su - hbruijn
mkdir -p ~/.ssh
chmod 0700 ~/.ssh
echo 'from="10.80.0.0/14,192.168.1.2" ssh-rsa AAAAB3NzaC1y***...***== hbruijn@serverfault' >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys 

root (sudo) erişimini ayarla

Müşteriden benim için sudo kurmasını sudo sudoeditya da en sevdikleri editörünü kullanarak eklemelerini rica ediyorum /etc/sudoers:

hbruijn ALL=(ALL) ALL

hesabıma erişimi kısıtla

Genellikle müşteri hala parola tabanlı girişlere izin verir ve ondan /etc/ssh/sshd_confighesabımı yalnızca SSH anahtarlarıyla sınırlandırmak için aşağıdaki iki satırı eklemelerini isterim:

Match user hbruijn
PasswordAuthentication no

Müşteriye bağlı olarak, her zaman tek bir statik IP adresi (örneğin, 192.168.1.2) sağlamak ve / veya ISS'imin kullandığı IP adresi aralığını sağlamak için (örneğin, 10.80) tüm SSH erişimimi tek bir ana bilgisayar ana bilgisayarından yönlendireceğim. 0.0 / 14). SSH erişimi kısıtlıysa, istemcinin güvenlik duvarı beyaz listesine bu bilgileri eklemesi gerekebilir (ssh'nin filtrelenmemesinden daha sık olsa da).

Bu ip adreslerini, anahtarlarımın sistemlerine erişmek için kullanılabileceği ana bilgisayarları sınırlayan dosyadaki from=kısıtlama olarak zaten görmüştünüz ~.ssh/authorized_keys.

denetim izi sağlamak

Şimdiye kadar hiçbir müşteri benden bunu istememişti ve kıçımı kapsayacak şekilde aşağıdakilerin ötesinde özel bir şey yapmadım:

sudoBireysel komutlarla tutarlı bir şekilde kullanmaya ve sudo -iya da kullanmamaya çalışıyorum sudo su -. Kullanmamayı sudo vim /path/to/file ama kullanmaya çalışıyorum sudoedit.

Varsayılan olarak, ayrıcalıklı eylemlerin tümü syslog'a (ve /var/log/secure) kaydedilir:

Sep 26 11:00:03 hostname sudo:  hbruijn : TTY=pts/0 ; PWD=/home/hbruijn ; USER=jboss ; COMMAND=sudoedit /usr/share/jbossas/domain/configuration/domain.xml  
Sep 26 11:00:34 hostname sudo:  hbruijn : TTY=pts/0 ; PWD=/home/hbruijn ; USER=root ; COMMAND=/usr/bin/tail -n 5 /var/log/messages

Çalışma ortamlarımı kişiselleştirmek için çoğunlukla pes ettim, gerçekten yaptığım tek şey ~/.bash_profilebash tarihimi arttırmak ve zaman damgalarını eklemek için aşağıdakileri koymak :

export HISTSIZE=99999999999
export HISTFILESIZE=99999999999
export HISTIGNORE="w:ls:ls -lart:dmesg:history:fg"
export HISTTIMEFORMAT='%F %H:%M:%S  '
shopt -s histappend

8
Oturum açabilir ( screendurumdan sonra kolayca değiştirilebilir) ve hatta oturumları paylaşabilirsiniz , böylece aşırı durumlarda müşteriniz ne yaptığınızı canlı izleyebilir.
Sven

Daha iyi bir denetim izi eklemek istiyorsanız, ihtimalleri varsa uzaktan kayıt işlemlerini etkinleştirmelerini istemeniz gerekir
Fredi

Yanıtlar:


24

Akla gelen tek şey görüşmeye eklemek --expiredateolacaktır adduser.
Böylece müşteri, erişiminizin sabit bir tarihte otomatik olarak sona ereceğini bilir.

Kök erişiminiz olduğu için hala size güvenmesi gerekiyor ve yine de süre sonu bayrağını kaldırabilir.


15

Oturumlarınızı script (1) yardımcı programı ile kaydedebilirsiniz .

$ script session.log
Script started, file is session.log
$ ls
file1  session.log
exit
Script done, file is session.log

o zaman her şey session.log'dadır.


Ssh oturumunu uzaktaki bir sisteme başlatmadan önce bunu kendi sunucunuzda çalıştırmanızı veya uzak sistemdeki profilimin bir parçası olarak eklemenizi önerir misiniz?
HBruijn

1
Sanırım ikisini de yapabilirsin - Ben sadece bir kere kullandım, çoğunlukla insanlar umursamıyor.
user9517

7

Zaten bir SSH ortak anahtarıyla giriş yaptığınız için, bir şifre karma sağlamadıysanız, işleri biraz daha sıkılaştırır; bunun yerine adduser --disabled-password, bu hesaba useradd -p '!'etkili bir şekilde eşdeğerdir (eşdeğerde, sanırım) kullanmalarını söyleyin PasswordAuthentication no, ayrıca e-postanıza birisinin çektiği birisinin parola karmaşasına zorlama ve sizin gibi oturum açma şansı yoktur.


3
Match user hbruijn \n PasswordAuthentication noSshd_config dosyasının eklenmesi, şifresi çözülmüş şifremle (potansiyel olarak yerel kullanıcılar bunu kullanabilir su - hbruijn) uzaktan oturum açmasını engellemelidir, ancak bildiğim kadarıyla yine de sudoamaçlar için geçerli bir şifrem olması gerekir . Belki de giriş yaptıktan sonra şifremi sıfırlamalıyım?
HBruijn

Ah, sudo hakkında iyi bir nokta. Durumdaki bir hesaba bu hesaptan --disabled-passwordçalıştırılarak şifre verilip verilemeyeceğinden emin değilim passwd.
zwol

Ayrıca sağladığınız şifre şifresini dinleyen herhangi birisini durduran nedir? Bu bölüm, genel anahtarınızın ele geçirilip kesilmediğinin önemli olmadığı ssh anahtarlarını kullanmayı zorlaştıran zayıf bir bağlantıdır.
JamesRyan

3
Bu zayıf bağlantı, müşterinin sudoers dosyasındaki gibi bir satır eklemesiyle çözülebilir hbruijn ALL=(ALL) NOPASSWD: /usr/bin/passwd hbruijnmi?
Dezza

2

Genel / özel anahtarları kullanacağınız zaman neden bir şifre verdiniz?

Genel anahtarların paylaşılması amaçlanmıştır, bu nedenle şifreli şifreleri değil, kimlik bilgilerini güvenli bir şekilde değiştirmek için kullanmanız gereken şey budur.

sudo useradd --disabled-password hbruijn

Genel anahtarınızı gönderirken, bir telefon görüşmesi gibi ikinci bir kanaldaki parmak izini doğrulayın;

Şimdi sudo kullanmak için bir şifreniz olmayacağından, sudoers dosyasındaki satırınızı da

hbruijn ALL=(ALL) NOPASSWD:ALL

Sudo için şifrenizin olması konusunda rahat değilseniz ve gerçekten bir şifre istemeniz halinde, hala karma şifrenizi göndermenize, hesabın şifre olmadan oluşturulmasına, ortak anahtarınızı ayarlamanıza ve hesabınız bir kez kullanılmasına gerek yoktur. ayarlamak ssh üzerinden giriş yapabilir ve passwdkendi şifrenizi ayarlamak için koşabilirsiniz .

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.