Модуль 2 • Урок 5

Сетевое администрирование Linux

Переходим от теории к практике. Научитесь управлять сетевыми интерфейсами, настраивать ключевые сервисы, защищать периметр и анализировать трафик в Linux.

1. Строение сети в Linux: Интерфейсы и конфигурация

В Linux каждый сетевой адаптер (физический или виртуальный) представлен как сетевой интерфейс. У них есть имена: eth0 (Ethernet), wlan0 (Wi-Fi), lo (loopback, "сам на себя", 127.0.0.1).

Современные дистрибутивы (Ubuntu, Debian) используют утилиту Netplan для декларативной конфигурации сети. Вы описываете, *что* хотите получить, в простом YAML-файле, а система сама применяет настройки.

Файлы конфигурации Netplan лежат в /etc/netplan/. После изменения файла всегда выполняйте sudo netplan apply для применения настроек.

Пример статической конфигурации (`/etc/netplan/01-netcfg.yaml`):

network: version: 2 renderer: networkd ethernets: eth0: dhcp4: no addresses: - 192.168.1.100/24 routes: - to: default via: 192.168.1.1 nameservers: addresses: [8.8.8.8, 1.1.1.1]

Ключевые команды для работы с сетью:

  • ip addr (или ip a): Показать информацию обо всех интерфейсах и их IP-адресах.
  • ip route: Показать таблицу маршрутизации ядра.
  • ss -tulnp: Показать все слушающие TCP и UDP порты, а также процессы, которые их занимают.

2. Основные протоколы и утилиты для их анализа

Мы уже изучили теорию. Теперь посмотрим, как "увидеть" эти протоколы вживую.

  • ARP (Address Resolution Protocol): Связывает IP-адреса (L3) с MAC-адресами (L2) в локальной сети. Посмотреть ARP-таблицу можно командой ip neigh.
  • ICMP (Internet Control Message Protocol): Используется для диагностики. Основные утилиты:
    • ping [хост]: Проверка доступности и времени отклика.
    • traceroute [хост]: Показывает весь путь (все маршрутизаторы), который проходят пакеты до цели.
  • DNS (Domain Name System): Утилиты dig и nslookup позволяют делать прямые запросы к DNS-серверам для получения информации о доменах.
# Посмотреть подробную информацию о домене, включая MX-записи (почтовые серверы) dig example.com ANY # Проследить маршрут до серверов Google traceroute 8.8.8.8

3. Маршрутизация и настройка удалённого доступа (SSH)

Маршрутизация в Linux

Linux-машина сама по себе может выступать в роли маршрутизатора. Для этого нужно включить в ядре функцию IP-форвардинга.

# Включить IP-форвардинг "на лету" sudo sysctl -w net.ipv4.ip_forward=1 # Чтобы сделать изменение постоянным, нужно раскомментировать строку # net.ipv4.ip_forward=1 в файле /etc/sysctl.conf

После этого вы можете добавлять статические маршруты командой ip route add.

SSH (Secure Shell) — ваш главный инструмент

SSH — это зашифрованный протокол для безопасного удаленного управления системой. Он работает по клиент-серверной модели.

Безопасность SSH — превыше всего!
1. Отключите вход по паролю, используйте ключи. Создайте пару ключей командой ssh-keygen и скопируйте публичный ключ на сервер с помощью ssh-copy-id.
2. Отключите вход для root. В файле /etc/ssh/sshd_config установите PermitRootLogin no.
3. Смените стандартный порт 22 на другой (например, 2222), чтобы защититься от автоматических сканеров.

4. Файловая система NFS и работа с DNS

NFS (Network File System)

NFS — это протокол, позволяющий "расшарить" директорию на сервере, чтобы клиенты могли монтировать ее и работать с ней как с локальной папкой. Это стандарт для общего доступа к файлам в UNIX-подобных системах.

На сервере: Устанавливается nfs-kernel-server, в файле /etc/exports описывается, какая директория и кому доступна.
На клиенте: Устанавливается nfs-common, директория монтируется командой sudo mount -t nfs server_ip:/path /local_mount_point.

Настройка DNS-клиента

Каждый Linux-хост является DNS-клиентом. Настройки резолвера (программы, которая делает DNS-запросы) находятся в файле /etc/resolv.conf. В современных системах этот файл часто управляется автоматически (например, Netplan или systemd-resolved), и напрямую его редактировать не стоит.

Для создания полноценного DNS-сервера в Linux чаще всего используется программа BIND9. Ее настройка — сложная, но важная тема для любого системного администратора.

5. Веб-сервер Apache

Apache HTTP Server (или просто Apache) — один из самых популярных веб-серверов в мире. Он отвечает за то, чтобы отдавать посетителям содержимое вашего сайта по протоколу HTTP/HTTPS.

Установка и управление (на Ubuntu/Debian):

