Radzę, abyś po prostu używał konta root. Jeśli skonfigurujesz to w ten sposób:
- Skonfiguruj swój
sshd_config
komputer docelowy na PermitRootLogin without-password
.
- Użyj
ssh-keygen
na komputerze, który pobiera kopię zapasową, aby utworzyć klucz prywatny SSH (tylko jeśli nie masz jeszcze klucza SSH). Nie ustawiaj hasła. Google samouczek, jeśli potrzebujesz szczegółowych informacji na ten temat, powinno być dużo.
- Dołącz zawartość
/root/.ssh/id_rsa.pub
komputera kopii zapasowej do /root/.ssh/authorized_keys
komputera docelowego.
- Teraz twoja maszyna kopii zapasowej ma dostęp do roota na maszynie docelowej, bez konieczności używania uwierzytelniania hasłem.
wynikowa konfiguracja powinna być całkiem bezpieczna.
sudo
, szczególnie w połączeniu z NOPASSWD
zaleceniami zawartymi w komentarzach, nie ma żadnych korzyści w zakresie bezpieczeństwa, niż samo używanie konta root. Na przykład ta sugestia:
dodać następujące wpisy do /etc/sudoers
pliku:rsyncuser ALL= NOPASSWD:/usr/bin/rsync
zasadniczo i tak daje rsyncuser
uprawnienia roota. Ty pytasz:
@MartinvonWittich Łatwo uzyskać pełną powłokę roota, ponieważ jest rsync
wykonywana za pomocą sudo
? Przejdź [m] e [przez] to proszę.
Cóż, proste. Przy zalecanej konfiguracji rsyncuser
może teraz działać rsync
jako root, nawet bez pytania o hasło. rsync
jest bardzo potężnym narzędziem do manipulowania plikami, więc teraz rsyncuser
ma bardzo potężne narzędzie do manipulowania plikami z uprawnieniami administratora. Znalezienie sposobu na wykorzystanie tego zajęło mi tylko kilka minut (przetestowane na Ubuntu 13.04, wymaga dash
, bash
nie działa):
martin@martin ~ % sudo rsync --perms --chmod u+s /bin/dash /bin/rootdash
martin@martin ~ % rootdash
# whoami
root
# touch /etc/evil
# tail -n1 /etc/shadow
dnsmasq:*:15942:0:99999:7:::
Jak widać, stworzyłem sobie powłokę roota; whoami
identyfikuje moje konto jako root, mogę tworzyć pliki /etc
i czytać /etc/shadow
. Moim wyczynem było ustawienie bitu setuid na plikudash
binarnym; powoduje, że Linux zawsze uruchamia ten plik binarny z uprawnieniami właściciela, w tym przypadku root.
Posiadanie prawdziwego roota nie jest [zalecane] z dobrych powodów. - redanimalwar 15 godzin temu
Nie, niezdarne obejście konta roota w sytuacjach, w których absolutnie właściwe jest jego używanie, nie ma dobrych powodów. Jest to kolejna forma programowania kultowego ładunku - tak naprawdę nie rozumiesz koncepcji sudo kontra root, po prostu ślepo stosujesz przekonanie, że „root jest zły, sudo jest dobry”, ponieważ gdzieś to przeczytałeś.
Z jednej strony zdarzają się sytuacje, w których sudo
zdecydowanie jest odpowiednie narzędzie do pracy. Na przykład, gdy pracujesz interaktywnie na graficznym pulpicie Linuxa, powiedzmy Ubuntu, wtedy korzystanie z niego sudo
jest w porządku w tych rzadkich przypadkach, w których czasami potrzebujesz dostępu do roota. Ubuntu celowo ma wyłączone konto root i zmusza cię do sudo
domyślnego używania , aby uniemożliwić użytkownikom korzystanie z konta root tylko po to, aby się zalogować. Gdy użytkownik chce tylko użyć np. Przeglądarki internetowej, zalogowanie się jako root byłoby niebezpieczne. , a zatem brak domyślnego konta root uniemożliwia głupcom to zrobić.
Z drugiej strony istnieją sytuacje takie jak Twoja, w których zautomatyzowany skrypt wymaga uprawnień roota do czegoś, na przykład do wykonania kopii zapasowej. Teraz korzystanie sudo
z obejścia konta root jest nie tylko bezcelowe, ale także niebezpieczne: na pierwszy rzut oka rsyncuser
wygląda jak zwykłe konto nieuprzywilejowane. Ale jak już wyjaśniłem, atakującemu bardzo łatwo byłoby uzyskać pełny dostęp do konta root, gdyby już uzyskał rsyncuser
dostęp. Zasadniczo masz teraz dodatkowe konto root, które wcale nie wygląda jak konto root, co nie jest dobrą rzeczą.
root
konta.sudo
, szczególnie w połączeniu zNOPASSWD
zaleceniami zawartymi w komentarzach, tak naprawdę nie poprawia bezpieczeństwa komputera.