Вступ
Передумови
Крок 1: Створіть стандартний обліковий запис користувача
Крок 2. Заборонити автентифікацію користувача Root та пароля
Крок 3: Налаштуйте часовий пояс
Крок 4. Увімкніть брандмауер IPTables
Крок 5. Дозволити додатковий трафік через брандмауер
Вступ
Щойно активований сервер CentOS 7 потрібно налаштувати, перш ніж його можна буде використовувати як виробничу систему. У цій статті найголовніші налаштування, які вам доведеться зробити, наведені в легкому для розуміння формі.
Передумови
Нещодавно активований сервер CentOS 7, бажано налаштований з ключами SSH. Увійдіть на сервер як root.
ssh -l root server-ip-address
Крок 1: Створіть стандартний обліковий запис користувача
З міркувань безпеки не рекомендується виконувати щоденні обчислювальні завдання за допомогою облікового запису root. Замість цього рекомендується створити стандартний обліковий запис користувача, який використовуватиметься sudo
для отримання прав адміністратора. Для цього підручника припустимо, що ми створюємо користувача на ім’я joe . Щоб створити обліковий запис користувача, введіть:
adduser joe
Встановіть пароль для нового користувача. Вам буде запропоновано ввести та підтвердити пароль.
passwd joe
Додайте нового користувача до групи колес, щоб він міг отримати права root за допомогою sudo
.
gpasswd -a joe wheel
Нарешті, відкрийте інший термінал на локальній машині та скористайтеся такою командою, щоб додати ваш ключ SSH до домашнього каталогу нового користувача на віддаленому сервері. Перед встановленням ключа SSH вам буде запропоновано пройти автентифікацію.
ssh-copy-id joe@server-ip-address
Після встановлення ключа увійдіть на сервер, використовуючи новий обліковий запис користувача.
ssh -l joe server-ip-address
Якщо вхід пройшов успішно, ви можете закрити інший термінал. Відтепер усім командам передуватиме sudo
.
Крок 2. Заборонити автентифікацію користувача Root та пароля
Оскільки тепер ви можете ввійти в систему як звичайний користувач за допомогою ключів SSH, гарною практикою безпеки є налаштувати SSH так, щоб автентифікація користувача root та аутентифікація пароля були заборонені. Обидва параметри мають бути налаштовані у файлі конфігурації демона SSH. Отже, відкрийте його за допомогою nano
.
sudo nano /etc/ssh/sshd_config
Знайдіть рядок PermitRootLogin , розкоментуйте його та встановіть значення no .
PermitRootLogin no
Зробіть те ж саме для PasswordAuthentication
рядка, який уже має бути розкоментований:
PasswordAuthentication no
Збережіть і закрийте файл. Щоб застосувати нові налаштування, перезавантажте SSH.
sudo systemctl reload sshd
За замовчуванням час на сервері вказано в UTC. Найкраще налаштувати його так, щоб показувати місцевий часовий пояс. Для цього знайдіть у каталозі файл зони вашої країни/географічної області /usr/share/zoneinfo
та створіть з нього символічне посилання на /etc/localtime
каталог. Наприклад, якщо ви перебуваєте у східній частині США, ви створите символічне посилання, використовуючи:
sudo ln -sf /usr/share/zoneinfo/US/Eastern /etc/localtime
Після цього перевірте, чи тепер час вказано за місцевим часом, виконавши date
команду. Вихід має бути подібним до:
Tue Jun 16 15:35:34 EDT 2015
EDT в вихідних підтверджує , що це LocalTime.
Крок 4. Увімкніть брандмауер IPTables
За замовчуванням активним додатком брандмауера на нещодавно активованому сервері CentOS 7 є FirewallD. Хоча це хороша заміна для IPTables, багато програм безпеки все ще не підтримують його. Тому, якщо ви будете використовувати будь-яку з цих програм, наприклад OSSEC HIDS, краще вимкнути/видалити FirewallD.
Почнемо з вимкнення/видалення FirewallD:
sudo yum remove -y firewalld
Тепер давайте встановимо/активуємо IPTables.
sudo yum install -y iptables-services
sudo systemctl start iptables
Налаштуйте IPTables для автоматичного запуску під час завантаження.
sudo systemctl enable iptables
IPTables на CentOS 7 поставляється з набором правил за замовчуванням, який ви можете переглянути за допомогою наступної команди.
sudo iptables -L -n
Вихід буде нагадувати:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Ви можете бачити, що одне з цих правил дозволяє трафік SSH, тож ваш сеанс SSH безпечний.
Оскільки ці правила є правилами часу виконання і будуть втрачені під час перезавантаження, найкраще зберегти їх у файл, використовуючи:
sudo /usr/libexec/iptables/iptables.init save
Ця команда збереже правила у /etc/sysconfig/iptables
файлі. Ви можете будь-коли редагувати правила, змінивши цей файл за допомогою свого улюбленого текстового редактора.
Крок 5. Дозволити додатковий трафік через брандмауер
Оскільки ви, швидше за все, будете використовувати свій новий сервер для розміщення деяких веб-сайтів у певний момент, вам доведеться додати нові правила до брандмауера, щоб дозволити трафік HTTP і HTTPS. Щоб зробити це, відкрийте файл IPTables:
sudo nano /etc/sysconfig/iptables
Відразу після або перед правилом SSH додайте правила для трафіку HTTP (порт 80) і HTTPS (порт 443), щоб ця частина файлу відображалася, як показано в блоці коду нижче.
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
Збережіть і закрийте файл, а потім перезавантажте IPTables.
sudo systemctl reload iptables
Після завершення вищезгаданого кроку ваш сервер CentOS 7 має бути достатньо захищеним і готовий до використання у виробництві.