Использование iptables: как «открыть порт» в виртуальную разработку
Эпоха локальной разработки ушла в историю. Развитие интернета обусловило объективную необходимость распределенной обработки информации. Виртуализация привела к тому, что один компьютер уже не имеет значимой перспективы. Разработчик должен иметь полноценный комплект виртуальных машин с любого физического устройства. Настройка виртуальности и технической возможности работы через iptables стала востребованным и важным фактором при создании современных информационных систем.
Современная разработка информационных систем
Высокие технологии при всех своих достижениях основаны на жестких синтаксических конструкциях. Синтаксис языка программирования или конфигурационного файла - меньшее зло, чем жесткость концепции развития компьютерного дела в целом.
Попытка вывести синтаксис и семантику через гипертекст не привела к качественному скачку, но сделала необходимым перевести разработку в «распределенный» статус, в облака и виртуальность.
Работа на одном компьютере и/или сервере - это ограничение. Разработчик должен иметь арсенал операционных систем, среду разработки и тестирования. Разработчик - это распределенная команда специалистов различной квалификации.
Идея iptables прошла долгий путь за короткое время. Сегодня она предоставляет достаточно удобный инструментарий для организации технологических процессов разработки программного обеспечения и его использования.
Посредством iptables открыть порт для конкретного проекта - не проблема. Ограничить (закрыть) доступ - просто и удобно. Фаервол firewalld - это CentOS и iptables. Открыть порт здесь можно специальным инструментом (утилита). Это удобно, но не так практично как в Debian через посредство командной строки.
Выбор операционной системы из семейства линуксоидов в контексте решения задачи распределения портов имеет значение для системного администратора в контексте настройки, но более существенным является понимание сути вопроса: как через iptables открыть порт и обеспечить возможность работы.
Коммутатор и сервер
Прежде чем начинать работу с Linux-сервером, нужно уделить серьезное внимание настройке коммутатора, обеспечивающего выход в интернет и внутреннюю локальную сеть.
Это коммутатор локальной сети для небольшой компании или домашнего применения. Крупный бизнес использует более технологичное оборудование, но в любом случае: устройство выхода в интернет и организации локальной сети должно пропускать все пакеты и иметь открытыми все порты, которые будут необходимы.
Linux-сервер - это iptables. Как открыть определенные порты показывают правила входа, выхода и транзита (INPUT, OUTPUT и FORWARD). Правил не так много, параметров в них немного больше, но комбинаций и возможностей они предоставляют достаточное количество. Посредством iptables: открыть порт - не проблема, работать на входе (PREROUTING) или на выходе (POSTROUTING) - тоже.
Все правила Linux-сервера эквивалентны: условие (критерий), описание, действие и счетчик. Содержание правила зависит от его применения.
Физический сервер виртуальных машин
Нет разницы между рабочим компьютером и сервером, но всегда предпочтительнее не загружать сервер частными задачами и делать его рабочим компьютером конкретного разработчика.
В идеале сервер должен иметь графическую оболочку и «вести» собственный рабочий процесс, вне административного (файловое хранилище, хостинг, веб-ресурс, ...). В частности, для решения задачи: самообучающийся парсинг и поиск информации, файловое хранилище и несколько виртуальных машин хорошим решением будет компьютер с установленной системой Debian & Proxmox VE.
Здесь потребуется iptables. Открыть порт для каждой виртуальной машины - это полдела. Нужно настроить мосты, маршруты и организовать работу самого сервера, как самостоятельного компьютера, управляющего Apache, MySQL, PHP и браузером. Нужно также настроить Proxmox VE, как систему виртуальных машин, доступных внутри локальной сети и вне ее.
Это практический (работающий) пример для iptables Debian. Как открыть порт показано на множестве примеров. Это не оптимальный набор правил, но реально работающий. Некоторые правила дублируют друг друга, но их сопоставление позволяет понять, как и что нужно применить в конкретной ситуации.
Примечание. Позиции enp0s31f6, 192.168.100.0, 192.168.100.18 и 192.168.100.1 должны быть заменены на реальный сетевой интерфейс, реальную сеть, реальные IP-адрес сервера и IP-адрес шлюза.
Порядок и правила работы с iptables
Если требуется внести изменения в существующую систему, следует сохранить все действующие правила и сетевые настройки. В работающей системе при любых обстоятельствах ничего делать нельзя. Лучший вариант - вести работы на новом сервере, а по их завершении поменять машины.
Лучше начинать с чистого листа. Через ключи -F и -X iptables открыть порт не получится, но таблица правил очистится и можно будет качественно выполнить административную работу. Фаервол (ufw) лучше отключить сразу. Можно почистить таблицу nat - это тоже не будет лишним.
Далее следует обязательное открытие доступа по ssh (через iptables открыть порт 22). Сервер обязан быть управляем удаленно. Разрешить пинги и проверить их также обязательно. Администратор сервера должен быть уверен в том, что физически (технически) оборудование работает исправно. А если возникает ошибка, то она будет лежать в правилах iptables. Открыть порты pop, ftp, http, https и другие можно общим правилом (multiport) или отдельными.
Важно учесть, что правила имеют значение не только по содержанию, но и по последовательности указания. В контексте использования Proxmox VE обязательно соблюсти его требования (в частности, через iptables открыть порт 8006).
Портам 80 (8080) и 443 следует уделить особое внимание. Например, iptables (открыть порты http & https) обеспечивает трафик веб-ресурсов. Почта и FTP доступ не критичны, если они не включены в спектр функциональности сервера.
Правила iptables действуют немедленно. Ключ «-A» добавляет правило, а ключ «-D» удаляет его. Сохранить набор созданных правил:
- iptables-save > /etc/iptables.rules.
Восстановить, ранее созданный набор правил:
- iptables-restore < /etc/iptables.rules.
Чтобы включить iptables и открыть порты при загрузке системы, достаточно записать об этом при поднятии основного интерфейса в файле /etc/network/intefaces:
Правила iptables - это не только порядок работы на сервере и его безопасность. Это оптимизация на практике. Правила iptables определяют конкретный спектр пакетов, который будет обрабатывать сервер, конкретизирует его функциональность и управляет посетителями. Посредством iptables можно настроить оптимальный режим администрирования и пользования машиной.