Начальная настройка centos 7

1: Установка PAM

Сначала нужно установить PAM, Pluggable Authentication Module – это инфраструктура для аутентификации пользователей, используемая в системах Linux. Поскольку Google разработал приложение OATH-TOTP, необходимо было создать и PAM для генерации одноразовых паролей, полностью совместимый с любым TOTP-приложением (таким как Google Authenticator or Authy).

Для начала нужно добавить репозиторий EPEL (Extra Packages for Enterprise Linux):

Установите PAM. При этом вам может быть предложено принять ключ EPEL, если вы пользуетесь репозиторием впервые.

После установки PAM можно использовать вспомогательное приложение, установленное вместе с модулем, и сгенерировать TOTP-ключ для аккаунта, который в дальнейшем будет защищён двухфакторной аутентификацией

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

Запустите инициализацию:

После этого программа задаст несколько вопросов. Сначала нужно указать, нужно ли синхронизировать токены авторизации по времени.

PAM позволяет создавать токены, синхронизированные по времени, и токены на основе математического алгоритма.

Токены на основе математического алгоритма создаются сериями на основе секретного ключа; ни один из таких токенов невозможно угадать, даже если предыдущие токены известны. Синхронизированные по времени токены постоянно меняются в установленный интервал времени (например, раз в 30 секунд). В данном руководстве будут использоваться синхронизированные по времени токены, поскольку такие обычно используются в приложениях типа Google Authenticator. Выберите y.

После этого на экране появится большой вывод, содержащий QR-код. Используйте приложение на смартфоне, чтобы просканировать QR-код, или введите секретный ключ вручную. Если код слишком большой для сканирования, откройте уменьшенную его версию по URL-адресу, предоставленному тут же. После этого вы получите шестизначный код, который будет обновляться каждые 30 секунд.

Примечание: Сохраните секретный ключ, проверочный код и аварийные скретч-коды в надежном месте (например, в менеджере паролей). Эти коды – единственный способ восстановить доступ к TOTP-приложению.

Остальные вопросы настраивают работу PAM. Рассмотрим их по очереди.

После этого ключи и опции в файле .google_authenticator обновятся. Если ответить no, программа завершит работу и ничего не запишет в файл, и потому аутентификация не будет работать.

Это предотвратит атаки повторного воспроизведения (replay), так как каждый код будет недействителен после использования. Таким образом, злоумышленник не сможет перехватить использованный код.

Эта опция будет создавать до 8 валидных кодов в течение 4 минут в скользящем окне. Если выбрать no, количество действительных кодов будет ограничено до 3 за полторы минуты. Это гораздо более безопасный вариант.

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

Примечание: После настройки можно создать резервную копию секретного ключа. Для этого скопируйте файл ~/.google-authenticator. Теперь вы сможете развернуть его в других системах или использовать как резервную копию.

Как отключить IPv6 в CentOS?

На время написания статьи активного использования ipv6 в России нет, да и зачастую если таковая возможность имеется, администраторы предпочитают протокол ipv4. Поэтому если вы все же не используете данный протокол, его нужно отключить на сервере. Если вы точно уверены, что ни один из сервисов не настроен под работу с ipv6, можете сразу перейти к настройке сетевого интерфейса, если же нет, то начните с проверки. Нам нужно проверить, какие сервисы используют ipv6 и отключить данный протокол в конфигурации сервиса. Запустим команду:

У меня сервер тестовый, поэтому ipv6 используется только для sshd и cronyd. Это можно определить по “:::”.

Чтобы не возникало проблем после отключения ipv6 в конфигурации сети, отключите данный протокол в сервисах, в которых они используются на вашем сервере. Например для sshd, нужно открыть конфигурационный файл:

И раскомментируйте строки:

#AddressFamily any
#ListenAddress 0.0.0.0

После чего перезапустите сервис:

Как видим, для sshd протокол ipv6 теперь недоступен. Проделайте аналогичные настройки со всеми сервисами.

