Лабораторная работа "Настройка сети" - efanov/mephi GitHub Wiki

Содержание

Введение

В работе рассмотрена утилита ip и пакет ssh.

ip

ip — утилита, предназначенная для настройки сетевой подсистемы хоста [1].

Синтаксис команды:

ip [опции] объект команда [параметры]

Где

  • опции — необязательные глобальные настройки, которые сказываются на работе всей утилиты независимо от других аргументов. Некоторые опции:

    • -v, -version — только вывод информации об утилите и ее версии
    • -h, -human — выводить данные в удобном для человека виде
    • -s, -stats — включает вывод статистической информации
    • -d, -details — показывать ещё больше подробностей
    • -f, -family — позволяет указать протокол, с которым нужно работать, если протокол не указан, то берется на основе параметров команды. Опция должна принимать одно из значений: bridge, dnet, inet, inet6, ipx или link. По умолчанию используется inet. link означает отсутствие протокола
    • -o, -oneline — выводить каждую запись с новой строки
    • -r, -resolve — определять имена хостов с помощью DNS
    • -a, -all — применить команду ко всем объектам
    • -c, -color — позволяет настроить цветной, доступные значения: auto, always и never
    • -br, -brief — выводить только базовую информацию для удобства чтения
    • -4 — короткая запись для -f inet
    • -6 — короткая запись для -f inet -f inet6
    • -B — короткая запись для -f inet -f bridge
    • -0 — короткая запись для -f inet -f link
  • объект — тип данных, с которым надо будет работать, например: адреса, устройства, таблица arp, таблица маршрутизации и так далее. Важные объекты:

    • address или a - сетевые адреса
    • link или l - физическое сетевое устройство
    • neighbour или neigh - просмотр и управление ARP
    • route или r - управление маршрутизацией
    • rule или ru - правила маршрутизации
    • tunnel или t - настройка туннелирования
  • команда - какое-либо действие с объектом. Если команда не задана, по умолчанию используется show (показать). Важные команды:

    • add
    • change
    • del или delete
    • flush
    • get
    • list или show
    • monitor
    • replace
    • restore
    • save
    • set
    • update
  • параметры - параметры для комманд, если они требуются

ssh

Пакет OpenSSH состоит из десяти утилит:

  • Удалённый доступ:
    • ssh
    • scp
    • sftp
  • Управление ключами:
    • ssh-add
    • ssh-keysign
    • ssh-keyscan
    • ssh-keygen
  • Управление службой:
    • sshd
    • sftp-server
    • ssh-agent

Задание

