Предварительная настройка CentOS 7
После чистой установки 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 не выводить информацию и не ждать ввода пользователя.