Предварительная настройка CentOS 7

| CentOS

После чистой установки CentOS 7 в виртуальную среду необходимо произвести подготовительные действия по настройке гостевой операционной системы к работе. Далее предполагается, что все команды выполняются от пользователя root.

Базовые действия

Обновляем пакетный индекс, скачиваем и устанавливаем обновленные пакеты:

yum -y update && yum -y upgrade

Устанавливаем и активируем автозапуск крона:

yum -y install crontabs sudo
systemctl enable crond.service

Создаем пользователя в котором мы будем работать:

useradd fl
passwd fl
usermod -a -G wheel fl

Настриваем часовой пояс, для этого обновляем системный список часовых поясов tzdata с помощью yum:

yum -y install tzdata

Выбираем часовой пояс Asia/Yekaterinburg

timedatectl set-timezone Asia/Yekaterinburg 

Ставим сим. линк

ln -s /usr/share/zoneinfo/Asia/Yekaterinburg /etc/localtime

Настройка сетевой подсистемы

Устанавливаем программу netstat

yum -y install net-tools

Защищаем сервер open-ssh от подбора паролей, разрешив подключаться по 22 TCP порту только для узлов из сети 123.123.123.0/24 :

iptables -I INPUT -p tcp --dport 22 -s 123.123.123.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j REJECT

Чтобы настройки сохранились после перезагрузки, внесем изменения в конфигурационный файл /etc/sysconfig/iptables-config:

vi /etc/sysconfig/iptables-config
IPTABLES_SAVE_ON_RESTART="yes"
IPTABLES_SAVE_ON_STOP="yes"

Отключите firewalld с помощью следующей команды:

systemctl disable firewalld

Затем установим iptables-service с помощью следующей команды:

yum -y install iptables-services

Затем включим iptables как службу:

systemctl enable iptables

Далее сохраняем произведенные настройки iptables в файл.

service iptables save

Тюнинг openssh-server

Разрешаем принятие подключения только по IPv4 протоколу:

vi /etc/ssh/sshd_config
...
AddressFamily inet
...

Применение настроек:

systemctl restart sshd

Отключаем selinux

Открываем /etc/selinux/config файл и устанавливаем SELINUX mod в disabled:

vi /etc/selinux/config
...
SELINUX=disabled
...

Сохраняем файл и перезагружаем систему CentOS:

sudo shutdown -r now

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

sestatus

Обновление SSL сертификата

Первым шагом к использованию Let's Encrypt для получения сертификата SSL является установка программного обеспечения certbot на вашем сервере. В настоящее время лучший способ установить его, воспользовавшись EPEL репозиторием.

sudo yum install epel-release

После включения репозитория вы можете получить пакет certbot-nginx, набрав:

sudo yum install certbot-nginx

Получение сертификата

Далее предполагается, что nginx установленн и настроен.

Certbot предоставляет множество способов получения сертификатов SSL с помощью различных плагинов. Плагин Nginx позаботится о перенастройке Nginx и перезагрузке конфигурации при необходимости:

sudo certbot --nginx -d example.com -d www.example.com

Это запускает certbot с плагином --nginx, используя -d, чтобы указать имена доменов, для которых получаем сертификат.

Обновление параметров Диффи-Хеллмана

Если вы сейчас протестируете свой сервер с помощью SSL Labs Server Test, он получит оценку B только из-за слабых параметров Диффи-Хеллмана. Это влияет на безопасность первоначального обмена ключами между нашим сервером и его пользователями. Мы можем исправить это, создав новый файл dhparam.pem и добавив его в server блок.

Создайте файл с помощью openssl:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Это займет некоторое время, до нескольких минут. Когда это будет сделано, откройте файл конфигурации Nginx, содержащий server блок. В нашем примере это файл конфигурации по умолчанию:

sudo vi /etc/nginx/nginx.conf

Вставьте следующую строку в любом месте блока server:

. . .
ssl_dhparam /etc/ssl/certs/dhparam.pem;

Сохраните файл и выйдите из редактора, затем проверьте конфигурацию:

sudo nginx -t

Если ошибок нет, перезагрузите Nginx:

sudo systemctl reload nginx

Теперь сайт стал более безопасным и должен получить рейтинг А.

Настройка автоматического продления

Сертификаты Let’s Encrypt действительны только в течение девяноста дней. Это должно побудить пользователей автоматизировать процесс обновления сертификатов. Нам нужно настроить регулярно запускаемую команду, чтобы проверять срок действия сертификатов и автоматически обновлять их.

sudo crontab -e

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

15 3 * * * /usr/bin/certbot renew --quiet

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