Administrator systemu Linux - zdalne zarządzanie
Mówiąc o zdalnym zarządzaniu w CentOS jako administrator, zbadamy dwie metody -
- Zarządzanie konsolą
- Zarządzanie GUI
Zdalne zarządzanie konsolą
Zdalne zarządzanie konsolą oznacza wykonywanie zadań administracyjnych z wiersza poleceń za pośrednictwem usługi takiej jak ssh. Aby efektywnie korzystać z CentOS Linux, jako administrator musisz biegle posługiwać się wierszem poleceń. Linux w swoim sercu został zaprojektowany do używania z konsoli. Nawet dzisiaj niektórzy administratorzy systemów preferują moc polecenia i oszczędzają pieniądze na sprzęcie, uruchamiając komputery z systemem Linux bez fizycznego terminala i bez zainstalowanego GUI.
Zdalne zarządzanie GUI
Zdalne zarządzanie GUI jest zwykle realizowane na dwa sposoby: zdalna sesja X lub protokół warstwy aplikacji GUI, taki jak VNC. Każdy ma swoje zalety i wady. Jednak w większości VNC jest najlepszym wyborem dla administracji. Umożliwia sterowanie graficzne z poziomu innych systemów operacyjnych, takich jak Windows lub OS X, które natywnie nie obsługują protokołu X Windows.
Używanie zdalnych sesji X jest natywne zarówno dla menedżerów okien X-Window, jak i dla menedżerów pulpitu działających na X. Jednak cała architektura sesji X jest głównie używana w systemie Linux. Nie każdy administrator systemu będzie miał pod ręką laptopa z systemem Linux, aby ustanowić zdalną sesję X. Dlatego najczęściej używa się dostosowanej wersji VNC Server.
Największe wady VNC to: VNC nie obsługuje natywnie środowiska wielu użytkowników, takiego jak zdalne sesje X-Sessions. Dlatego najlepszym wyborem byłby dostęp z graficznym interfejsem użytkownika do zdalnych sesji Xsesji użytkowników końcowych. Jednak zajmujemy się głównie zdalnym administrowaniem serwerem CentOS.
Omówimy konfigurację VNC dla wielu administratorów w porównaniu z kilkuset użytkownikami końcowymi ze zdalnymi sesjami X-Sessions.
Położyć fundament pod bezpieczeństwo dzięki SSH do zdalnego dostępu do konsoli
ssh lub Secure Shelljest obecnie standardem do zdalnego administrowania dowolnym serwerem Linux. W przeciwieństwie do telnetu, protokół SSH wykorzystuje protokół TLS do uwierzytelniania i kompleksowego szyfrowania komunikacji. Po prawidłowej konfiguracji administrator może być całkiem pewien, że zarówno jego hasło, jak i serwer są zdalnie zaufane.
Przed skonfigurowaniem SSH porozmawiajmy trochę o podstawowych zabezpieczeniach i najmniej powszechnym dostępie. Gdy SSH działa na domyślnym porcie 22; raczej wcześniej niż później dostaniesz ataki słownikowe typu brute force na popularne nazwy użytkowników i hasła. To po prostu pochodzi z terytorium. Bez względu na to, ile hostów dodasz do plików odmowy, będą one codziennie przychodzić z różnych adresów IP.
Dzięki kilku powszechnym zasadom możesz po prostu podjąć proaktywne kroki i pozwolić złym ludziom marnować czas. Poniżej przedstawiono kilka zasad bezpieczeństwa, których należy przestrzegać przy użyciu protokołu SSH do zdalnej administracji na serwerze produkcyjnym:
Nigdy nie używaj wspólnej nazwy użytkownika ani hasła. Nazwy użytkowników w systemie nie powinny być domyślne w systemie ani powiązane z firmowym adresem e-mail, na przykład:[email protected]
Dostęp do roota lub dostęp administracyjny nie powinien być dozwolony przez SSH. Użyj unikalnej nazwy użytkownika i su jako roota lub konta administracyjnego po uwierzytelnieniu przez SSH.
Polityka haseł jest koniecznością: Złożone hasła użytkowników SSH, takie jak: „This & IS & a & GUD & P @ ssW0rd & 24 & me”. Zmieniaj hasła co kilka miesięcy, aby wyeliminować podatność na przyrostowe ataki siłowe.
Wyłącz porzucone lub nieużywane konta przez dłuższy czas. Jeśli kierownik ds. Rekrutacji otrzyma wiadomość głosową z informacją, że nie będzie przeprowadzać rozmów kwalifikacyjnych przez miesiąc; może to na przykład prowadzić do osób znających się na technologii, które mają dużo czasu.
Oglądaj swoje dzienniki codziennie. Jako administrator systemu poświęć co najmniej 30-40 minut każdego ranka na przeglądanie dzienników systemu i zabezpieczeń. Jeśli zostaniesz o to poproszony, powiedz wszystkim, że nie masz czasu, aby nie być proaktywnym. Ta praktyka pomoże wyodrębnić znaki ostrzegawcze, zanim problem pojawi się u użytkowników końcowych i zyski firmy.
Note On Linux Security- Każdy zainteresowany administracją Linuksa powinien aktywnie śledzić najnowsze wiadomości i technologie dotyczące cyberbezpieczeństwa. Chociaż najczęściej słyszymy o włamaniach do innych systemów operacyjnych, niezabezpieczona skrzynka z Linuksem jest poszukiwanym skarbem dla cyberprzestępców. Z mocą Linuksa i szybkim łączem internetowym wykwalifikowany cyberprzestępca może wykorzystać Linuksa do ataków na inne systemy operacyjne.
Zainstaluj i skonfiguruj SSH do zdalnego dostępu
Step 1 - Zainstaluj serwer SSH i wszystkie pakiety zależne.
[root@localhost]# yum -y install openssh-server
'Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: repos.centos.net
* extras: repos.dfw.centos.com
* updates: centos.centos.com
Resolving Dependencies
--> Running transaction check
---> Package openssh-server.x86_64 0:6.6.1p1-33.el7_3 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
Step 2 - Bezpiecznie używaj regularnie, aby dodać dostęp do powłoki.
[root@localhost ~]# useradd choozer
[root@localhost ~]# usermod -c "Remote Access" -d /home/choozer -g users -G
wheel -a choozer
Note- Dodaliśmy nowego użytkownika do grupy kół , umożliwiając dostęp do konta roota po uwierzytelnieniu dostępu przez SSH. Użyliśmy również nazwy użytkownika, której nie można znaleźć na listach popularnych słów. W ten sposób nasze konto nie zostanie zablokowane, gdy zostanie zaatakowany SSH.
Plik zawierający ustawienia konfiguracyjne dla serwera sshd to / etc / ssh / sshd_config .
Fragmenty, które chcemy początkowo edytować to -
LoginGraceTime 60m
PermitRootLogin no
Step 3- Załaduj ponownie demona SSH sshd .
[root@localhost]# systemctl reload sshd
Dobrze jest ustawić okres karencji na wylogowanie na 60 minut. Niektóre złożone zadania administracyjne mogą przekraczać domyślną wartość 2 minut. Nie ma nic bardziej frustrującego niż przekroczenie limitu czasu sesji SSH podczas konfigurowania lub badania zmian.
Step 4 - Spróbujmy zalogować się przy użyciu poświadczeń roota.
bash-3.2# ssh centos.vmnet.local
[email protected]'s password:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
Step 5- Nie możemy już logować się zdalnie przez ssh z poświadczeniami roota . Zalogujmy się więc do naszego nieuprzywilejowanego konta użytkownika i su na koncie root .
bash-3.2# ssh [email protected]
[email protected]'s password:
[choozer@localhost ~]$ su root
Password:
[root@localhost choozer]#
Step 6- Na koniec upewnijmy się, że usługa SSHD ładuje się podczas rozruchu, a zapora zezwala na zewnętrzne połączenia SSH.
[root@localhost]# systemctl enable sshd
[root@localhost]# firewall-cmd --permanent --add-service=ssh
success
[root@localhost]# firewall-cmd --reload
success
[root@localhost]#
SSH jest teraz skonfigurowane i gotowe do zdalnej administracji. W zależności od granicy przedsiębiorstwa może być konieczne skonfigurowanie urządzenia granicznego filtrującego pakiety, aby umożliwić zdalne administrowanie za pomocą protokołu SSH poza korporacyjną siecią LAN.
Skonfiguruj VNC do zdalnej administracji CentOS
Istnieje kilka sposobów, aby umożliwić zdalne administrowanie CentOS przez VNC na CentOS 6 - 7. Najłatwiejszym, ale najbardziej ograniczającym sposobem jest po prostu użycie pakietu o nazwie vino .Vinoto aplikacja Virtual Network Desktop Connection dla systemu Linux, zaprojektowana w oparciu o platformę Gnome Desktop. Dlatego zakłada się, że instalacja została zakończona przy użyciu Gnome Desktop. Jeśli Gnome Desktop nie został zainstalowany, zrób to przed kontynuowaniem. Vino zostanie domyślnie zainstalowany z instalacją GUI Gnome.
Aby skonfigurować udostępnianie ekranu z Vino pod Gnome, chcemy przejść do Preferencji systemowych CentOS w celu udostępniania ekranu.
Applications->System Tools->Settings->Sharing
Uwagi dotyczące konfiguracji udostępniania pulpitu VNC -
Disable New Connections must ask for access- Ta opcja będzie wymagać fizycznego dostępu do ok każdego połączenia. Ta opcja uniemożliwi zdalne administrowanie, chyba że ktoś jest przy fizycznym pulpicie.
Enable Require a password- To jest niezależne od hasła użytkownika. Będzie kontrolować dostęp do wirtualnego pulpitu i nadal wymagać hasła użytkownika, aby uzyskać dostęp do zablokowanego pulpitu (jest to dobre dla bezpieczeństwa).
Forward UP&P Ports: If available leave disabled- Przekazywanie portów UP&P spowoduje wysłanie żądań Universal Plug and Play dla urządzenia warstwy 3, aby automatycznie zezwolić na połączenia VNC z hostem. Nie chcemy tego.
Upewnij się, że vino nasłuchuje na porcie VNC 5900.
[root@localhost]# netstat -antup | grep vino
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 4873/vino-server
tcp6 0 0 :::5900 :::* LISTEN 4873/vino-server
[root@localhost]#
Skonfigurujmy teraz naszą zaporę ogniową, aby zezwalała na przychodzące połączenia VNC.
[root@localhost]# firewall-cmd --permanent --add-port=5900/tcp
success
[root@localhost]# firewall-cmd --reload
success
[root@localhost rdc]#
Wreszcie, jak widać, jesteśmy w stanie podłączyć nasz CentOS Box i administrować nim za pomocą klienta VNC w systemie Windows lub OS X.
Jest tak samo ważne, aby przestrzegać tych samych zasad dla VNC, jakie ustaliliśmy dla SSH. Podobnie jak SSH, VNC jest nieustannie skanowane w różnych zakresach adresów IP i testowane pod kątem słabych haseł. Warto również zauważyć, że pozostawienie włączonego domyślnego logowania CentOS z limitem czasu konsoli pomaga w zdalnym zabezpieczeniu VNC. Ponieważ osoba atakująca będzie potrzebować VNC i hasła użytkownika, upewnij się, że hasło do udostępniania ekranu jest inne i tak samo trudne do odgadnięcia, jak hasło użytkownika.
Po wprowadzeniu hasła udostępniania ekranu VNC, musimy również wprowadzić hasło użytkownika, aby uzyskać dostęp do zablokowanego pulpitu.
Security Note- Domyślnie VNC nie jest protokołem szyfrowanym. Dlatego połączenie VNC powinno być tunelowane przez SSH w celu szyfrowania.
Skonfiguruj tunel SSH przez VNC
Skonfigurowanie tunelu SSH zapewni warstwę szyfrowania SSH do tunelowania połączenia VNC. Kolejną świetną funkcją jest to, że wykorzystuje kompresję SSH, aby dodać kolejną warstwę kompresji do aktualizacji ekranu GUI VNC. Bardziej bezpieczne i szybsze jest zawsze dobrą rzeczą w przypadku administrowania serwerami CentOS!
Więc od twojego klienta, który będzie inicjował połączenie VNC, skonfigurujmy zdalny tunel SSH. W tej demonstracji używamy OS X. Najpierw musimy wykonać sudo do rootowania .
bash-3.2# sudo -s
password:
Wprowadź hasło użytkownika i powinniśmy mieć teraz powłokę roota z # znakiem zachęty -
bash-3.2#
Teraz stwórzmy nasz tunel SSH .
ssh -f [email protected] -L 2200:192.168.1.143:5900 -N
Złammy to polecenie -
ssh - Uruchamia lokalne narzędzie ssh
-f - ssh powinien działać w tle po pełnym wykonaniu zadania
[email protected] - Zdalny użytkownik ssh na serwerze CentOS obsługującym usługi VNC
-L 2200:192.168.1.143:5900 - Utwórz nasz tunel [Port lokalny]: [host zdalny]: [port zdalny usługi VNC]
-N mówi ssh, że nie chcemy wykonywać polecenia w systemie zdalnym
bash-3.2# ssh -f [email protected] -L 2200:192.168.1.143:5900 -N
[email protected]'s password:
Po pomyślnym wprowadzeniu hasła zdalnego użytkownika ssh, tworzony jest nasz tunel ssh . A teraz fajna część! Aby się połączyć, kierujemy naszego klienta VNC do lokalnego hosta na porcie naszego tunelu, w tym przypadku portu 2200. Poniżej przedstawiono konfigurację klienta VNC w laptopie Mac -
I wreszcie nasze zdalne połączenie pulpitu VNC!
Fajną rzeczą w tunelowaniu SSH jest to, że można go używać dla prawie każdego protokołu. Tunele SSH są powszechnie używane do ominięcia filtrowania portów wychodzących i wejściowych przez usługodawcę internetowego, a także oszukiwania IDS / IPS warstwy aplikacji, unikając monitorowania innej warstwy sesji.
Twój dostawca usług internetowych może filtrować port 5900 dla kont innych niż biznesowe, ale zezwalać na SSH na porcie 22 (lub można uruchomić SSH na dowolnym porcie, jeśli port 22 jest filtrowany).
IPS i IDS na poziomie aplikacji sprawdzają ładunek. Na przykład typowe przepełnienie buforu lub wstrzyknięcie kodu SQL. Pełne szyfrowanie SSH zaszyfruje dane warstwy aplikacji.
Tunelowanie SSH to świetne narzędzie w zestawie narzędzi administratora systemu Linux do wykonywania zadań. Jednak jako administrator chcemy zbadać blokowanie dostępności mniej uprzywilejowanych użytkowników mających dostęp do tunelowania SSH.
Administration Security Note- Ograniczanie tunelowania SSH to coś, co wymaga przemyślenia ze strony administratora. Ocena, dlaczego użytkownicy potrzebują tunelowania SSH w pierwszej kolejności; czego użytkownicy potrzebują tunelowania; wraz z praktycznym prawdopodobieństwem ryzyka i najgorszym skutkiem.
Jest to zaawansowany temat wykraczający poza sferę elementarza dla średnio zaawansowanych. Badania na ten temat są zalecane dla tych, którzy chcą dotrzeć do wyższych szczebli administracji CentOS Linux.
Użyj tunelu SSH dla zdalnego X-Windows
Projekt X-Windows w Linuksie jest naprawdę zgrabny w porównaniu do systemu Windows. Jeśli chcemy sterować zdalnym Linuksem z innego Linuksa, możemy skorzystać z mechanizmów wbudowanych w X.
X-Windows (często nazywany po prostu „X”) zapewnia mechanizm wyświetlania okien aplikacji pochodzących z jednego systemu Linux do części wyświetlanej X na innym komputerze z systemem Linux. Tak więc przez SSH możemy zażądać przekazania aplikacji X-Windows na ekran innego urządzenia z systemem Linux na całym świecie!
Aby uruchomić aplikację X zdalnie przez tunel ssh, wystarczy uruchomić jedno polecenie -
[root@localhost]# ssh -X [email protected]
The syntax is - ssh -X [użytkownik] @ [host], a na hoście musi być uruchomiony ssh z poprawnym użytkownikiem.
Poniżej znajduje się zrzut ekranu GIMP działający na stacji roboczej Ubuntu przez zdalny tunel ssh XWindows.
Uruchamianie aplikacji zdalnie z innego serwera lub stacji roboczej z systemem Linux jest dość proste. Możliwe jest również rozpoczęcie całej sesji X-Session i zdalne zarządzanie całym środowiskiem graficznym na kilka sposobów.
XDMCP
Pakiety oprogramowania Headless, takie jak NX
Konfigurowanie alternatywnych ekranów i pulpitów w X i menedżerach pulpitu, takich jak Gnome lub KDE
Ta metoda jest najczęściej używana w przypadku serwerów bezgłowych bez fizycznego wyświetlacza i naprawdę wykracza poza zakres podstawowego poziomu pośredniego. Jednak dobrze jest znać dostępne opcje.