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