В операционных системах на базе Linux, таких как Ubuntu и Debian, управление портами играет ключевую роль в обеспечении безопасности и функционировании серверов и приложений. Порты в Linux управляются с помощью различных инструментов, таких как UFW (Uncomplicated Firewall), iptables и firewalld, а также могут быть проверены с помощью утилит, таких как netstat и ss.
В этой статье мы рассмотрим, как эффективно управлять портами в Ubuntu и Debian, открывать порты, а также закрывать их с использованием различных инструментов и команд. Мы также рассмотрим, как выполнять настройку фаервола для управления доступом к серверу, обеспечивая безопасность системы.
Ознакомиться с тарифами VPS хостинга можно тут
Что такое порты в Linux и почему важно их управлять?
Порты — это точки, через которые осуществляется обмен данными между компьютером и внешним миром. В Linux каждый процесс или приложение, которое ожидает подключений, использует определённый порт. Эти порты могут быть открыты или закрыты с использованием фаервола, чтобы контролировать доступ к системе.
Открытые порты могут быть необходимы для работы определённых сервисов (например, веб-серверов, SSH-сессий, баз данных), однако неправильное управление портами может привести к уязвимостям безопасности. Таким образом, важно уметь правильно открывать, закрывать и контролировать порты на вашем сервере.
Как проверить открытые порты на сервере Ubuntu / Debian
Перед тем как начать управлять портами, полезно узнать, какие порты уже открыты на сервере. Для этого можно использовать несколько инструментов.
1. Использование ss
Команда ss позволяет получить информацию о сокетах и открытых портах. Чтобы вывести список всех открытых портов, используйте команду:
ss -tuln
Здесь:
-t
— отображение TCP-соединений,-u
— отображение UDP-соединений,-l
— отображение только слушающих портов,-n
— отображение портов в числовом виде (без разрешения доменных имён).
2. Использование netstat
Команда netstat также позволяет просматривать открытые порты. Для получения списка открытых портов выполните:
netstat -tuln
Аналогично, вы можете фильтровать вывод, используя grep, например, чтобы найти все порты, связанные с HTTP (порт 80):
netstat -tuln | grep :80
Как открыть порты на сервере Ubuntu / Debian
1. Открытие портов с помощью UFW
UFW (Uncomplicated Firewall) — это простой интерфейс для настройки фаервола iptables, который позволяет легко управлять входящими и исходящими соединениями. Для начала убедитесь, что UFW установлен и активен:
sudo ufw status
Если UFW не активен, вы можете включить его с помощью следующей команды:
sudo ufw enable
Теперь, чтобы открыть порт, например, 80 (HTTP), используйте команду:
sudo ufw allow 80/tcp
Если вы хотите открыть сразу несколько портов, например, 80 (HTTP) и 443 (HTTPS), выполните:
sudo ufw allow 80,443/tcp
Чтобы открыть порт 22 для SSH (если вы хотите подключиться через SSH), используйте команду:
sudo ufw allow 22/tcp
Для открытия диапазона портов (например, от 1000 до 2000), используйте:
sudo ufw allow 1000:2000/tcp
2. Открытие портов с помощью iptables
iptables — это более мощный инструмент для настройки фаервола, который предоставляет более гибкие возможности, но требует знаний синтаксиса. Чтобы открыть порт с помощью iptables, используйте следующую команду:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Эта команда добавляет правило для разрешения входящих TCP-соединений на порт 80.
Для того чтобы правило стало постоянным, вам нужно сохранить настройки:
sudo iptables-save > /etc/iptables/rules.v4
Чтобы открыть диапазон портов, например, от 2000 до 3000, выполните:
sudo iptables -A INPUT -p tcp --dport 2000:3000 -j ACCEPT
3. Открытие портов с помощью firewalld
(если используется)
firewalld — это ещё один инструмент для настройки фаервола в некоторых дистрибутивах Linux, который предоставляет удобные профили для управления портами. Для открытия порта с помощью firewalld используйте команду:
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
Здесь --permanent
указывает, что правило должно быть сохранено после перезагрузки системы. После этого примените изменения:
sudo firewall-cmd --reload
Как закрыть порты на сервере Ubuntu / Debian
Для того чтобы закрыть порты, можно использовать те же инструменты, что и для их открытия. Например, если вы хотите закрыть порт 80, выполните следующие действия:
1. Закрытие порта с помощью UFW
Чтобы закрыть порт с помощью UFW, выполните команду:
sudo ufw deny 80/tcp
2. Закрытие порта с помощью iptables
Для того чтобы закрыть порт с помощью iptables, выполните:
sudo iptables -A INPUT -p tcp --dport 80 -j DROP
Чтобы применить изменения навсегда, используйте команду для сохранения:
sudo iptables-save > /etc/iptables/rules.v4
3. Закрытие порта с помощью firewalld
Если вы используете firewalld, можно закрыть порт с помощью:
sudo firewall-cmd --zone=public --remove-port=80/tcp --permanent
После этого примените изменения:
sudo firewall-cmd --reload
Открытие порта на сервере Ubuntu для специфичных приложений
- Открытие порта для веб-сервера (например, Apache, Nginx)
Если вы хотите открыть порт 80 для работы веб-сервера, например, Apache или Nginx, убедитесь, что сам сервер настроен для прослушивания этого порта. В случае Apache или Nginx, порт 80 обычно уже открыт по умолчанию. Если же порт закрыт, можно воспользоваться UFW или iptables, как описано выше.
- Открытие порта для SSH (порт 22)
Для обеспечения доступа через SSH к серверу необходимо открыть порт 22. Это можно сделать как с помощью UFW, так и через iptables. Для UFW:
sudo ufw allow 22/tcp
Для iptables:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Проверка открытых портов и подключений
После того как вы открыли или закрыли порты, полезно проверить их статус. Используйте следующие команды:
1. Проверка с помощью ss
:
ss -tuln
2. Проверка с помощью netstat
:
netstat -tuln
3. Проверка с помощью nmap
(с удаленной машины):
Для проверки доступности портов на сервере можно использовать nmap:
nmap <ip-адрес-сервера>
Заключение
Управление портами в Ubuntu и Debian является неотъемлемой частью настройки сервера и обеспечения безопасности. Открытие и закрытие портов с помощью таких инструментов, как UFW, iptables и firewalld, позволяет не только контролировать доступ, но и защищать систему от потенциальных угроз. Регулярная проверка состояния портов и управление ими помогают поддерживать вашу систему в безопасности и исправности.