Серия RHCSA: Обеспечение безопасности SSH, установка имени хоста и включение сетевых служб – Часть 8

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

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

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

RHCSA: Secure SSH and Enable Network Services – Part 8

Установка и защита SSH-соединения

Чтобы вы могли войти удаленно на систему RHEL 7 с помощью SSH, вам нужно установить пакеты openssh, openssh-clients и openssh-servers. Следующая команда не только установит программу удаленного входа, но также инструмент безопасной передачи файлов, а также утилиту удаленного копирования файлов:

# yum update && yum install openssh openssh-clients openssh-servers

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

После установки есть несколько основных вещей, о которых нужно помнить, если вы хотите обеспечить безопасный удаленный доступ к вашему SSH-серверу. Следующие настройки должны быть присутствовать в файле /etc/ssh/sshd_config.

1. Измените порт, на котором будет прослушиваться демон sshd, с 22 (значение по умолчанию) на высокий порт (2000 или больше), но сначала убедитесь, что выбранный порт не используется.

Например, предположим, вы выбрали порт 2500. Используйте netstat, чтобы проверить, используется ли выбранный порт или нет:

# netstat -npltu | grep 2500

Если netstat ничего не возвращает, вы можете безопасно использовать порт 2500 для sshd, и вам нужно изменить настройку порта в файле конфигурации следующим образом:

Port 2500

2. Разрешите только протокол 2:

Protocol 2

3. Настройте тайм-аут аутентификации на 2 минуты, не разрешайте входа под пользователем root и ограничьте минимум список пользователей, которые могут авторизоваться через ssh:

LoginGraceTime 2m
PermitRootLogin no
AllowUsers gacanepa

4. Если возможно, используйте проверку подлинности на основе ключей вместо проверки подлинности паролем:

PasswordAuthentication no
RSAAuthentication yes
PubkeyAuthentication yes

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

  1. Включите беспорочный вход в SSH

Настройка сети и разрешения имён

1. Каждый системный администратор должен хорошо знать следующие системно-широкие файлы конфигурации:

  1. Файл /etc/hosts используется для преобразования имен <—> IP-адреса в небольших сетях.

Каждая строка в файле /etc/hosts имеет следующую структуру:

IP address - Hostname - FQDN

Например,

192.168.0.10	laptop	laptop.gabrielcanepa.com.ar

2. В файле /etc/resolv.conf указываются IP-адреса серверов DNS и домен поиска, который используется для дополнения данного запроса имени до полного доменного имени, если суффикс домена не указан.

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

nameserver - IP address

Например,

nameserver 8.8.8.8

3. В файле /etc/host.conf указываются методы и порядок, которым определяются имена хостов в сети. Другими словами, он сообщает резольверу имен, какие службы использовать и в каком порядке.

Хотя в этом файле есть несколько параметров, наиболее распространенная и базовая настройка включает строку, как показано ниже:

order bind,hosts

Что указывает, что резольвер должен сначала искать в указанных в файле resolv.conf серверах имен, а затем в файле /etc/hosts для разрешения имен.

4. Файл /etc/sysconfig/network содержит маршрутизацию и общую информацию о хосте для всех сетевых интерфейсов. Могут использоваться следующие значения:

NETWORKING=yes|no
HOSTNAME=value

Где значение должно быть полным доменным именем (FQDN).

GATEWAY=XXX.XXX.XXX.XXX

Где XXX.XXX.XXX.XXX – IP-адрес шлюза сети.

GATEWAYDEV=value

В многоядерной машине значение является устройством шлюза, например, enp0s3.

5. Файлы находятся в /etc/sysconfig/network-scripts (конфигурационные файлы сетевых адаптеров).

В упомянутой ранее директории вы найдете несколько обычных текстовых файлов с названиями.

ifcfg-name

Имя – это имя НИК, возвращаемое ip link show:

Check Network Link Status

Например:

Network Files

Кроме для интерфейса loopback, вы можете ожидать аналогичную конфигурацию для ваших НИКов. Обратите внимание, что некоторые переменные, если они установлены, будут перекрывать те, которые присутствуют в /etc/sysconfig/network для этого конкретного интерфейса. Каждая строка прокомментирована для уточнения в этой статье, но в реальном файле следует избегать комментариев:

HWADDR=08:00:27:4E:59:37 # The MAC address of the NIC
TYPE=Ethernet # Type of connection
BOOTPROTO=static # This indicates that this NIC has been assigned a static IP. If this variable was set to dhcp, the NIC will be assigned an IP address by a DHCP server and thus the next two lines should not be present in that case.
IPADDR=192.168.0.18
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
NM_CONTROLLED=no # Should be added to the Ethernet interface to prevent NetworkManager from changing the file.
NAME=enp0s3
UUID=14033805-98ef-4049-bc7b-d4bea76ed2eb
ONBOOT=yes # The operating system should bring up this NIC during boot

Установка имени хоста

В Red Hat Enterprise Linux 7 для запроса и установки имени хоста системы используется команда hostnamectl.

Чтобы отобразить текущее имя хоста, введите:

# hostnamectl status
Check System Hostname

Чтобы изменить имя хоста, используйте

# hostnamectl set-hostname [new hostname]

Например,

# hostnamectl set-hostname cinderella

Чтобы изменения вступили в силу, вам понадобится перезапустить демон hostnamed (так вы не будете обязаны выходить и заходить снова, чтобы применить изменения):

# systemctl restart systemd-hostnamed
Set System Hostname

Кроме того, RHEL 7 также включает утилиту nmcli, которая может использоваться для одной и той же цели. Чтобы отобразить имя хоста, выполните:

# nmcli general hostname

и чтобы изменить его:

# nmcli general hostname [new hostname]

Например,

# nmcli general hostname rhel7
Set Hostname Using nmcli Command

Запуск сетевых служб при загрузке

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

В случае firewalld (/usr/lib/systemd/system/firewalld.service):

[Install]
WantedBy=basic.target
Alias=dbus-org.fedoraproject.FirewallD1.service

Чтобы включить службу:

# systemctl enable firewalld

С другой стороны, отключение firewalld означает удаление символических ссылок:

# systemctl disable firewalld
Enable Service at System Boot

Заключение

В этой статье мы резюмировали, как установить и защитить соединения через SSH с сервером RHEL, как изменить его имя и, наконец, как обеспечить автоматический запуск сетевых служб при загрузке системы. Если вы заметите, что определенная служба не удалось запустить правильно, вы можете использовать systemctl status -l [service] и journalctl -xn для устранения неполадок.

Не стесняйтесь высказать свое мнение об этой статье, используя форму комментариев ниже. Вопросы также приветствуются. Мы с нетерпением ждем от вас обратной связи!

Source:
https://www.tecmint.com/rhcsa-series-secure-ssh-set-hostname-enable-network-services-in-rhel-7/