# Установить Apache sudo apt install apache2 # Проверить статус sudo systemctl status apache2 # Включить модуль для работы с SSL (для HTTPS) sudo a2enmod ssl # Включить модуль для перезаписи URL (очень часто нужен) sudo a2enmod rewrite

Виртуальные хосты

Apache позволяет размещать несколько сайтов на одном сервере. Каждый сайт настраивается в отдельном конфигурационном файле, который называется виртуальный хост. Эти файлы лежат в /etc/apache2/sites-available/. Чтобы "включить" сайт, нужно создать символическую ссылку на его конфиг в директории /etc/apache2/sites-enabled/ с помощью команды a2ensite.

6. Файрвол Netfilter (iptables / nftables)

Netfilter — это фреймворк внутри ядра Linux, который позволяет перехватывать, модифицировать и фильтровать сетевые пакеты. iptables — это классическая утилита для управления Netfilter. nftables — это ее более современный и производительный преемник.

Работа `iptables` основана на цепочках (chains) правил. Основные цепочки:

  • INPUT: для пакетов, предназначенных самому серверу.
  • OUTPUT: для пакетов, сгенерированных самим сервером.
  • FORWARD: для пакетов, которые сервер маршрутизирует (пропускает через себя).

Правила применяются по порядку. У каждой цепочки есть политика по умолчанию (например, DROP — отбрасывать все, что не разрешено).

# Посмотреть текущие правила sudo iptables -L -v -n # Пример базового набора правил: разрешить установленные соединения, SSH и HTTP, остальное запретить sudo iptables -P INPUT DROP sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Настраивать `iptables` по SSH очень опасно. Одной неверной командой (например, iptables -P INPUT DROP без предварительного разрешающего правила для SSH) вы можете навсегда отрезать себе доступ к серверу!

7. Работоспособность сети и диагностика (Troubleshooting)

Сеть не работает. С чего начать? Действуйте методично, по уровням OSI, снизу вверх:

  1. Физический уровень: Проверьте кабели, индикаторы на сетевой карте и коммутаторе. Банально, но часто помогает.
  2. Канальный уровень: Проверьте ARP-таблицу (ip neigh). Видит ли ваш хост MAC-адрес шлюза?
  3. Сетевой уровень:
    • Проверьте свой IP-адрес (ip a).
    • Пингуется ли шлюз по умолчанию (ping 192.168.1.1)?
    • Пингуется ли внешний IP-адрес (ping 8.8.8.8)? Если да, но не пингуется доменное имя, то проблема в DNS.
    • Используйте traceroute, чтобы понять, на каком узле обрывается связь.
  4. Транспортный/Прикладной уровень: Используйте telnet или nc (netcat), чтобы проверить, открыт ли порт на удаленном хосте (telnet google.com 443). Проверьте настройки файрвола.

8. Инциденты в локальной сети и их расследование

Расследование инцидента — это детективная работа. Ваша задача — собрать улики, не уничтожив их.

Первые шаги при подозрении на взлом:

  1. Не паникуйте! Не перезагружайте сервер — это уничтожит массу ценной информации в оперативной памяти.
  2. Изолируйте хост: Отключите его от сети, чтобы предотвратить дальнейшее распространение атаки.
  3. Соберите "летучие" данные:
    • Текущие сетевые соединения: ss -anp
    • Запущенные процессы: ps aux
    • Кто залогинен в систему: who, w
    • История команд: history
    Сохраните вывод всех этих команд в текстовый файл на внешний носитель.
  4. Сделайте образ диска: С помощью утилиты dd создайте побитную копию диска для дальнейшего анализа. Всегда работайте с копией, а не с оригиналом!
  5. Анализ: Изучите логи (/var/log), ищите подозрительные файлы, нестандартные процессы, открытые порты, измененные системные файлы (с помощью diff или rpm -Va).

9. Мониторинг и алерты: Видеть проблемы до того, как они случатся

Мониторинг — это непрерывный сбор метрик о состоянии системы. Алертинг — это автоматическое уведомление администратора, когда метрика выходит за пределы нормы.

Инструменты для анализа трафика:

  • tcpdump: Мощнейшая консольная утилита для перехвата и анализа сетевого трафика в реальном времени. Позволяет "видеть" каждый пакет.
  • Wireshark: Графический аналог `tcpdump` с невероятными возможностями для декодирования и анализа протоколов.

Системы мониторинга:

Для серьезного мониторинга используются комплексные системы, такие как Prometheus + Grafana (современный стандарт для метрик и дашбордов) или Zabbix (классическое all-in-one решение).

# Перехватить весь трафик на интерфейсе eth0, идущий на 80 порт sudo tcpdump -i eth0 -n "port 80" # Перехватить весь ICMP-трафик (пинги) sudo tcpdump -i eth0 icmp