Лабораторная работа "Основы сетевого администрирования" - efanov/mephi GitHub Wiki
В работе рассмотрена утилита ip и пакеты ssh и iptables.
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 (показать). Важные команды:addchangedel или deleteflushgetlist или showmonitorreplacerestoresavesetupdate
-
параметры- параметры для команд, если они требуются
Пакет OpenSSH состоит из десяти утилит:
- Удалённый доступ:
sshscpsftp
- Управление ключами:
ssh-addssh-keysignssh-keyscanssh-keygen
- Управление службой:
sshdsftp-serverssh-agent
-
Для просмотра 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 foreverdevозначает 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 -
Для добавления нового IP-адреса выполните
ip address add 172.16.132.136/24 dev ens160
Для удаления:
ip address delete 172.16.132.136/24 dev ens160
-
Для просмотра списка интерфейсов выполните
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 -
Для изменения параметров используется команда
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и после этого включить интерфейс.
-
Для просмотра кэшированной 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
-
Для просмотра таблицы маршрутизации хоста выполните
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. -
Для добавления маршрута выполните
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-сервер:
dnf install openssh-server
Чтобы зайти на сервер используйте команду
ssh username@server
-
Для изменения настроек
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 .... -
Для создания ключа 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 -
С учётом выполненных выше команд для подключения к серверу необходимо выполнить
ssh -i ~/.ssh/rocky -p 2222 username@serverЧтобы не запоминать такое множество настроек, существует конфигурационный файл
~/.ssh/config. Заполнив его содержимымHost rocky HostName server IdentityFile ~/.ssh/rocky User username Port 2222мы можем подключаться к серверу, вводя
ssh rocky
-
Просмотрите существующие правила:
sudo iptables -L -nv
Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination -
Добавьте правила, разрешающее локальные соединения:
sudo iptables -A INPUT -i lo -j ACCEPT
-
Добавьте правило для разрешения установленных соединений:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-
Добавьте правило для сбрасывания невалидных пакетов:
sudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
-
Добавьте правило для разрешения SSH-соединения к серверу:
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
Более подробно о настройке iptables можно прочитать в статье. Также есть неплохое видео.
Для защиты работы необходимо ответить на вопросы по теме работы.