Перейдем к отключению протокола ipv6 в настройках сети. Откройте файл /etc/sysctl.conf:

И добавьте туда следующие строки:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

Сохраните файл и примените через:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

Перейдем к файлу /etc/sysconfig/network. Добавьте в него следующую конфигурацию:

NETWORKING_IPV6=no
IPV6INIT=no

Из файла конфигурации сетевого интерфейса /etc/sysconfig/network-scripts/ifcfg-eth0 удалите строку:

IPV6INIT="yes"

И наконец добавим запрет на работу ipv6 в grub:

В конец строки GRUB_CMDLINE_LINUX, добавляем:

ipv6.disable=1

После всех настроек, сохраните файл и обновите grub:

Выполните перезагрузку сервера и проверьте конфигурацию сети:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 185.*.*.* netmask 255.255.255.0 broadcast 185.*.*.255
ether 52:54:00:d3:1c:3e txqueuelen 1000 (Ethernet)
RX packets 10068 bytes 613092 (598.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 32 bytes 5399 (5.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Протокол ipv6 на сервере отключен.

Установка системы управления БД MySql

Перед тем как произвести установку MySql в CentOS 7, стоит уточнить, что при использовании стандартного менеджера загрузок Yum система скачает альтернативную версию программы под название MariaDB, поэтому в случае с CentOS придется идти обходным путем.

Для установки MySql необходимо:

  • Загрузить клиент MySql с официального репозитория утилиты с помощью команды wget *ссылка на файл с клиентом MySql*.
  • Затем установить его в систему командами sudo rpm –ivh *полное название rpm файла с нужной версией MySql* и sudo yum install mysql-server.
  • Затем дважды подтвердить операцию, введя в командную строку Y.

Create a key-based Authentication SSH connection

If your Server is accessible over the Internet, you can use public key authentication instead of passwords, because SSH key authentication with password phrase is way more secure than password-only authentication, while a password can eventually be cracked with a Brute-force attack or keyloggers.

Depending on your client OS you should follow the instructions to create a pair of authentication keys.

If you are using Windows:

  • Open PuTTYgen utility.
  • For Type of key to generate, select SSH-2 RSA
  • In the Number of bits in a generated key field is refer to how complicated you want your key to be, you can change the value between 2048 to 4096 for make more complicated key.
  • After selecting your settings click on Generate to start Process.
  • Move your mouse pointer around in the blank area of the Key section, below the progress bar (to generate some randomness) until the progress bar is full.
  • A private and public key pair has now been generated.
  • (Optional): it’s also recommended to set a passphrase for your key.
  • Save Private and Public keys

 
 CAUTION: be careful with choosing the path you saving the keys, if you lose them and username/password logins are disabled on your server, you might lose your access to your server.

  • Then open your Putty, expand the SSH category and click on “Auth”
  • In “private key file for authentication” browse your Private key.
  • Finally, you should copy the Public key file in your server in this path: ~/.ssh/authorized_keys

If you are using Linux

–To generate an RSA key pair

  • Accept the default file location of /.ssh/id_rsa. Entering a passphrase is recommended
  • The public key is written to ~/.ssh/id_rsa.pub The private key is written to ~/.ssh/id_rsa
  • Copy the contents of ~/.ssh/id_rsa.pub from client system into the file ~/.ssh/authorized_keys on the Server.
  • You may use “cat” command on the client side to view the file and use an editor like “nano” on the server side to modify or create the authorized_keys file.
  • After all, it’s recommended to disable the Password authentication as well.

Uncomment these lines and change them refer to the line below:

PasswordAuthentication no
PubkeyAuthentication yes

Настройка сети из консоли (командами)

Настройка из консоли будет работать только до перезагрузки системы. Ее удобно применять для временного конфигурирования или проведения тестов.

Назначение IP-адреса или добавление дополнительного к имеющемуся:

ip a add 192.168.0.156/24 dev ens32

* в данном примере к сетевому интерфейсу ens32 будет добавлен IP 192.168.0.156.

Изменение IP-адреса:

ip a change 192.168.0.157/24 dev ens32

* однако, по факту, команда отработает также, как add.

Удаление адреса:

ip a del 192.168.163.157/24 dev ens32

Добавление маршрута по умолчанию:

ip r add default via 192.168.0.1

Добавление статического маршрута:

ip r add 192.168.1.0/24 via 192.168.0.18

Удаление маршрутов:

ip r del default via 192.168.160.1

ip r del 192.168.1.0/24 via 192.168.0.18

Подробнее про управление маршрутами в CentOS.

Шаг #4: Настройка конфигурации SSH

Так как в сети существует большое количество запущенных по всему миру брутфорс-программ, которые день и ночь подбирают пароли к пользователю root и есть вероятность того, что ваш VPS тоже попадет под раздачу. В таком случае, разумным решением будет запретить возможность подключения root пользователя по SSH.

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

Изменим значение директивы .

#PermitRootLogin yes
PermitRootLogin no

1
2

#PermitRootLogin yes

PermitRootLogin no

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

Также изменим стандартный номер порта SSH, т.к. именно на стандартный 22 порт «стучатся» брутфорс-программы.

Все порты можно разделить на три группы:

  • 0 — 1023 — хорошо известные порты, также относятся к системным портам;
  • 1024 — 49151 — зарегистрированные порты, также относятся к пользовательским портам;
  • 49152 — 65535 — динамические порты, также относятся к частным портам.

Для начала выберем номер порта, на котором будет работать SSH. Выбирать значение номера порта рекомендуется в пределах 49152 — 65535. Чтобы выбрать какой-либо порт, сначала нужно проверить не занят ли он другим сервисом. Для примера, я выберу порт с номером 63356.

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

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

Теперь в файле  изменим значение директивы Port:

#Port 22
Port 63356

1
2

#Port 22

Port63356

Перезапустим сервис SSH для принятия настроек.

Укажем файрволу, чтобы он пропускал подключения по новому SSH порту — 63356

Убедимся, что добавленный порт прослушивается (активен):

Теперь для того чтобы подключиться к серверу по SSH, необходимо будет всегда явно указывать номер порта.

Use Strong Passwords/Usernames

One of the first things you’ll notice if you have ssh running and exposed to the outside world is that you’ll probably log attempts by hackers to guess your username/password. Typically a hacker will scan for port 22 (the default port on which ssh listens) to find machines with ssh running, and then attempt a brute-force attack against it. With strong passwords in place, hopefully any attack will be logged and noticed before it can succeed.

Hopefully you already use strong passwords, but if you are not then try to choose passwords that contains:

  • Minimum of 8 characters
  • Mix of upper and lower case letters
  • Mix of letters and numbers
  • Non alphanumeric characters (e.g. special characters such as ! » £ $ % ^ etc)

The benefits of strong passwords aren’t specific to ssh, but have an impact on all aspects of systems security. Further information on passwords can be found in the CentOS documentation:

Installing and Enabling OpenSSH on CentOS 7

SSH software packages are included on CentOS by default. However, if these packages are not present on your system, easily install them by completing Step 1, outlined below.

Step 1: Install OpenSSH Server Software Package

Enter the following command from your terminal to start the installation process:

This command installs both the OpenSSH client applications, as well as the OpenSSH server daemon, sshd.

In this example, the system informs us that the latest version is already present.

Step 2: Starting SSH Service

To start the SSH daemon on the OpenSSH server:

When active, sshd continuously listens for client connections from any of the client tools. When a connection request occurs, sshd sets up the correct connection.

Step 3: Check sshd status

Check the status of the SSH daemon:

As we have previously started the service, the output confirms that it is active.

To stop the SSH daemon enter:

We can check if the service has stopped by verifying the status. The output shows that the service is inactive and the time and date when the status last changed.

Step 4: Enable OpenSSH Service

Enable SSH to start automatically after each system reboot by using the systemctl command:

To disable SSH after reboot enter:

Совет 5: Обязательная MFA

Вы также можете сделать многофакторную аутентификацию обязательной для всех и запретить пользователям самостоятельно генерировать ключи. Для этого нужно просто использовать один и тот же файл .google-authenticator для всех пользователей (в этом файле нет индивидуальных данных).

После начальной настройки скопируйте этот файл в root каждого домашнего каталога и измените права на файл (для этой операции необходимы привилегии root). Также можно скопировать файл в /etc/skel/, откуда он будет автоматически скопирован в домашний каталог нового пользователя.

Важно! Такая настройка представляет угрозу безопасности, поскольку все используют один и тот же второй фактор. Это означает, что в случае утечки информации сразу все пользователи потеряют один из факторов аутентификации

Примите это во внимание, если решите использовать такой подход

Также можно сделать MFA обязательной с помощью сценария bash, который:

  • Создаст TOTP-токен;
  • Загрузит приложение Google Authenticator и просканирует QR-код;
  • Запустит google-authenticator и проверит, существует ли файл .google-authenticator.

Чтобы сценарий запускался при входе пользователя, назовите его .bash_login и поместите его в root домашнего каталога пользователей.

Настройка ssh клиента

В Debian настройки клиентской части ssh делятся на глобальные и пользовательские. Глобальные клиентские настройки находятся в файле /etc/ssh/ssh_config и применяются ко всем пользователям. Пользовательские настройки могут находиться в домашнем каталоге пользователя, в ~/.ssh/config и применяются к одному пользователю. Файл пользовательских настроек не создаётся автоматически в отличие от файла глобальных настроек клиентской части ssh. Для большинства выполняемых задач подойдут настройки по умолчанию, но для удобства использования, так сказать для тюнинга или для выполнения нестандартных задач клиентские настройки изменяются. Рассмотрим вкратце некоторые из этих настроек. Полезно помнить о приоритетах настроек: высший приоритет имеют ключи командной строки, затем следуют настройки пользователя, а после них используются глобальные настройки клиентской части.

Параметр Host. Ограничивает множество хостов, к которым применяются последующие (до ближайшей новой директивы Host) директивы, по указанным шаблонам (хост должен соответствовать хотя бы одному шаблону). Шаблон, состоящий из одного символа *, соответствует любому хосту. Под хостом в данном контексте понимается аргумент имя_хоста передаваемый в командной строке (т.е. никаких преобразований перед сравнением не выполняется).

Параметр HostName. Устанавливает соответствие между псевдонимами, сокращениями и настоящими именами хостов. По умолчанию используется имя, передаваемое в командной строке. Допустимо непосредственное указание IP-адресов.

Параметр Port. Порт на удалённой машине, к которому следует подключаться. Значение по умолчанию — 22

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

В качестве примера я создам файл пользовательских настроек /home/selifan/.ssh/config следующего содержания:

Host sunup

HostName sunup.aitishnik.local

Port 2203

User andrey

Host windbag

HostName windbag.nnov.ru

Port 2280

User joker

Host 212.177.65.1

HostName 212.177.65.1

Port 2222

User forester

Теперь при подключении к компьютерам sunup.aitishnik.local, windbag или по ip адресу 212.177.65.1 мне не нужно вспоминать, ни имя пользователя, ни ssh порт подключения, достаточно после ssh набрать имя сервера. Просто и удобно! Описания всех параметров, значений и некоторых примеров находятся в man ssh_config. Продолжаем настраивать SSH и читаем «Генерация ключей SSH».

Об авторе:

Меня зовут Андрей Золкин. Из более, чем пятнадцати лет работы в сфере информационных технологий, десять лет работаю с системами, базирующимися на открытом исходном коде. На страницах сайта Aitishnik.Ru веду блоги по CMC Joomla и Debian GNU/Linux.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
IP-файл
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: