Tematyka zajęć 2

  1. protokoły e-mail
  2. własności i bezpieczeństwo poczty
  3. szyfrowanie i podpisywanie wiadomości (OpenPGP)
  4. dostawcy usług
  5. szyfrowanie End-to-End - ProtonMail.com

Przebieg zajęć

  1. Wprowadzenie do tematyki zajęć, udostępnienie materiałów dydaktycznych.
  2. Krótkie omówienie historii email oraz protokołów POP3 i SMTP.
  3. Wysyłanie wiadomości przez telnet (SMTP)
  4. Konfiguracja klucza OpenPGP

Materiały do zajęć

Zadania do realizacji na zajęciach

Zadanie 1 - SMTP

  1. Zaloguj się na uczelniany serwer pocztowy korzystając z narzędzia telnet

    $ telnet pp.amu.edu.pl 587
  2. Przywitaj się z serwerem poleceniem helo.

    helo pp.amu.edu.pl
  3. Spróbuj wysłać wiadomość jako na adres prowadzącego zajęcia

    mail from: <rectorof@amu.edu.pl>
    rcpt to: <bikol@amu.edu.pl>

    Jaka jest odpowiedź serwera ?

  4. Skoro serwer odrzuca nasze żądanie, próbujmy się zalogować. W tym celu wykorzystamy rozszerzony protokół SMTP-AUTH. Polecenie ehlo zwraca listę wspieranych przez serwer opcji.

    ehlo pp.amu.edu.pl
    auth plain
    AHVzZXIAcGFzcw==

    AHVzZXIAcGFzcw== jest zakodowanym (base64) loginem i hasłem. Przykładowo można to zrobić w następujący sposób.

    $ echo -n -e '\0user\0pass' | base64
  5. Na szczęście serwer odrzuci nasze żądanie (niezależnie od podania poprawnych danych). Dlaczego ?

Zadanie 2 - Gmail

  1. Powtórz procedurę dla serwerów Gmail (smtp.gmail.com, port 587). Jaką odpowiedź tym razem uzyskujemy. Czy serwer oferuje nam uwierzytelnianie AUTH PLAIN?

Zadanie 3 - STARTTLS

  1. Większość współczesnych serwerów wymaga przynajmniej podstawowego szyfrowania komunikacji. Spróbujemy wysłać wiadomość e-mail korzystając z serwerów Gmail. Wykorzystamy do tego następujące konto: (zakodowane base64: AGR0aW4uMjAxOGxAZ21haWwuY29tAGR0aW5AdWFt).

  2. Nawiązujemy połączenie szyfrowane z serwerem Gmail:

    $ openssl s_client -starttls smtp -crlf -connect smtp.gmail.com:587
  3. Czy wynik komendy ehlo zmienił się?

  4. Logujemy się do serwera

    ehlo smtp.gmail.com
    auth plain
    AGR0aW4uMjAxOGxAZ21haWwuY29tAGR0aW5AdWFt
  5. Następnie wysyłamy wiadomość do swojego prowadzącego tak samo jak w pierwotnym protokole SMTP:

    mail from: <dtin.2018l@gmail.com>
    rcpt to: <bikol@wmi.amu.edu.pl>
    data
  6. Wpisujemy treść wiadomości (nie zapomnij o kropce na końcu)

    Date: 30 Jan 18 21:21:21
    From: dtin.2018l@gmail.com
    To: bikol@wmi.amu.edu.pl
    Subject: temat wiadomosci
    
    tresc wiadomosci
    .
  7. Kończymy sesje z serwerem poleceniem quit.

Zadanie 4 - eksperymenty z Gmail

  1. Spróbuj zmienić dane w treści wiadomości z poprzedniego zadania. Czy da się wysłać wiadomość z datą wsteczną albo podpisaną jako ktoś inny?

Zadanie 5 - Generowanie kluczy OpenPGP

  1. Podpisywanie i szyfrowanie wiadomości email to bardzo ważna umiejętność. W ramach tego zadania wygenerowane zostaną klucze OpenPGP.

  2. Aby utworzyć klucz OpenPGP należy użyć polecenia gpg. Wartości domyślne większości parametrów są odpowiednie. Proszę podać poprawne dane (imię, nazwisko i adres email) - będzie to potrzebne przy zadaniu domowym.

    $ gpg --gen-key
  3. Następnym krokiem będzie dodanie wygenerowanego klucza na serwer (w miejsce 3303CE03 wstaw id swojego klucza):

    $ gpg --send-keys --keyserver keyserver.ubuntu.com 3303CE03

Zadania zaliczeniowe

Podstawowe

Zadania podstawowe sprawdzane są automatycznie, stąd ważne jest wysłanie na odpowiedni adres i zachowanie wskazanego tytułu wiadomości. Email to zupełnie inne konto pocztowe niż (jak to sprawdzić?).

Wyniki zadań dostępne są w pliku tekstowym pod adresem https://kino.vm.wmi.amu.edu.pl/results/dtin/######.txt, gdzie ###### to sześciocyfrowy numer indeksu. Globalna lista wyników dostępna jest pod adresem https://kino.vm.wmi.amu.edu.pl/results/dtin.txt.

Zadanie 2.1 - Fałszywy email (1p.)

Wysłać email z zadanego, nieistniejącego adresu (test@test.pl) na adres . Tytuł wiadomości: “[DTIN] Z2.1 ######”, gdzie ###### to sześciocyfrowy numer indeksu.

Zadanie 2.2 - Podpis PGP (2p.)

Wysłać email podpisany cyfrowo przez OpenPGP korzystając z certyfikatu OpenPGP wygenerowanego na zajęciach na adres . Tytuł wiadomości: “[DTIN] Z2.2 ######”, gdzie ###### to sześciocyfrowy numer indeksu. Podpis wiadomości powinien być umieszczony w załączniku (PGP/MIME zamiast PGP/Inline) o nazwie signature.asc.

Zadanie 2.3 - Szyfrowanie PGP (2p.)

Wysłać zaszyfrowany przez OpenGP e-mail na adres korzystając z certyfikatu o id klucza: 3303CE03. Tytuł wiadomości: “[DTIN] Z2.3 ######”, gdzie ###### to sześciocyfrowy numer indeksu. Tutuł wiadomości powinien pozostać niezaszyfrowany. Załącznik z zaszyfrowaną wiadomością powinien mieć nazwę encrypted.asc.

Dodatkowe

Zadanie D 2- Zdalne sterowanie komputerem poprzez email (5p.)

Należy napisać skrypt bash odczytujący wiadomości e-mail (o zadanej, zdefiniowanej przez studenta formie) z zadanej skrzynki pocztowej i następnie wykonujący treść takiej wiadomości jako polecenia powłoki Bash. Wynik wywołania tych poleceń powinien być wysyłany zwrotnie również jako wiadomość e-mail. Skrypt należy uruchamiać regularnie np. co 1 minutę za pomocą narzędzia cron. Całość powinna być zaimplementowana na studenckiej maszynie wirtualnej.

Przydatne narzędzia:

  • cron
  • fetchmail
  • procmail
  • ripmime
  • bash
  • sendemail