ip

  1. Для просмотра IP-адресов, связанных с сетевыми интерфейсами, выполните

    ip address show
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
           valid_lft forever preferred_lft forever
    2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 08:00:27:35:1c:cc brd ff:ff:ff:ff:ff:ff
        inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
           valid_lft 82416sec preferred_lft 82416sec
        inet6 fe80::a00:27ff:fe35:1ccc/64 scope link
           valid_lft forever preferred_lft forever
    3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 08:00:27:75:86:d5 brd ff:ff:ff:ff:ff:ff
        inet 192.168.56.10/24 brd 192.168.56.255 scope global noprefixroute enp0s8
           valid_lft forever preferred_lft forever
        inet6 fe80::a00:27ff:fe75:86d5/64 scope link
           valid_lft forever preferred_lft forever
    

    Для вывода краткой информации используйте опцию -br:

    ip -br address show
    lo               UNKNOWN        127.0.0.1/8 ::1/128
    enp0s3           UP             10.0.2.15/24 fe80::a00:27ff:fe35:1ccc/64
    enp0s8           UP             192.168.56.10/24 fe80::a00:27ff:fe75:86d5/64
    

    Для просмотра адресов определённого сетевого интерфейса (в примепе ниже — enp0s3) выполните

    ip address show dev enp0s3
    2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 08:00:27:35:1c:cc brd ff:ff:ff:ff:ff:ff
        inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
           valid_lft 82167sec preferred_lft 82167sec
        inet6 fe80::a00:27ff:fe35:1ccc/64 scope link
           valid_lft forever preferred_lft forever
    

    dev означает device. Для просмотра статических адресов добавьте параметр permanent. Для просмотра динамических адресов добавьте параметр dynamic:

    ip address show dev ens160 dynamic
    2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:0c:29:0f:42:25 brd ff:ff:ff:ff:ff:ff
        altname enp2s0
        inet 172.16.132.135/24 brd 172.16.132.255 scope global dynamic noprefixroute ens160
           valid_lft 1630sec preferred_lft 1630sec
    
  2. Для добавления нового IP-адреса выполните

    ip address add 172.16.132.136/24 dev ens160

    Для удаления:

    ip address delete 172.16.132.136/24 dev ens160
  3. Для просмотра списка интерфейсов выполните

    ip link show
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 00:0c:29:0f:42:25 brd ff:ff:ff:ff:ff:ff
        altname enp2s0
    
  4. Для изменения параметров используется команда set. Соответственно, для включения и выключения интерфейсов используются команды ip link set dev <имя_интерфейса> up и ip link set dev <имя_интерфейса> down:

    ip link set dev ens160 down

    Если выполнить эту команду по SSH, ожидаемо оборвётся соединение. Для изменения MTU (maximum transmission unit) — максимального размера передаваемых пакетов — выполните следующую команду:

    ip link set mtu 4000 dev ens160

    Для изменения MAC-адреса необходимо выключить интерфейс, выполнить

    ip link set dev ens160 address AA:BB:CC:DD:EE:FF

    и после этого включить интерфейс.

  5. Для просмотра кэшированной ARP-таблицы выполните

    ip neigh show
    172.16.132.2 dev ens160 lladdr 00:50:56:eb:12:07 REACHABLE
    172.16.132.1 dev ens160 lladdr 9e:76:0e:34:2f:65 REACHABLE
    

    Для ручного добавления записи в эту таблицу выполните

    ip neigh add 172.16.132.2 lladdr 23:f6:72:44:2a:c1 dev ens160
  6. Для просмотра таблицы маршрутизации хоста выполните

    ip route show
    default via 10.0.2.2 dev enp0s3 proto dhcp src 10.0.2.15 metric 100
    10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100
    192.168.56.0/24 dev enp0s8 proto kernel scope link src 192.168.56.10 metric 101
    

    Объясните значение вывода. Выведите таблицу маршрутизации local.

  7. Для добавления маршрута выполните ip route add <подсеть>/<маска> via <шлюз> или ip route add <подсеть>/<маска> dev <интерфейс>:

    sudo ip route add 169.255.0.0 dev ens160

    Соответственно, удаление маршрута:

    sudo ip route del 169.255.0.0 dev ens160

ssh

  1. Установите SSH-сервер:

    dnf install openssh-server

    Чтобы зайти на сервер используйте команду

    ssh username@server
  2. Для изменения настроек sshd конфигурационный файл /etc/ssh/sshd_config. В нём можно изменить стандартный порт (Port), запретить вход по паролю (PasswordAuthentication), убрать возможность входа от лица суперпользователя (PermitRootLogin), разрешить вход только определённым пользователям (AllowUsers) или только пользователям определённых групп (AllowGroups). Изменим порт SSH на 2222. После изменения порта необходимо добавить его в SELinux (об этом позже в курсе). Для этого необхдимо выполнить

    semanage port -a -t ssh_port_t -p tcp 2222

    Также необходимо настроить правило межсетевого экрана:

    firewall-cmd --zone public -–add-port 2222/tcp -–permanent && firewall-cmd --reload

    Перезапустить службу sshd:

    systemctl restart sshd

    Теперь доступ к SSH будет производиться по порту 2222. Для этого при подключении необходимо явно указывать порт: ssh -p 2222 ....

  3. Для создания ключа SSH используется команда ssh-keygen:

    ssh-keygen -t ed25519 -C comment -f ~/.ssh/rocky

    Эту команду необходимо выполнить на клиенте.

    Для того, чтобы поместить ключ на сервер, используется команда ssh-copy-id:

    ssh-copy-id -p 2222 -i ~/.ssh/rocky.pub username@server

    После этого необходимо запретить вход по паролю. Выполните это самостоятельно, не забыв перезапустить службу.

    Далее, созданному ключу rocky необходимо установить соответствующие права доступа:

    chmod 400 ~/.ssh/rocky
  4. С учётом выполненных выше команд для подключения к серверу необхдимо выполнить

    ssh -i ~/.ssh/rocky -p 2222 username@server

    Чтобы не запоминать такое множество настроек, существует конфигурационный файл ~/.ssh/config. Заполнив его содержимым

    Host rocky
        HostName server
        IdentityFile ~/.ssh/rocky
        User username
        Port 2222
    

    мы можем подключаться к серверу, вводя

    ssh rocky

Допуск

  1. Какие адреса идентифицируют устройство в сети?
  2. На каком уровне модели OSI работает ARP?
  3. Что такое таблица маршрутизации?
  4. Какие методы аутентификации присутствуют в SSH?

Порядок защиты работы

Для защиты работы необходимо ответить на вопросы по теме работы.

⚠️ **GitHub.com Fallback** ⚠️