fbpx

Чек-лист для проверки открытых портов на сервере Linux

Проверка открытых портов на сервере Linux является важной задачей для системного администратора, чтобы обеспечить безопасность и правильное функционирование сервисов.

Проверка открытых портов с использованием netstat

Команда:

sudo netstat -tuln

Ожидаемый результат:

Вывод команды покажет список всех открытых портов и адресов, которые их слушают. Например:

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

tcp6 0 0 :::80 :::* LISTEN

udp 0 0 0.0.0.0:123 0.0.0.0:*

udp6 0 0 :::123 :::*

Проверка открытых портов с использованиемss

Команда:

sudo ss -tuln

Ожидаемый результат:

Вывод команды покажет аналогичную информацию, что и netstat. Например:

Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port

tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*

tcp LISTEN 0 128 :::80 :::*

udp UNCONN 0 0 0.0.0.0:123 0.0.0.0:*

udp UNCONN 0 0 :::123 :::*

Проверка открытых портов с использованием lsof

Команда:

sudo lsof -i -P -n

Ожидаемый результат:

Вывод команды покажет список всех сетевых подключений и открытых портов. Например:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

sshd 1234 root 3u IPv4 56789 0t0 TCP *:22 (LISTEN)

httpd 5678 www-data 4u IPv6 12345 0t0 TCP *:80 (LISTEN)

ntpd 9101 ntp 5u IPv4 67890 0t0 UDP *:123

Проверка открытых портов с использованием nmap

Команда:

sudo nmap -sT -O localhost

Ожидаемый результат:

Вывод команды покажет список всех открытых портов на локальном хосте. Например:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-10 12:34 UTC

Nmap scan report for localhost (127.0.0.1)

Host is up (0.00012s latency).

Not shown: 997 closed ports

PORT STATE SERVICE

22/tcp open ssh

80/tcp open http

123/udp open ntp

 

OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .

Nmap done: 1 IP address (1 host up) scanned in 1.34 seconds

Проверка открытых портов с использованием firewalld(если используется)

Команда:

sudo firewall-cmd —list-all

Ожидаемый результат:

Вывод команды покажет текущую конфигурацию брандмауэра, включая разрешенные порты. Например:

public (active)

 target: default

 icmp-block-inversion: no

 interfaces: eth0

 sources:

 services: ssh http https

 ports: 123/udp

 protocols:

 masquerade: no

 forward-ports:

 source-ports:

 icmp-blocks:

 rich rules:

Проверка открытых портов с использованием iptables (если используется)

Команда:

sudo iptables -L -n -v

Ожидаемый результат:

Вывод команды покажет текущие правила брандмауэра, включая разрешенные и заблокированные порты. Например:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
10M 600G ACCEPT tcp — * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
100K 50M ACCEPT tcp — * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
50K 25M ACCEPT udp — * * 0.0.0.0/0 0.0.0.0/0 udp dpt:123

Проверка открытых портов с использованием ufw (если используется)

Команда:

sudo ufw status

Ожидаемый результат:

Вывод команды покажет текущие правила брандмауэра ufw, включая разрешенные и заблокированные порты. Например:

Status: active

To Action From
— —— —-
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
123/udp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
123/udp (v6) ALLOW Anywhere (v6)

Проверка открытых портов с использованием nc (netcat)

Команда:

nc -zv localhost 1-65535

Ожидаемый результат:

Вывод команды покажет, какие порты открыты на локальном хосте. Например:

Connection to localhost 22 port [tcp/ssh] succeeded!
Connection to localhost 80 port [tcp/http] succeeded!

Проверка открытых портов с использованием telnet

Команда:

telnet localhost 22

Ожидаемый результат:

Если порт открыт, вы увидите сообщение о подключении. Например:

Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3

Проверка открытых портов с использованием curl

Команда:

curl -I http://localhost:80

Ожидаемый результат:

Если порт открыт и веб-сервер работает, вы увидите заголовки ответа HTTP. Например:

HTTP/1.1 200 OK
Date: Tue, 10 Oct 2023 12:34:56 GMT
Server: Apache/2.4.29 (Ubuntu)
Last-Modified: Tue, 10 Oct 2023 12:00:00 GMT
Content-Type: text/html
Content-Length: 1234

Проверка открытых портов с использованием ps для анализа работающих процессов

