Łączność sieciowa Przed wykonaniem ćwiczenia Na komputer z systemem Windows pobierz pakiet PuTTY: https://the.earth.li/~sgtatham/putty/latest/w32/putty.zip Pliki rozpakuj do dowolnego katalogu, w którym masz prawo do zapisu. PuTTY to emulator terminala dla Windows, który umożliwia połączenia przez ssh, telnet, port szeregowy oraz kilka innych protokołów. Informacja: wklejanie tekstu do putty odbywa się prawym przyciskiem myszy, a zaznaczenie jakiegokolwiek tekstu automatycznie kopiuje go do schowka. Konfiguracja stałego adresu IP a. Linia komend b. Pliki konfiguracyjne a) Polecenie ip Przypisywanie adresu IP do interfejsu: # ip addr add 192.168.50.5 dev eth1 $ sudo ip addr add 192.168.50.5 dev eth1 Uwaga: Ustawienia te zostaną utracone po restarcie systemu Sprawdzanie adresu IP: # ip addr show $ sudo ip addr show Przykład 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 00:0c:29:28:fd:4c brd ff:ff:ff:ff:ff:ff inet 192.168.50.2/24 brd 192.168.50.255 scope global eth0 inet6 fe80::20c:29ff:fe28:fd4c/64 scope link 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 00:0c:29:28:fd:56 brd ff:ff:ff:ff:ff:ff inet 192.168.50.5/24 scope global eth1 inet6 fe80::20c:29ff:fe28:fd56/64 scope link
Usuwanie adresu IP: # ip addr del 192.168.50.5/24 dev eth1 $ sudo ip addr del 192.168.50.5/24 dev eth1 Włączanie interfejsu IP: # ip link set eth1 up $ sudo ip link set eth1 up Wyłączanie interfejsu IP: # ip link set eth1 down $ sudo ip link set eth1 down b) Pliki konfiguracyjne: Przykładowy plik konfiguracyjne dla interfejsu eth0 w systemie Linux. Należy zauważyć, że na komputerze wirtualnym ten interfejs będzie się nazywał zupełnie inaczej. ## Configure eth0 # vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" NM_CONTROLLED="yes" ONBOOT=yes HWADDR=A4:BA:DB:37:F1:04 TYPE=Ethernet BOOTPROTO=static NAME="System eth0" UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 IPADDR=192.168.1.44 NETMASK=255.255.255.0 ## Konfiguracja bramy domyślnej # vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=centos6 GATEWAY=192.168.1.1 ## Restart Interfejsu sieciowego # /etc/init.d/network restart
Zarządzanie usługami w systemie CentOS 7: W systemie CentOS 7 uruchamianiem usług zajmuje się proces systemd. Podstawowe polecenia umożliwiające uruchamianie i wyłączanie usług przestawione zostały poniżej. Uruchomienie usługi (jednorazowo, w momencie wydania polecenia): # systemctl start nazwa-uslugi Zatrzymanie usługi # systemctl stop nazwa-uslugi Ponowne uruchomienie usługi: # systemctl restart nazwa-uslugi Sprawdzenie stanu usługi: # systemctl status nazwa-uslugi Automatyczne uruchamianie usługi przy starcie systemu (nie powoduje uruchomienia usługi w momencie wydania polecenia, a dopiero po restarcie): # systemctl enable nazwa-uslugi Wyłączenie automatycznego uruchamiania usługi: # systemctl disable nazwa-uslugi Więcej na temat systemd: https://www.dobreprogramy.pl/mariushko/poradnik-systemd-cz.-1,67627.html Zezwolenie na ruch sieciowy na wskazany port w zaporze ogniowej W systemie CentOS jest domyślnie włączona i skonfigurowana zapora ogniowa (ang. firewall). Jest to funkcja systemu służąca do filtrowania ruchu sieciowego. Domyślnie wszystkie połączenia wychodzące są dozwolone, ale przychodzące trzeba odblokować. Odblokowanie portu dla całego świata następuje po wydaniu polecenia: # firewall-cmd --permanent --add-port=23/tcp Odblokowanie portu ze wskazaniem źródłowego adresu IP (lub podsieci): # firewall-cmd --permanent add-rich-rule=' rule family="ipv4" source address="192.168.0.0/24" port protocol="tcp" port="23" accept Po dodaniu reguł na stałe (z przełącznikiem --permanent) należy przeładować bieżący zestaw reguł: # firewall-cmd --reload Oczywiście w powyższych poleceniach port nr 23, nazwę protokołu oraz adres podsieci źródłowej należy dostosować do potrzeb. Pełny opis systemu filtracji pakietów w Linuksie jest poza zakresem tego ćwiczenia. Więcej na ten temat można znaleźć pod adresem: https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalldon-centos-7
Instalacja i uruchomienie usługi telnetd Protokół telnet umożliwia podłączenie się do wirtualnego terminala zdalnego systemu, w sposób podobny jak w konsoli tekstowej. Ze względu na fakt, że jest to protokół nieszyfrowany, należy unikać używania go w jakichkolwiek istotnych systemach. Protokół ten jest jednak wykorzystywany przez wiele urządzeń sieciowych (proste routery, kamery, serwery NAS i inne) do ich konfiguracji, zwłaszcza w przypadku konieczności uzyskania dostępu do urządzenia po zapisaniu nieprawidłowej konfiguracji. Protokół telnet standardowo używa portu tcp 23. Jeżeli jednak tylko istnieje taka możliwość, należy zamiast telnetu używać SSH. Ćwiczenie: 1. Zainstaluj serwer telnet z pakietu telnet-server. Pakiet ten zainstaluje usługę o nazwie telnet.socket 2. Uruchom usługę telnet.socket 3. Połącz się przy pomocy programu telnet na adres localhost, spróbuj zalogować się na konto root i konto student. Czy na oba konta udało się zalogować? 4. Sprawdź adres IP systemu i spróbuj połączyć się z komputera hosta przy pomocy programu putty 5. Jeżeli połączenie się nie powiodło, odblokuj port 23 dla połączeń z sieci lokalnej i przeładuj reguły firewall Instalacja i uruchomienie usługi sshd SSH czyli Secure Shell, jest protokołem umożliwiającym połączenie ze zdalnymi systemami w trybie tekstowym (podobnie jak telnet), a ponadto umożliwia przekierowania portów, przesyłanie sesji X Windows, dzięki czemu możliwa jest zdalna praca w trybie graficznym, oraz kopiowanie plików. W większości dystrybucji linuksa, w tym w CentOS 7 usługa sshd jest domyślnie zainstalowana i uruchamiana automatycznie przy starcie systemu. Domyślna konfiguracja nie zawsze jednak jest bezpieczna. Np. w CentOS 7 możliwe jest logowanie na konto root, co jest skrajnie niebezpieczne zwłaszcza, gdy ustawiono zbyt łatwe hasło. Najważniejszą cechą SSH jest to, że transmisja jest szyfrowana. Do ustalenia klucza szyfrującego wykorzystywana jest kryptografia asymetryczna. W przeciwieństwie do protokołu SSL (HTTPS), klucz publiczny i prywatny serwera generowany jest przy pierwszym uruchomieniu usługi i nie trzeba go wykupować w firmach trzecich. Procedura ta jest automatyczna i bezobsługowa. W celu zapewnienia autentyczności pochodzenia klucza serwera, przy pierwszym połączeniu każda aplikacja kliencka wyświetla klucz serwera i pozwala użytkownikowi zdecydować, czy ufa temu kluczowi (administrator powinien podać klucz publiczny serwera do publicznej wiadomości). Po pierwszym logowaniu zwykle klucz publiczny jest zapisywany w konfiguracji (w linuksie trafia on do pliku ~/.ssh/known_hosts). Konfiguracja serwera ssh znajduje się w pliku /etc/ssh/sshd_config. Komentarze w tym pliku zaczynają się od znaku #. Domyślna konfiguracja jest podana w formie komentarzy. Aby zmienić któryś z wpisów należy odkomentować daną linię i zmodyfikować jej wartość. SSH umożliwia logowanie się przy pomocy hasła albo przy pomocy klucza publicznego.
Logowanie przy pomocy klucza publicznego wymaga dodania do pliku ~/.ssh/authorized_keys klucza publicznego w formacie openssh. Każdy klucz musi być w oddzielnej linii. Wpis taki wygląda następująco: ssh-rsa AAAAB3NzaC d6rlml komentarz-nazwa-klucza Ważne jest, żeby plik.ssh/authorized_keys, oraz katalog ~/.ssh nie były możliwe do odczytu i zapisu przez innych użytkowników, wyłącznie przez właściciela. Również katalog domowy nie może być zapisywalny przez kogokolwiek oprócz właściciela. W przeciwnym razie serwer sshd odmówi autoryzacji przy pomocy kluczy umieszczonych w niezabezpieczonym pliku. Podsumowując, uprawnienia authorized_keys muszą być ustawione na 600, a katalogu.ssh na 700. Ćwiczenie: 1. Za pomocą putty spróbuj zalogować się do systemu centos na konto root 2. Jeżeli się udało, odnajdź w pliku konfiguracyjnym sshd_config opcję odpowiedzialną za możliwość logowania na konto root i wyłącz tę możliwość. 3. Zrestartuj usługę sshd 4. Spróbuj ponownie zalogować się na konto root logowanie nie powinno się udać 5. Zaloguj się na konto student. Uprawnienia administratora możesz uzyskać przez su lub sudo 6. Przy pomocy programu puttygen.exe wygeneruj parę kluczy prywatny i publiczny. Zapisz gdzieś klucz prywatny, a klucz publiczny skopiuj i wklej do pliku ~/.ssh/authorized_keys. 7. Spróbuj ponownie połączyć się przez putty, tym razem w sekcji Connection/SSH/Auth wybierz zapisany wcześniej klucz prywatny. Zauważ, że nie było konieczne podawanie hasła do hosta (może być konieczne podanie hasła rozszyfrowującego klucz prywatny, jeżeli ustawiłeś takie hasło w pkt 6). 8. Wygeneruj klucz prywatny i publiczny w systemie linux, używając polecenia sshkeygen. Dodaj wygenerowany klucz publiczny do authorized_keys. Spróbuj zalogować się przez bez hasła na localhost Kopiowanie plików między komputerami przez poprzez ssh SCP i SFTP SSH umożliwia transfer plików przy pomocy dwóch protokołów SCP (Secure CoPy), oraz SFTP (Secure File Transfer Protocol, nie należy mylić z FTPS, czyli FTP over SSL) Protokół SCP umożliwia proste kopiowanie plików, natomiast SFTP ma większe możliwości, ale najważniejszą jego funkcją jest oczywiście transfer plików. Zapoznaj się ze stronami podręcznika dla poleceń scp oraz sftp, oraz programów pscp i psftp z pakietu putty. Spróbuj skopiować klika plików z windowsa do linuksa oraz w przeciwnym kierunku przy pomocy pscp i psftp. Spróbuj skopiować kilka plików na poziomie linuksa używając localhost jako zdalnego komputera.