Mamy kilka kont użytkowników, które tworzymy do zadań automatycznych wymagających szczegółowych uprawnień, takich jak przesyłanie plików między systemami, monitorowanie itp.
W jaki sposób blokujemy te konta użytkowników, aby ci „użytkownicy” nie mieli powłoki i nie mogli się zalogować? Chcemy zapobiec możliwości, że ktoś może zalogować się SSH jako jedno z tych kont użytkowników.
/bin/false
wydaje się bardziej powszechne niż/bin/true
.nologin
można go znaleźć pod adresem/usr/sbin/nologin
nologin
/usr/local/bin/maybe
które/dev/urandom
ly wybiera między tymi dwoma. Może powinienem go użyć: DZmiana powłoki logowania niekoniecznie uniemożliwia użytkownikom uwierzytelnianie (z wyjątkiem niektórych usług, które sprawdzają, czy powłoka użytkownika jest wymieniona w
/etc/shells
).Ludzie mogą nadal być w stanie uwierzytelniać się w różnych usługach, które twój system zapewnia użytkownikom unixowym, i mogą być nadal upoważnieni do wykonywania niektórych działań, choć prawdopodobnie nie mogą wykonywać dowolnych poleceń bezpośrednio.
Zmiana powłoki na
/bin/false
lub/usr/sbin/nologin
uniemożliwi im uruchamianie poleceń tylko w tych usługach, których można używać do uruchamiania poleceń (logowanie do konsoli, ssh, telnet, rlogin, rexec ...), więc wpływ na autoryzację tylko niektórych usług.Na
ssh
przykład nadal pozwala im to na przekierowanie portów.passwd -l
wyłączy uwierzytelnianie za pomocą hasła, ale użytkownik może nadal mieć możliwość korzystania z innych metod uwierzytelniania (np.authorized_keys
zssh
).Przy
pam
Linuksie możesz przynajmniej użyćpam_shells
modułu, aby ograniczyć uwierzytelnianie lub autoryzację do użytkowników z dozwoloną powłoką (tymi wymienionymi w/etc/shells
). Na przykładssh
, będziesz chciał to zrobić na poziomie autoryzacji (account
), jak w przypadkusshd
zastosowań uwierzytelnianiapam
oprócz innych metod uwierzytelniania (jakauthorized_keys
), lub możesz to zrobić za pomocąsshd_config
dyrektyw w/etc/ssh/sshd_config
(jakAllowUsers
i znajomych).Pamiętaj jednak, że dodanie pewnych ograniczeń w globalnej autoryzacji pam może potencjalnie uniemożliwić uruchamianie
cron
zadań jako tych użytkowników.źródło
:|
Edytujesz
/etc/passwd
plik i zmieniasz powłokę użytkownika z/bin/bash
lub/bin/sh
na/sbin/nologin
źródło
vipw
który zapobiega tego rodzaju błędom .Najpierw wyłącz hasło, używając
passwd -l username
.Uwaga na
man
stroniepasswd
dotycząca opcji-l
:źródło
Możesz użyć polecenia chsh:
Wprowadź nowe szczegóły powłoki na żądanie:
Lub krótsza wersja:
źródło
Aby uniemożliwić zalogowanie się użytkownika, a nawet uwierzytelnienie przez ssh, które umożliwia przekierowanie portów (jak opisano tutaj Stephane), modyfikuję użytkownika, aby był podobny do
nobody
użytkownika systemu :/etc/shadow
(z*
lub!!
w odpowiednim polu)/etc/passwd
(np./sbin/nologin
w odpowiednim polu)/etc/passwd
(np./
w odpowiednim polu)źródło