Команда:

ps aux | grep <service_name>

Ожидаемый результат:

Вывод команды покажет информацию о процессах, связанных с указанным сервисом. Например, для проверки процесса sshd:

ps aux | grep sshd

Результат:

root 1234 0.0 0.1 123456 7890 ? Ss 12:00 0:00 /usr/sbin/sshd -D
user 5678 0.0 0.0 123456 2345 pts/0 S+ 12:01 0:00 grep —color=auto sshd

Использование системных журналов для анализа активности портов

Команда:

sudo journalctl -u <service_name>

Ожидаемый результат:

Вывод команды покажет логи для указанного сервиса. Например, для проверки логов sshd:

sudo journalctl -u sshd

Результат:

Oct 10 12:00:00 server sshd[1234]: Server listening on 0.0.0.0 port 22.
Oct 10 12:00:00 server sshd[1234]: Server listening on :: port 22.

Использование tcpdump для мониторинга сетевого трафика

Команда:

sudo tcpdump -i <interface> port <port_number>

Ожидаемый результат:

Вывод команды покажет сетевой трафик для указанного интерфейса и порта. Например:

sudo tcpdump -i eth0 port 22

Результат:

12:00:01.123456 IP client.12345 > server.ssh: Flags [S], seq 1234567890, win 65535, options [mss 1460,sackOK,TS val 123456789 ecr 0,nop,wscale 7], length 0
12:00:01.123457 IP server.ssh > client.12345: Flags [S.], seq 1234567890, ack 1234567891, win 29200, options [mss 1460,sackOK,TS val 123456789 ecr 123456789,nop,wscale 7], length 0

Использование сервисных конфигурационных файлов для проверки настроек портов

Пример конфигурации sshd:

Файл: /etc/ssh/sshd_config Параметр:

Port 22

Пример конфигурации nginx:

Файл: /etc/nginx/sites-available/default Параметры:

server { listen 80 default_server; listen [::]:80 default_server; … }

Автоматизация проверки портов с использованием скриптов

Пример скрипта на Bash для проверки открытых портов:

#!/bin/bash

PORTS=(22 80 443)
for PORT in «${PORTS[@]}»; do
if nc -zv localhost $PORT 2>&1 | grep -q succeeded; then
echo «Port $PORT is open»
else
echo «Port $PORT is closed»
fi
done

Использование систем мониторинга и управления конфигурациями

Инструменты:

  • Nagios: Для мониторинга состояния портов и сервисов.
  • Zabbix: Для мониторинга и сбора метрик с серверов.
  • Ansible: Для автоматизации управления конфигурациями и развертывания сервисов.
  • Prometheus & Grafana: Для сбора метрик и визуализации данных.

Автоматизация задач по управлению портами

Пример использования Ansible для управления портами:

Создайте плейбук Ansible для настройки брандмауэра и открытых портов.

Файл: firewall.yml

yaml
 


— name: Configure firewall
hosts: all
become: yes
tasks:
— name: Ensure UFW is installed
apt:
name: ufw
state: psent

— name: Allow SSH
ufw:
rule: allow
port: ’22’
proto: tcp

— name: Allow HTTP
ufw:
rule: allow
port: ’80’
proto: tcp

— name: Allow HTTPS
ufw:
rule: allow
port: ‘443’
proto: tcp

— name: Enable UFW
ufw:
state: enabled
policy: allow

Запустите плейбук Ansible:

ansible-playbook -i inventory firewall.yml

Использование инструментов для управления конфигурациями

Пример использования Puppet для управления настройками портов:

Создайте манифест Puppet для настройки брандмауэра.

Файл: firewall.pp

class { ‘firewall’: }

firewall { ‘100 allow SSH’:
proto => ‘tcp’,
dport => 22,
action => ‘accept’,
}

firewall { ‘101 allow HTTP’:
proto => ‘tcp’,
dport => 80,
action => ‘accept’,
}

firewall { ‘102 allow HTTPS’:
proto => ‘tcp’,
dport => 443,
action => ‘accept’,
}

Использование Docker для управления сервисами и портами

Если вы используете контейнеризацию, важно управлять портами внутри контейнеров и на хосте.

Пример команды Docker для запуска контейнера с открытыми портами:

docker run -d -p 80:80 -p 443:443 —name my_web_server nginx

