Jestem w trakcie konfigurowania serwera w chmurze do uruchamiania następującego stosu: Ruby, Passenger, Apache; pod Ubuntu 10.04 (Lucid Lynx).
Chcąc ułatwić zarządzanie serwerem, konfiguruję klucze RSA root
i www-data
mogę ssh
wejść na serwer. To, co się nie podoba to, że www-data
jest .ssh
katalog siedział w /var/www
którym jest domyślny katalog instalacyjny dla apache. Martwię się, że jeśli apache nie zostanie poprawnie skonfigurowany, .ssh
katalog może zostać ujawniony.
Natknąłem się na rozwiązanie, aby przenieść ~/.ssh/authorized_keys
plik do centralnej lokalizacji, zmieniając AuthorizedKeysFile
się /etc/ssh/sshd_config
. Zawiera 2 zalety: jedną lokalizację dla kluczy i nie musisz się martwić o złą konfigurację apache. Jedynym oszustwem, o którym myślę, jest to, że teraz każdy użytkownik jest dostępny do logowania na serwerze (wyraźnie obosieczny miecz centralnego pliku klucza).
Czy jest coś, czego mi brakowało w tej konfiguracji? Czy sam się naraziłem, czy jest to lepsze rozwiązanie niż pojedyncze authorized_keys
pliki?
Jestem zielony, jeśli chodzi o zarządzanie serwerami, ale jestem całkowicie gotowy nazywać się złymi nazwiskami za robienie złych rzeczy. :RE
źródło
id_rsa
plik~/.ssh
i uda się go odczytać)Odpowiedzi:
Wszystkie pliki kluczy można scentralizować w tym samym katalogu i nie mieszać w tym samym pliku.
Po prostu skonfiguruj
sshd_config
plik w ten sposób:Na twoim serwerze:
/etc/ssh/authorized_keys/www-data
/etc/ssh/authorized_keys/root
Jeśli chodzi o prawa dostępu, te ustawienia są akceptowane przez sshd:
/etc/ssh/authorized_keys
jest własnościąroot:root
i ma tryb 755. Pliki kluczy są własnościąroot:root
i mają tryb 644.Inne tryby mogą działać, ale ich nie testowałem.
źródło
Ogólnie rzecz biorąc, nie zrobiłbym tego, co sugerujesz. Łamie typowe założenia (takie jak
~/.ssh/authorized_keys
praca dla użytkowników i wprowadza problemy, o których już wspomniałeś w swoim pytaniu. Jeśli zobaczysz rażące problemy przed wdrożeniem, oznacza to, że twoje rozwiązanie nie jest idealne.Jeśli chodzi o bezpieczeństwo, myślę też, że POWAŻNY jest pomysł, aby wszyscy mieli wspólne konto usługowe: w tej chwili to tylko Ty i wiesz, że to Ty wprowadzasz zmiany. Za 5 lat, kiedy masz 5 administratorów, będziesz chciał wiedzieć, kto co zmienił, i przeglądając dzienniki kontroli, aby zobaczyć, kto używał tego klucza, gdy jest to królewski ból.
Lepiej jest, aby ludzie logowali się jako sami i używali
sudo
czegoś podobnego do zwiększania swoich uprawnień i robienia wszystkiego, co powinni.Jeśli nadal chcesz scentralizować klucze SSH, sugeruję zajrzenie do systemu wdrażania, takiego jak Puppet lub radmind, aby zarządzać
authorized_keys
plikami / dystrybuować je do odpowiednich~user/.ssh/
katalogów (lub zhackować domowe rozwiązanie, które SCP umieszcza je na miejscu).Po przejściu na wiele serwerów możesz zajrzeć do łaty klucza publicznego LDAP dla starszych wersji OpenSSH (lub
AuthorizedKeysCommand
dyrektywy i odpowiedniego skryptu w nowszej wersji OpenSSH), abyś mógł scentralizować użytkowników i nie musiał dystrybuować ich klucze w całej sieci, ale prawdopodobnie będzie to dla ciebie dość daleko.źródło
root
aniwww-data
dostępu za pośrednictwem klucza SSH. Czy to prawda?~www-data/.ssh
katalogu nie jest straszną rzeczą (przy odpowiednich uprawnieniach nie stanowi to znacznego ryzyka), ale jeśli zamierzasz go używać~www-data/.ssh
, prawdopodobnie lepiej nie mieć swojego katalogu głównego~www-data
(przenieśwww-data
katalog główny lub przenieś katalog domowy). Zróżnicowanie użytkowników to większy argument IMHO - wiem, że jeśli sięjsmith
zaloguję, wiem, że to John Smith. Jeśli zobaczęwww-data
logowanie, muszę wykopać więcej, aby dowiedzieć się, kto to był.AuthorizedKeysFile
w/etc/ssh/sshd_config
domyślnych produktu%h/.ssh/authorized_keys
. Oto%h
symbol zastępczy katalogu domowego. Co powstrzymuje cię przed ustawieniem go na,/some/folder/ssh_keys_by_user/%h/
a nawet/root/ssh_keys/%u
. Możesz nawet dać odpowiedniemu użytkownikowi prawo zapisu do jego indywidualnego pliku (i tylko jego) połączyć plik ze standardową lokalizacją (zln -s /root/ssh_keys_by_user/username /home/username/.ssh/authorized_keys
) i nie złamać wyżej wymienionych założeń.