Patryk Czarnik
BSK 2009/2010, ostatnia aktualizacja MIchał Kutwin 2020/2021
Temat opisują także scenariusze 7 i 8 na Ważniaku. Zwróć uwagę szczególnie
na niewymienione w bieżącym tekście polecenia programu gpg.
Przeczytaj (żeby wiedzieć jakie są możliwości, ale niekoniecznie znać na pamięć składnię i opcje):
man ssh, man ssh-keygen, man sshd_config, man gpg.
Warto przejrzeć (i wyłapać najważniejsze hasła) także:
man ssh_config, man ssh-agent, man scp, man rsync, man sftp, a także SSH i PGP na Wikipedii.
SSH (Secure Shell) to protokół zabezpieczający komunikację w warstwie aplikacji, którego podstawowym zastosowaniem jest zdalna praca przez konsolę tekstową. Może on być jednak używany także do innych celów, m.in. zdalnego używania aplikacji graficznych X Windows, bezpiecznego przesyłania plików, montowania zdalnych katalogów i tunelowania dowolnych połączeń TCP.
Zabezpieczenie komunikacji polega na:
Używać będziemy implementacji OpenSSH, której podstawowe pakiety to zwykle
openssh (instaluje go automatycznie każda znana mi dystrybucja) oraz
openssh-server (to już często trzeba doinstalować samodzielnie).
SSH oferuje kilka metod uwierzytelnienia, z najpopularniejszymi „password” (na podstawie hasła), „keyboard interactive” (bardziej ogólna metoda, w praktyce też najczęściej sprowadzająca się do podania hasła) oraz „public key” opisana w dalszej części.
Używanie uwierzytelnienia opartego o hasło jest o tyle wygodne, że nie wymaga specjalnej konfiguracji. Natomiast obarczone jest wieloma wadami z punktu widzenia bezpieczeństwa oraz wygody:
Generujmy parę kluczy (programem ssh-keygen), klucz prywatny pozostaje po stronie klienta (w pliku .ssh/id_rsa lub .ssh/id_dsa), a klucz publiczny jest wgrywany na serwer. Klucze publiczne są zapisywane na serwerze jeden po drugim w pliku .ssh/authorized_keys na koncie tego użytkownika, na które chcemy się logować; do dodania klucza na serwer można użyć także narzędzia ssh-copy-id (po stronie klienta).
Standardowo używa się osobnego klucza prywatnego dla każdego komputera (i konta), z którego łączymy się ze światem, oraz wgrywa się odpowiadające klucze publiczne na te serwery i konta, do których chcemy się logować. Klucz prywatny można zabezpieczyć hasłem, co utrudni użycie klucza w przypadku przejęcia pliku z kluczem.
„Losowo” wygenerowany klucz nie jest narażony na ataki słownikowe, a atak siłowy, ze względu na długość klucza, wymaga ogromnych nakładów. Protokół SSH nie przesyła klucza prywatnego nawet w postaci zaszyfrowanej, co zabezpiecza przed atakiem "man in the middle". Wadą tego rodzaju uwierzytelnienia jest konieczność przechowywania plików z kluczami i chronienia plików z kluczami prywatnymi.
Zarządzaniem kluczami podczas jednej sesji lokalnej może zajmować się program ssh-agent, do którego często systemowy interfejs użytkownika (Gnome, KDE itp.) oferuje nakładki graficzne. Można też używać tekstowego polecenia ssh-add, aby na czas sesji zapamiętać otwarty klucz. Uwalnia to użytkownika od konieczności wielokrotnego wpisywania hasła odblokowującego klucz.
OpenSSH pozwala dość dokładnie skonfigurować serwer i dostosować go do wymagań bezpieczeństwa, wygody i innych. Możliwe jest m.in. stosowanie ograniczeń na dostępne algorytmy, sposoby uwierzytelnienia, liczbę otwartych sesji itp. w zależności od użytkownika i hosta, z którego się łączy. Można także wymóc stosowanie uwierzytelnienia i limitów opartych o PAM (poprzednie zajęcia). Standardowo konfiguracja serwera zapisywana jest w pliku /etc/ssh/sshd_config.
Szczegóły: man sshd_config.
Większość opcji dla klienta SSH można podać bezpośrednio w wierszu poleceń, ale dla wygody można także zapisać je w pliku konfiguracyjnym, w razie potrzeby uzależniając konfigurację od serwera docelowego. Konfiguracja klienta SSH zapisywana jest w plikach /etc/ssh/ssh_config (domyślna dla systemu) i ~/.ssh/config (dla użytkownika).
Szczegóły: man ssh oraz man ssh_config
Służą do tego protokoły i odpowiadające im aplikacje scp (najprostsza), sftp i rsync (bardziej zaawansowane), wewnętrznie używające protokołu SSH.
Cechą charakterystyczną sftp jest zbiór poleceń analogicznych do poleceń FTP, natomiast cechą charakterystyczną rsync jest różnicowe przesyłanie plików – sprawdzanie (poprzez porównywanie skrótów), które pliki lub bloki większych plików uległy zmianie i przesyłanie tylko tych zmienionych. Oba polecenia pozwalają przesyłać całe drzewa katalogów z możliwością filtrowania po rodzaju pliku, przenoszenia uprawnień itp.
Uwaga: SFTP jest niezależnie zdefiniowanym protokołem (funkcjonalnie wzorowanym na FTP), a nie jest tylko tunelowaniem zwykłego FTP w połączeniu SSH (ani tym bardziej SSL).
Pośrednio z SSH do transferu plików mogą korzystać także cvs, svn czy git.
Wszyscy znamy (a przynajmniej powinniśmy) mechanizm NFS do tworzenia sieciowych systemów plików - montowania lokalnie katalogów serwera plików. Zwykły użytkownik może osiągnąć to samo: zamontować sobie katalog z innego komputera. Jedyny warunek: trzeba mieć konto na ,,serwerze''.
Do takiego ad hoc montowania służy program sshfs. Do zamontowania zdalnego
katalogu używamy polecenia
sshfs komputer:katalog punkt-montowania
Punkt montowania to katalog na lokalnym komputerze (najlepiej pusty ;-). Pierwszy argument to katalog na zdalnym komputerze w typowej notacji używanej przez scp itp. Trzeba mieć do niego odpowiednie prawa.
Od tego momentu cała struktura tego katalogu jest widoczna lokalnie. Polecenie akceptuje większość opcji ssh i jescze trochę, szczegóły jak zwykle w man.
Aby odmontować taki katalog piszemy
fusermount -u punkt-montowania
To polecenie zdradza rodzaj użytego ,,oszustwa'': korzystamy z modułu jądra FUSE (Filesystem in USErspace).
Bezpieczne tunelowanie połączeń TCP ogromnie zwiększa gamę zastosowań SSH. Istnieją dwa rodzaje tuneli ze względu na kierunek:
-L
): połączenia do podanego lokalnego portu klienta są przekazywane na serwer SSH i stamtąd łączymy się z docelowym serwerem, np.
ssh -L 1234:www.w3.org:80 students.mimuw.edu.pl
spowoduje otwarcie na lokalnej maszynie portu 1234 do nasłuchiwania, a połączenie do tego portu zostanie przekazane (w tunelu) na students i stamtąd otwarte (już bez ochrony) do www.w3.org na port 80.
-R
): połączenia do podanego portu na serwerze SSH są przekazywane na maszynę lokalną i z niej łączymy się z docelowym adresem, np.
ssh -R 1234:localhost:8080 students.mimuw.edu.pl
spowoduje, że na students zostanie otwarty do nasłuchiwania port 1234, a połączenia przychodzące do tego portu zostaną (w tunelu) przekazane na lokalną maszynę (z której wywoływaliśmy ssh) i tam (bo napisaliśmy localhost
) zostaną skierowane do portu 8080.
Uwaga: domyślna konfiguracja SSH (także na students) powoduje, że porty otwarte na serwerze nie są widoczne z zewnątrz, a jedynie poprzez lokalny interfejs loopback („localhost”); można to zmienić w konfiguracji serwera za pomocą opcji GatewayPorts
.
Można także tworzyć w konfiguracji „urządzenia tunelowe” czy tunelować protokół SOCKS, w co się już nie wgłębiamy.
źródło obrazka: http://jakilinux.org/aplikacje/sztuczki-z-ssh-2-tunele/
OpenPGP to otwarty standard IETF oparty o wcześniejszy, obecnie częściowo komercyjny, produkt PGP (Pretty Good Privacy). Standard ten opisuje metody zabezpieczania poczty elektronicznej i plików. Podstawą jest użycie kryptografii klucza publicznego, a gdy przyjrzeć się szczegółom, okaże się, że używana jest także kryptografia klucza sekretnego ("szyfrowanie symetryczne"), bezpieczne funkcje haszujące ("skrót kryptograficzny"), kompresja oraz konwersja radix64.
Dwie najważniejsze funkcje to podpisywanie wiadomości (kluczem prywatnym nadawcy) i szyfrowanie wiadomości (kluczem publicznym odbiorcy). Do weryfikacji podpisu potrzebny jest klucz publiczny nadawcy, a do odszyfrowania wiadomości klucz prywatny odbiorcy. Podpisywanie i szyfrowanie mogą być stosowane niezależnie od siebie.
Przyjrzyjmy się operacjom nieco bardziej szczegółowo.
Podpisywanie polega na:
Szyfrowanie polega na:
Popularną otwartą implementacją standardu jest GnuPG. Pod Linuksem dostępne są polecenia: gpg i gpg2, którymi można wykonywać operacje na plikach (także zapisanych wiadomościach) i zarządzać kluczami.
Sama aplikacja może być także używana do wykonywania na plikach pojedynczych operacji – składników standardu PGP, z czego użyteczne może być np. szyfrowanie plików na dysku czy weryfikacja spójności plików pobranych z sieci (wykorzystywane przez menedżery pakietów rpm i deb).
Aby wygenerować klucz piszemy
gpg --gen-key
Inne popularne polecenia opisano w Ważniaku, a wszystkie w man gpg.
Użycie OpenPGP w poczcie elektronicznej (do czego został stworzony) jest wygodniejsze gdy użyjemy klientów poczty wyposażonych we wsparcie dla tego standardu. Przykładem może być Thunderbird z dodatkiem Enigmail. Pozwala on nie tylko na podpisywanie, weryfikację, szyfrowanie i odszyfrowanie wiadomości, ale także na zarządzanie kluczami PGP/GPG zainstalowanymi na naszym komputerze.
Standardem podobnym w idei i zastosowaniach do PGP jest S/MIME. Szyfrowanie i podpisywanie odbywa się na tej samej zasadzie. Różnica dotyczy zarządzania certyfikatami (wizytówki z kluczami publicznymi, często same podpisane innym kluczem): w S/MIME muszą być uwierzytelnione przez instytucję uwierzytelniającą i tworzą drzewo zaufania w modelu PKI (public key infrastructure), natomiast w PGP można używać certyfikatów wygenerowanych lokalnie, których wartość może być oceniana poprzez tzw. sieć zaufania (Web of Trust).
Schemat PKI zostanie zaprezentowany na przyszłych zajęciach na przykładzie protokołu SSL/TLS.
Zainstaluj serwer SSH, np:
su -c "apt-get install -y openssh-server"
Załóż nowego użytkownika (zwanego tutaj U) z katalogiem domowym.
1. Skonfiguruj serwer SSH:
a) ogranicz wersję protokołu do 2,
b) ogranicz dostępne algorytmy szyfrowania i skrótu wedle własnego uznania,
c) zabroń logowania użytkownikom innym niż U lub guest,
d) zezwól U na logowanie jedynie przy pomocy klucza, a guest także za pomocą hasła,
2.Klucze i konfiguracja klienta.
a) Jako U stwórz parę kluczy, klucz prywatny chroniony hasłem.
b) Zainstaluj klucz publiczny na lokalnym komputerze, aby przetestować ustawienie z 1.d).
c) Zainstaluj klucz publiczny na students.
d) Skonfiguruj klienta ssh tak, aby Twój login na students był używany jako domyślna nazwa użytkownika, gdy U łączy się ze students, oraz aby używany był odpowiedni klucz.
3. Tunel
a) Połącz się ze students tak, aby można było uruchamiać zdalnie programy okienkowe (np. kcalc),
b) Utwórz tunel SSH między lokalną maszyną a students tak, aby po wpisaniu w przeglądarkę na lokalnym komputerze http://localhost:7000 wyświetlała się strona www.w3.org,
c) jak jednorazowo dokonać powyższych czynności, a jak skonfigurować je jako domyślne dla połączenia ze students?
4. Kopiowanie
Używając programu rsync lub sftp skopiuj ze students katalog ze scenariuszami labów z BSK (/home/students/inf/PUBLIC/BSK). Dodatkowe wymagania, które prowadzący może postawić podczas prezentacji:
* włączenie / wyłączenie kompresji
* kopiowanie lub nie atrybutów plików
* pominięcie plików określonego typu
(doinstalowanie rsync: su -c "apt-get install -y rsync")
5. PGP
a) Utwórz własny klucz PGP (jeśli już posiadasz dla swojego konta studenckiego nie musisz tworzyć nowego).
b) Wyślij do prowadzącego podpisany PGP email zawierający rozwiązanie: skrypt z poleceniami oraz pliki konfiguracyjne, które zostały utworzone lub zmienione.
Zarząd Green Forest banku ze względu na panującą pandemie, postanowił ograniczyć zatrudnienie do 5 pracowników (w tym dwóch dyrektorów) Ponadto zarząd postanowił przejść całkowicie na pracę zdalną, aby to było możliwe bez narażania bezpieczeństwa banku trzeba wprowadzić stosowne zabezpieczenia. Zostałeś poproszony o ich przygotowanie. Oto ich zestaw:
Jako rozwiązanie należy umieścić w Moodle wszystkie powstałe skrypty i pliki konfiguracyjne oraz wygenerowane podpisy i klucze. Ponadto należy załączyć plik readme z adresami IP serwera z danymi Green Forest oraz IP komputera dyrektora. Jako wyżej wymieniony adres dyrektora można przyjąć albo adresy IP komputerów z laboratorium lub też adresy wygenerowanych przez siebie maszyn wirtualnych. Należy opisać, które z tych sytuacji mają miejsce.
Zalecana jest praca w parach (partner będzie zwany "sąsiadem"), przy czym od każdej osoby wymagane jest wykonanie wszystkich poleceń z listy.
0. Przygotowanie.
a) Zainstaluj serwer SSH i program rsync lub scp.
Na przykład (jako root):
apt-get update
apt-get install openssh-server rsync
b) załóż konta, hasła i katalogi domowe użytkownikom U1 i U2 (nazwy umowne, można wybrać własne).
useradd -m -s /bin/bash U1
passwd U1
useradd -m -s /bin/bash U2
passwd U2
1. Konfiguracja serwera SSH
a) Ogranicz dostępne algorytmy szyfrowania oraz skrótu; przykładowa lista: blowfish-cbc, aes192-cbc i aes256-cbc oraz hmac-sha1 i hmac-ripemd160.
c) Zezwól na logowanie jedynie użytkownikom U1 i U2.
d) Używając m.in. bloków Match:
- zezwól U1 łączyć się za pomocą hasła jedynie z komputera sąsiada, a z dowolnych komputerów za pomocą klucza publicznego,
- wysyłaj użytkownikowi U1 spersonalizowane powitanie,
- zezwól U2 łączyć się jedynie z sieci lokalnej labu BSK i tylko pomocą klucza publicznego,
- zezwól na korzystanie z tunelowania X11 tylko użytkownikowi U2.
2. Konfiguracja klienta SSH
a) Jako U2 stwórz parę kluczy, klucz prywatny chroniony hasłem.
b) Zainstaluj klucz publiczny na komputerze sąsiada (tymczasowa zmiana konfiguracji serwera jest dopuszczalna).
c) Skonfiguruj klienta ssh dla użytkownika U2 tak, aby łączył się z komputerem sąsiada używając klucza i automatycznie otwierał tunelowanie X11 (przetestuj na prostej aplikacji okienkowej, np. gedit).
d) Skonfiguruj klienta ssh dla użytkownika U1 tak, aby przy połączeniu z komputerem sąsiada otwierał się tunel TCP - taki że po wpisaniu w przeglądarkę na lokalnym komputerze http://localhost:7000 wyświetla się strona www.w3.org,
3. PGP (jedna osoba wykonuje jako U1, druga jako U2, wedle uznania możesz podawać swoje własne lub wymyślone nazwisko i adres e-mail):
a) Utwórz parę kluczy PGP.
b) Skopiuj swój klucz publiczny do sąsiada (oczywiście używając jednego z bezpiecznych poleceń opartych o SSH); zaimportuj klucz otrzymany od sąsiada.
c) Plik z konfiguracją serwera SSH, z dodanym w komentarzu swoim imieniem i nazwiskiem, zaszyfruj kluczem publicznym sąsiada i podpisz swoim kluczem prywatnym.
d) Wymień się zaszyfrowanymi i podpisanymi plikami, a następnie odszyfruj i zweryfikuj podpis otrzymanego pliku.
Zalecana jest praca w parach (partner będzie zwany "sąsiadem"), przy czym od każdej osoby wymagane jest wykonanie wszystkich poleceń z listy.
Jeśli ktoś musi pracować samodzielnie, to potrzebuje dwóch komputerów, na jednym konfiguruje stronę serwera, na drugim stronę klienta.
We wszystkich przypadkach przyjmujemy, że użytkownicy używają tej samej nazwy po stronie klienta i na serwerze (nie logują się na cudze konta).
0. Przygotowanie.
a) Zainstaluj serwer SSH i program rsync lub scp. Na przykład (jako root):
apt-get update
apt-get install openssh-server rsync
b) załóż konta, hasła i katalogi domowe użytkownikom u1 i u2.
useradd -m -s /bin/bash u1
passwd u1
useradd -m -s /bin/bash u2
passwd u2
useradd -m -s /bin/bash u3
passwd u3
c) Stwórz grupę ssh_users i dodaj do niej użytkowników u1 i u2 oraz guest.
groupadd ssh_users
usermod -a -G ssh_users u1
usermod -a -G ssh_users u2
usermod -a -G ssh_users guest
1. Konfiguracja serwera SSH
a) Ogranicz dostępne algorytmy szyfrowania oraz skrótu; przykładowa lista: blowfish-cbc, aes192-cbc i aes256-cbc oraz hmac-sha1 i hmac-ripemd160.
b) Zezwól na logowanie tylko użytkownikom należącym do grupy ssh_users.
c) Używając m.in. bloków Match:
- wysyłaj użytkownikowi u1 spersonalizowane powitanie (baner),
- zezwól u1 łączyć się za pomocą hasła jedynie z komputera sąsiada, a z dowolnych komputerów za pomocą klucza publicznego,
- pozostałym członkom grupy ssh_users zezwól logować się tylko pomocą klucza publicznego,
- zezwól (tylko) guest łączącemu się z labu BSK na korzystanie z tunelowania X11.
2. Konfiguracja klienta SSH
a) Skonfiguruj klienta ssh dla użytkownika guest tak, aby automatycznie otwierał tunelowanie X11 (przetestuj na prostej aplikacji okienkowej, np. gedit).
b) Jako u2 stwórz parę kluczy SSH, klucz prywatny chroniony hasłem.
c) Zainstaluj klucz publiczny na komputerze sąsiada (tymczasowa zmiana konfiguracji serwera jest dopuszczalna).
d) Skonfiguruj klienta ssh dla użytkownika u2 tak, aby przy połączeniu z komputerem sąsiada otwierał się tunel TCP - taki że po wpisaniu w przeglądarkę na *zdalnym* komputerze http://localhost:7000
wyświetla się strona www.mimuw.edu.pl
3. PGP (jedna osoba wykonuje jako u1, druga jako u2, wedle uznania można podawać swoje własne lub wymyślone nazwisko i adres e-mail):
a) Utwórz parę kluczy PGP.
b) Skopiuj swój klucz publiczny do sąsiada (oczywiście używając jednego z bezpiecznych poleceń opartych o SSH); zaimportuj klucz otrzymany od sąsiada.
c) Plik z konfiguracją serwera SSH, z dodanym w komentarzu swoim imieniem i nazwiskiem, zaszyfruj kluczem publicznym sąsiada i podpisz swoim kluczem prywatnym. (Podpowiedź: to można zrobić jednym poleceniem gpg)
d) Wymień się zaszyfrowanymi i podpisanymi plikami, a następnie odszyfruj i zweryfikuj podpis otrzymanego pliku.
Zalecana jest praca w parach. Jeśli ktoś musi pracować samodzielnie, to potrzebuje dwóch komputerów.
Na jednym komputerze, który oznaczymy A, będziemy konfigurować stronę serwera SSH, a na drugim oznaczonym B stronę klienta. Obie konfiguracje muszą ze sobą współgrać i warto je przygotowywać równolegle, wspólnymi siłami.
Zasadniczo przyjmujemy, że użytkownicy używają tej samej nazwy po stronie klienta i na serwerze.
0. Przygotowanie.
a) Zainstaluj serwer SSH (można pominąć po stronie klienta) i program rsync lub scp. Na przykład (jako root):
apt-get update
apt-get install openssh-server rsync
b) załóż konta, hasła i katalogi domowe użytkownikom u1, u2, u3.
useradd -m -s /bin/bash u1
passwd u1
useradd -m -s /bin/bash u2
passwd u2
useradd -m -s /bin/bash u3
passwd u3
c) Na serwerze (A) stwórz grupę ssh_users i dodaj do niej użytkowników u1 i u2 oraz guest.
groupadd ssh_users
usermod -a -G ssh_users u1
usermod -a -G ssh_users u2
usermod -a -G ssh_users guest
Serwer ssh można zrestartować np. tak:
service ssh restart
ZADANIA:
1. Konfiguracja serwera SSH (na A)
a) Zezwól na logowanie tylko użytkownikom należącym do grupy ssh_users.
Używając m.in. bloków Match:
b) pozwól użytkownikowi guest logować się za pomocą hasła i wysyłaj mu spersonalizowane powitanie ("baner"),
c) zezwól u1 łączyć się za pomocą hasła jedynie z komputera B, a z dowolnych komputerów za pomocą klucza publicznego,
d) pozostałym zezwól na logowanie tylko za pomocą klucza publicznego.
2. Konfiguracja klienta SSH (na B)
a) Skonfiguruj (w pliku) klienta ssh dla użytkownika guest tak, aby po wpisaniu polecenia
ssh alicja
klient łączył się z serwerem A, wchodził na konto guest (uwierzytelnienie może odbywać się za pomocą hasła) i automatycznie otwierał tunelowanie X11 (przetestuj na prostej aplikacji okienkowej, np. gedit) oraz włączał kompresję.
(zamiast "alicja" możesz użyć innego imienia lub słowa)
b) Jako u2 stwórz parę kluczy SSH. Zainstaluj klucz publiczny na komputerze A. Sprawdź działanie po zakończeniu konfiguracji serwera.
3. Tunel.
a) Na komputerze B wyedytuj zawartość pliku /var/www/index.html tak, aby było wiadomo, z którego komputera pochodzi wyświetlana strona. Sprawdź poprzez http://localhost.
b) Łącząc się ssh z B do A jako u2 otwórz odpowiedni tunel SSH, który sprawi, że po wpisaniu w przeglądarkę na komputerze A http://localhost:7000 wyświetli się strona serwowana przez B.
c) Spraw, aby ta strona wyświetliła się również, gdy z innego komputera (np. B, ale teoretycznie także z każdego innego w labie) wejdzie się pod adres http://solabXX:7000, gdzie XX to numer komputera A.
4. Podstawy PGP/gpg. Wszystkie polecenia wykonują obie osoby, wedle uznania można podawać swoje własne lub wymyślone nazwisko i adres e-mail:
a) Utwórz klucz (a właściwie parę publiczny/prywatny).
b) Skopiuj swój klucz publiczny do sąsiada (oczywiście używając jednego z bezpiecznych poleceń opartych o SSH); zaimportuj klucz otrzymany od sąsiada.
c) Plik z konfiguracją SSH (klienta lub serwera), z dodanym w komentarzu swoim imieniem i nazwiskiem, zaszyfruj (kluczem publicznym sąsiada) i podpisz (swoim kluczem prywatnym). Podpowiedź: to można zrobić jednym poleceniem gpg.
d) Wymień się zaszyfrowanymi i podpisanymi plikami, a następnie odszyfruj i zweryfikuj podpis otrzymanego pliku.
Zalecana jest (współ)praca w parach, najlepiej na sąsiednich komputerach.
Indywidualiści będą potrzebować dwóch komputerów.
Zainstaluj serwer SSH (każdy na swoim komputerze) i program rsync, na
przykład:
sudo apt-get update
sudo apt-get install openssh-server rsync
Załóż konta, hasła i katalogi domowe użytkownikom U1 i U2, np.
useradd -m -s /bin/bash U1
passwd U1
...
Serwer ssh można zrestartować np. tak:
service ssh restart
ZADANIA:
1. Skonfiguruj serwer SSH:
a) Ogranicz wersję protokołu do 2.
b) Ogranicz dostępne algorytmy szyfrowania i skrótu wedle własnego uznania.
c) Zezwól U1 na logowanie jedynie przy pomocy klucza, a U2 przy pomocy hasła.
2. Klucze i konfiguracja klienta.
a) Jako U1 stwórz parę kluczy, klucz prywatny chroniony hasłem. Umieść klucz
publiczny na drugim komputerze.
b) Zainstaluj klucz publiczny również na students.
c) Skonfiguruj klienta ssh tak, aby Twój login na students był używany jako
domyślna nazwa użytkownika, gdy U1 łączy się ze students, oraz aby używany
był odpowiedni klucz.
3. Kopiowanie
a) Używając programu rsync skopiuj (jako U1) ze students katalog
/home/staff/iinf/zbyszek/Obrazy.
b) Dodatkowo prowadzący może poprosić Cię o włączenie/wyłączenie kompresji.
4. PGP
a) Utwórz własną parę kluczy PGP.
b) Wyślij prowadzącemu klucz publiczny do zaimportowania.
c) Plik z konfiguracją SSH (klienta lub serwera), z dodanym w komentarzu
swoim imieniem, nazwiskiem i loginem,
podpisz (kluczem prywatnym) i wyślij do prowadzącego emalią.
Wszystkie wydawane polecenia należy zapisać w skryptach wykonywalnych, będą one częścią rozwiązania. Sprawdzający będzie jednak wymagał osobistej prezentacji rozwiązania.
Jeśli trzeba zainstaluj serwer SSH, rsync i sshfs, na przykład:
sudo apt-get update sudo apt-get install openssh-server rsync sshfs
Załóż konto, hasło i katalog domowy użytkownikowi U.
Serwer ssh można zrestartować np. tak:
service ssh restart
Uwaga: U oznacza nazwę generyczną, ponieważ do rozwiązania każdemu potrzebne
będą dwie maszyny, z których jedna będzie używana jako serwer SSH (nazwiemy ją S), a druga jako klient SSH (nazwiemy ją K). Serwer na danym komputerze może konfigurować jedna osoba, natomiast z jednej maszyny jako klienta może korzystać wiele osób, o ile użyją różnych kont. Proponuję komputer lokalny potraktować jako S, a jakiś inny w labie traktować jako K oraz wymyślić unikalną nazwę użytkownika.
a) Stwórz guestowi parę kluczy SSH, klucz prywatny chroniony hasłem. Umieść klucz publiczny na komputerze students.
b) Użytkownikowi U na maszynie K utwórz parę kluczy SSH i wykonaj czynności umożliwiające U logowanie się z kluczem z K na S.
c) Skonfiguruj klienta ssh tak, aby Twój login na students był używany jako domyślna nazwa użytkownika, gdy guest łączy się ze students, oraz aby używany był odpowiedni klucz.
a) Ogranicz wersję protokołu do 2.
b) Zabroń zdalnego logowania przez roota.
c) Zezwól U na zdalne logowanie jedynie przy pomocy klucza, a guest także przy pomocy hasła.
a) Ustaw w ten sposób montowanie, żebyś mógł obejrzeć w przeglądarce odpalonej na komputerze w labie BSK dowolny plik z katalogu /home/students/inf/PUBLIC/BSK/Obrazy z maszyny students (oczywiście tylko taki, do którego masz uprawnienia).
b) Używając programu rsync skopiuj (jako guest) ze students katalog
/home/students/inf/PUBLIC/BSK.
c) Dodatkowo prowadzący może poprosić Cię o włączenie/wyłączenie kompresji oraz o pominięcie plików określonego typu.
a) Utwórz własną parę kluczy PGP.
b) Wyślij prowadzącemu klucz publiczny do zaimportowania.
c) Pliki skryptów z poleceniami, z dodanym w komentarzu swoim imieniem, nazwiskiem i loginem, podpisz (kluczem prywatnym) i wyślij do prowadzącego emalią.
Wszystkie wydawane polecenia należy zapisać w skryptach wykonywalnych,
będą one częścią rozwiązania. Sprawdzający będzie jednak wymagał osobistej
prezentacji rozwiązania. zadanie bedziecie państwo wykonywać częściowo w parach
Jeśli trzeba zainstaluj serwer SSH, rsync i sshfs, na przykład:
sudo apt-get update
sudo apt-get install openssh-server rsync sshfs
Załóż kontoa, hasło i katalogi domowe użytkownikom u1 , u2 i u3 o
Serwer ssh można zrestartować np. tak:
service ssh restart.
wygeneruj klucze dla u1 i u2 i u3 oraz roota skopiuj na students.
)
Skonfiguruj klienta ssh tak, aby Twój login na students był używany jako
domyślna nazwa użytkownika, gdy u1 łączy się ze students, oraz aby
używany był odpowiedni klucz
2. Skonfiguruj serwer SSH:
a).pozwól u1 na logowanie się tylko przy pomocy klucza
b). zakaż logowania u2.
c).pozwól rootowi na logowanie tylko przy pomocy klucza z komputera partnera z pary
d) zakaż logowania wszystkim użytkownikom z maszyny której ip poda ci oprowadzaczy
e) ogranicz wersje protokołu do 2
3. Kopiowanie i montowanie
a) Ustaw w ten sposób montowanie, żebyś mógł obejrzeć w przeglądarce
odpalonej na komputerze w labie BSK dowolny plik z katalogu
/home/students/inf/PUBLIC/BSK/Obrazy z maszyny students (oczywiście tylko taki,
do którego masz uprawnienia).
b) Używając programu rsync skopiuj (jako guest) ze students katalog
/home/students/inf/PUBLIC/BSK.
c) Dodatkowo prowadzący może poprosić Cię o włączenie/wyłączenie kompresji
oraz o pominięcie plików określonego typu.
4. PGP
a) Utwórz własną parę kluczy PGP.
b) Wyślij prowadzącemu klucz publiczny do zaimportowania.
c) Pliki skryptów z poleceniami, z dodanym w komentarzu
swoim imieniem, nazwiskiem i loginem,
oprócz skryptów będzie wymagana osobista prezentacja zadania
Zarząd księgarni Radagast postanowił iść z duchem czasu i umożliwić swoim pracownikom pracę zdalną. Zostałeś poproszony o przygotowanie odpowiedniej konfiguracji środowiska, która umożliwi bezpieczne wprowadzenie tej zmiany.
Jako rozwiązanie należy umieścić w Moodle wszystkie powstałe skrypty i pliki konfiguracyjne oraz wygenerowane podpisy i klucze. Ponadto należy załączyć plik readme z adresami ip serwera Radagastu, ip komputera managera. Jako wyżej wymienione adresy managera przyjąć albo adresy ip komputerów z laboratorium, lub też adresy wygenerowanych przez siebie maszyn wirtualnych.
Jako loginy należy przyjąć nazwiska z pliku do zadania o ACL (manager to inne określenie szefa sali).
Zarząd Green Forest banku ze względu na panującą pandemie, postanowił ograniczyć zatrudnienie do 5 pracowników (w tym dwóch dyrektorów) Ponadto zarząd postanowił przejść całkowicie na pracę zdalną, aby to było możliwe bez narażania bezpieczeństwa banku trzeba wprowadzić stosowne zabezpieczenia. Zostałeś poproszony o ich przygotowanie. Oto ich zestaw:
Jako rozwiązanie należy umieścić w Moodle wszystkie powstałe skrypty i pliki konfiguracyjne oraz wygenerowane podpisy i klucze. Ponadto należy załączyć plik readme z adresami IP serwera z danymi Green Forest oraz IP komputera dyrektora. Jako wyżej wymieniony adres dyrektora można przyjąć albo adresy IP komputerów z laboratorium lub też adresy wygenerowanych przez siebie maszyn wirtualnych. Należy opisać, które z tych sytuacji mają miejsce.