Управление портами в Linux Ubuntu/Debian/CentOS.
Управление портами в Linux Ubuntu/Debian/CentOS.
Много времени не проходит с момента заказа сервера на хостинге до первого подключения к нему. Обычно это занимает лишь несколько минут. Однако, несмотря на то что сервер готов к использованию, он не защищен от внешних угроз, аналогично новорожденному ребенку. Поэтому для обеспечения безопасности сервера требуется настройка брандмауэра или межсетевого экрана.
Что такое порт в Linux?
В контексте сетевого взаимодействия порт - это числовой идентификатор, который определяет конкретное приложение или службу, к которой происходит запрос или от которой идет ответ. Обмен информацией между узлами сети осуществляется через порты, которые могут быть управляемыми при помощи брандмауэра. Управление портами сервера важно для обеспечения безопасности и контроля за трафиком. Взаимодействие между узлами сети осуществляется через порты, которые должны быть открыты для передачи данных. Порты разделяются на две основные категории: TCP и UDP. TCP порты используются для установления надежного соединения между хостами, в то время как UDP порты предназначены для обмена данными без установления соединения.
Управление портами в Ubuntu/Debian
В операционных системах Ubuntu и Debian для этой цели часто применяется утилита iptables. Ее упрощенным интерфейсом является UFW. UFW (Uncomplicated Firewall) - это утилита для управления настройками брандмауэра на основе iptables в Linux. Она разработана для того, чтобы упростить настройку и управление правилами брандмауэра, делая процесс более понятным и доступным для пользователей. В Ubuntu интерфейс UFW обычно присутствует по умолчанию, в то время как в Debian его необходимо установить отдельно. Перед установкой брандмауэра рекомендуется обновить репозитории. Для добавления правил в брандмауэр используются команды типа "allow", чтобы разрешить доступ по определенным портам или протоколам. Рассмотрим основные команды и параметры UFW.
Примечание: Если Вы работаете из под пользователя root
, вам нет необходимости в начале каждой команды указывать sudo
.
Основные команды UFW
Активировать UFW
До или после добавления правил, необходимо включить брандмауэр. Эта команда нужна для активации UFW. После ее выполнения брандмауэр начнет применять правила фильтрации трафика:sudo ufw enable
Деактивировать UFW
Эта команда отключает UFW, временно прекращая применение всех правил брандмауэра:sudo ufw disable
Проверка статуса UFW
Чтобы проверить текущее состояние брандмауэра, можно воспользоваться командой с ключем status. Команда выводит текущий статус UFW (включен или выключен) и список активных правил:sudo ufw status
Управление правилами
Разрешить трафик
Для разрешения трафика через определенные порты, можно использовать команды вроде:
sudo ufw allow <порт/сервис>
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
В Ubuntu можно использовать также разрешение входящего трафик для указанного сервиса или по протоколу. Например для SSH/HTTP:
sudo ufw allow OpenSSH
sudo ufw allow http
sudo ufw allow https
Запретить трафик
Кроме того, можно использовать команду "deny" для запрета доступа через определенные порты или протоколы. Она запрещает входящий трафик на указанный порт или для указанного сервиса. Например:
sudo ufw deny <порт/сервис>
sudo ufw deny 23
Удалить правило
Уже созданные правила также можно удалить при помощи команды "delete". Удаляет указанное правило команда:.
sudo ufw delete <правило>
Например, для удаления правила разрешения порта 80:
sudo ufw delete allow 80
Расширенные команды
UFW делает настройку брандмауэра в Linux более простой и доступной, предоставляя удобный интерфейс для управления правилами фильтрации трафика.
Разрешить трафик для определенного протокола
sudo ufw allow <порт>/<протокол>
Например, чтобы разрешить только TCP трафик на порт 80:
sudo ufw allow 80/tcp
Настройка политики по умолчанию
sudo ufw default allow|deny incoming|outgoing
Устанавливает политику по умолчанию для входящего или исходящего трафика. Например, чтобы запретить весь входящий трафик по умолчанию:
sudo ufw default deny incoming
Просмотр номеров правил
Команда для отображения текущих правил с их номерами, что бы упростить их удаление или редактирование:
sudo ufw status numbered
Разрешить полный доступ к серверу с конкретного IP-адреса
sudo ufw allow from <IP-адрес>
Разрешает трафик с указанного IP-адреса. Например:
sudo ufw allow from 192.168.1.100
Разрешить доступ к конкретному порту с конкретного IP-адреса
Для более сложных случаев, например, для открытия целого диапазона портов или для работы с конкретными IP-адресами, существуют соответствующие команды. Команда разрешает трафик с указанного IP-адреса к указанному вами порту.
Например отрыть доступ к SSH:
sudo ufw allow from <IP-адрес> to any port <порт> sudo ufw allow from 192.168.1.100 to any port 22
Разрешить из локальной сети для всех ІР, в указанной подсети, доступ к серверу по HTTP (порту 80):
sudo ufw allow from 192.168.1.0/24 to any port 80
Журналы и отладка
Включить журналирование
Включает журналирование событий брандмауэра:sudo ufw logging on
Просмотр журнала
Журнал событий можно просмотреть с помощью командыdmesg
или в файле/var/log/ufw.log
.
Примеры использования
Разрешить доступ к SSH (порт 22)
Для примера, чтобы разрешить доступ по SSH (Secure Shell), можно использовать команду, в которой также можно указать конкретный номер порта:sudo ufw allow SSH sudo ufw allow 22 sudo ufw allow 22/tcp
Запретить доступ к Telnet (порт 23)
sudo ufw deny 23/tcp
Разрешить доступ к HTTP (порт 80) из локальной сети
Для более сложных случаев, например, для открытия целого диапазона портов или для работы с конкретными IP-адресами, существуют соответствующие команды. UFW делает настройку брандмауэра в Linux более простой и доступной, предоставляя удобный интерфейс для управления правилами фильтрации трафика.sudo ufw allow from 192.168.1.0/24 to any port 80
Управление портами в CentOS
Для работы с межсетевым экраном в CentOS используется клиентский интерфейс программы firewalld. Обычно firewalld уже установлен по умолчанию в системе CentOS. Однако, если это не так, его можно установить с помощью следующих команд.
Установка.
sudo dnf update -y
sudo dnf install firewalld -y
Если firewalld уже установлен, будет выведено сообщение об этом. Чтобы узнать текущее состояние службы firewalld, выполните команду:
systemctl status firewalld
Список приложений.
Список приложений, для которых доступ уже предоставлен в firewalld, можно получить с помощью команды:
sudo firewall-cmd --permanent --list-all
Открыть порты.
Чтобы разрешить подключения к серверу через определенные порты или протоколы, используйте команды вроде:
sudo firewall-cmd --permanent --add-service=http
Аналогично, можно открыть доступ для подключений по HTTPS:
sudo firewall-cmd --permanent --add-service=https
Также, можно открыть доступ для подключений по SSH:
sudo firewall-cmd --permanent --add-service=ssh
Также можно добавить доступ для конкретного порта, например для порта MySQL 3306 по протоколу tcp:
sudo firewall-cmd --zone=public --add-port=3306/tcp
Диапазон портов.
Для открытия доступа к диапазону портов по протоколу, и например udp используйте команду:
sudo firewall-cmd --zone=public --add-port=32811-32814/udp
Проверка портов.
Чтобы убедиться, что порты добавлены, выполните:
sudo firewall-cmd --zone=public --list-ports
Блокировка.
Для блокировки доступа через определенные порты используйте команды вроде:
sudo firewall-cmd --zone=public --remove-port=32814/udp
Применение.
Наконец, чтобы применить все изменения, подхватить новые правила firewalld:
sudo firewall-cmd --reload
Отключение.
Для отключения брандмауэра используется команда "disable".
sudo firewall-cmd --disable
Итоги.
Итак, мы рассмотрели установку и настройку брандмауэра в Linux-системах, таких как Ubuntu, Debian и CentOS, а также научились добавлять и удалять правила для управления доступом к серверу через определенные порты и протоколы.