Пример Docker Compose файла для управления портами:

Файл: docker-compose.yml

version: ‘3’
services:
web:
image: nginx
ports:
— «80:80»
— «443:443»

Управление открытыми портами на сервере — это важный аспект обеспечения безопасности и стабильности работы ваших сервисов. Используйте разнообразные инструменты и методы для мониторинга, настройки и автоматизации управления портами. Регулярно обновляйте конфигурации и следите за состоянием серверов, чтобы обеспечить высокий уровень защиты от внешних угроз.

Угрозы и проблемы при открытых портах

Открытые порты на сервере могут представлять различные угрозы и проблемы для безопасности и стабильности системы. Вот перечень потенциальных проблем и угроз, связанных с открытыми портами:

1. Неавторизованный доступ

Открытые порты могут позволить злоумышленникам получить неавторизованный доступ к системе. Например, открытый SSH-порт (22) может быть использован для брутфорс-атак с целью получения доступа к серверу.

2. DDoS-атаки

Открытые порты могут стать целью распределенных атак типа «отказ в обслуживании» (DDoS), что может привести к перегрузке сервера и недоступности легитимных сервисов.

3. Эксплуатация уязвимостей

Злоумышленники могут использовать уязвимости в сервисах, работающих на открытых портах, для выполнения атак типа «эксплойт». Например, уязвимости в веб-серверах (порт 80 или 443) могут быть использованы для выполнения удаленного кода.

4. Сниффинг трафика

Открытые порты могут позволить злоумышленникам перехватывать и анализировать сетевой трафик (сниффинг), что может привести к утечке конфиденциальной информации.

5. Сканирование портов

Открытые порты могут быть обнаружены с помощью инструментов для сканирования портов (например, nmap). Это может дать злоумышленникам информацию о сервисах, работающих на сервере, и помочь в планировании дальнейших атак.

6. Заражение вредоносным ПО

Открытые порты могут быть использованы для распространения вредоносного ПО, такого как вирусы, черви или трояны. Например, червь может использовать открытые порты для распространения на другие системы в сети.

7. Проблемы с производительностью

Открытые порты могут привести к увеличению нагрузки на сервер из-за большого количества входящих подключений. Это может вызвать проблемы с производительностью и замедление работы легитимных сервисов.

8. Уязвимости в неподдерживаемых сервисах

Сервисы, работающие на открытых портах и не получающие регулярных обновлений, могут содержать уязвимости, которые могут быть использованы злоумышленниками для атак.

9. Информационные утечки

Открытые порты могут позволить злоумышленникам получить доступ к конфиденциальной информации, такой как конфигурационные файлы, базы данных или пользовательские данные.

10. Социальная инженерия

Информация о сервисах, работающих на открытых портах, может быть использована в атаках социальной инженерии для получения доступа к системе через обман пользователей или администраторов.

11. Проблемы с соответствием требованиям

Открытые порты могут привести к несоответствию требованиям безопасности и нормативным актам, таким как GDPR, HIPAA или PCI DSS. Это может привести к юридическим последствиям и штрафам.

12. Эскалация привилегий

Злоумышленники могут использовать уязвимости в сервисах, работающих на открытых портах, для эскалации привилегий и получения административного доступа к системе.

13. Угрозы целостности данных

Открытые порты могут позволить злоумышленникам вмешиваться в работу сервисов и изменять данные, что может нарушить целостность и достоверность информации.

14. Угрозы доступности данных

Атаки на сервисы, работающие на открытых портах, могут привести к недоступности данных для легитимных пользователей, что может повлиять на бизнес-процессы и операции.

Пример конфигурации сервера Linux с точки зрения безопасности портов

Для настройки сервера Linux с фокусом на безопасность открытых портов, рассмотрим пример, который включает в себя использование брандмауэра, минимизацию открытых портов, настройку служб и использование дополнительных средств безопасности. В этом примере мы будем использовать ufw (Uncomplicated Firewall) для управления правилами брандмауэра и fail2ban для защиты от брутфорс-атак.

Шаги по настройке сервера Linux с максимальной безопасностью открытых портов

1. Установка необходимых пакетов

Убедитесь, что у вас установлены необходимые пакеты:

sudo apt update sudo apt install ufw fail2ban

