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, снизу вверх:
- Физический уровень: Проверьте кабели, индикаторы на сетевой карте и коммутаторе. Банально, но часто помогает.
- Канальный уровень: Проверьте ARP-таблицу (
ip neigh). Видит ли ваш хост MAC-адрес шлюза? - Сетевой уровень:
- Проверьте свой IP-адрес (
ip a). - Пингуется ли шлюз по умолчанию (
ping 192.168.1.1)? - Пингуется ли внешний IP-адрес (
ping 8.8.8.8)? Если да, но не пингуется доменное имя, то проблема в DNS. - Используйте
traceroute, чтобы понять, на каком узле обрывается связь.
- Проверьте свой IP-адрес (
- Транспортный/Прикладной уровень: Используйте
telnetилиnc(netcat), чтобы проверить, открыт ли порт на удаленном хосте (telnet google.com 443). Проверьте настройки файрвола.
8. Инциденты в локальной сети и их расследование
Расследование инцидента — это детективная работа. Ваша задача — собрать улики, не уничтожив их.
Первые шаги при подозрении на взлом:
- Не паникуйте! Не перезагружайте сервер — это уничтожит массу ценной информации в оперативной памяти.
- Изолируйте хост: Отключите его от сети, чтобы предотвратить дальнейшее распространение атаки.
- Соберите "летучие" данные:
- Текущие сетевые соединения:
ss -anp - Запущенные процессы:
ps aux - Кто залогинен в систему:
who,w - История команд:
history
- Текущие сетевые соединения:
- Сделайте образ диска: С помощью утилиты
ddсоздайте побитную копию диска для дальнейшего анализа. Всегда работайте с копией, а не с оригиналом! - Анализ: Изучите логи (
/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