2. Настройка UFW (Uncomplicated Firewall)

2.1. Отключите UFW (если он включен)

sudo ufw disable

2.2. Настройка базовых правил

Разрешите доступ только к необходимым портам. Например, для SSH (22), HTTP (80) и HTTPS (443):

sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS

2.3. Включите UFW

sudo ufw enable

2.4. Проверьте статус UFW

sudo ufw status verbose

Вывод должен быть похож на это:

Status: active

To Action From
— —— —-
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)

3. Настройка Fail2Ban

Fail2Ban поможет защитить ваш сервер от попыток несанкционированного доступа.

3.1. Настройка Fail2Ban

Откройте конфигурационный файл:

sudo nano /etc/fail2ban/jail.local

Добавьте следующие строки для настройки защиты SSH:

ini
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 600

3.2. Перезапустите Fail2Ban

sudo systemctl restart fail2ban

3.3. Проверьте статус Fail2Ban

sudo fail2ban-client status

4. Минимизация открытых портов

Откройте только те порты, которые необходимы для работы вашего сервера. Если некоторые службы не используются, удалите их или отключите.

Пример:

Если вы используете только SSH и веб-сервер, убедитесь, что другие порты, такие как FTP (21), Telnet (23), и другие, закрыты.

5. Настройка служб

5.1. Настройка SSH

Откройте файл конфигурации SSH:

sudo nano /etc/ssh/sshd_config

Измените или добавьте следующие параметры для повышения безопасности:

Port 22
PermitRootLogin no # Запретить вход под root
PasswordAuthentication no # Запретить аутентификацию по паролю
PubkeyAuthentication yes # Включить аутентификацию по ключу
ChallengeResponseAuthentication no
UsePAM yes

5.2. Перезапустите SSH

sudo systemctl restart ssh

6. Регулярные обновления

Убедитесь, что ваш сервер всегда обновлен:

sudo apt update && sudo apt upgrade -y

7. Мониторинг и аудит

Используйте инструменты мониторинга, такие как htop, netstat, и ss, для регулярной проверки состояния сервера и открытых портов.

Пример команды для проверки открытых портов:

sudo netstat -tuln

АКЦИЯ! Бесплатное обслуживание до конца месяца!
Спасибо!
Ваши данные успешно отправлены.
Другие статьи
Пошаговая инструкция по установке и настройке сервера Linux
Linux - это семейство операционных систем на базе ядра Linux, которые используются для различных целей, включая...
Чек-лист проверки сервера на Windows для системных администраторов
Этот список охватывает основные аспекты, которые системный администратор должен проверить для обеспечения надлежащей...
Чек-лист для системных администраторов по проверке корпоративной сети
Подготовка Соберите информацию о сети: Нарисуйте схему топологии сети, включающую маршрутизаторы, коммутаторы,...
Топ программ для защиты сервера на Windows
Рассмотрим популярные инструменты и программы для обеспечения безопасности Windows Server. Sophos Intercept X for...
Топ-10 программ, утилит для системных администраторов
Рассмотрим топ-10 программ и утилит, которые могут быть полезны для системного администратора. Microsoft PowerShell ...
Администрирование сервера Linux – обеспечиваем безопасность портов
В Linux и других системах используются порты для организации сетевых соединений. Они делятся на следующие диапазоны: ...
Обзор дистрибутивов Linux для системных администраторов
Linux является одной из самых популярных операционных систем среди системных администраторов благодаря её гибкости,...
10 необычных трюков IT-безопасности для вашего бизнеса!
Обеспечение IT-безопасности становится ключевым аспектом для любого бизнеса. Однако, помимо стандартных методов защиты,...
Чек-лист проверки на взлом IT-инфраструктуры компании
Рассматриваем угрозы IT-инфраструктуре компаний и способы их устранения. Корпоративная сеть Антивирусная защита ...
Особенности настройки и конфигурации веб-сервера
Настройка и конфигурация веб-сервера - это критически важный процесс для обеспечения надежной и эффективной работы...
Лучшие утилиты для администрирования сервера на Windows
Администрирование сервера на Windows требует широкого арсенала инструментов, каждый из которых предназначен для...
Что лучше для сервера — Linux или Windows?
Вопрос выбора операционной системы для серверов стоит перед системными администраторами и техническими директорами уже...