Защитите сервер Linux, запретив удаленный вход с правами root (SSH, FTP и база данных MySQL).
В этом посте мы знаем, насколько важна безопасность. Если вы управляете своим сервером (VPS, облачный хостинг или выделенный сервер), то у вас должен быть root- доступ. Корень похож на учетную запись администратора в Windows, но только более мощный (вы можете делать все что угодно).
Вероятно, не рекомендуется переименовывать корневую учетную запись (или скрывать ее) в системе Linux, это связано с тем, что многие приложения/программы, такие как sendmail, предполагают наличие корневой учетной записи, иначе все начнет ломаться, если корень не найден (в Windows можно переименовать учетную запись администратора ). Тем не менее, вы должны иметь и иметь обычную учетную запись пользователя (менее мощную), которая обрабатывает повседневные задачи, поэтому вы не нанесете ущерб системе, если будете время от времени совершать ошибки.
SSH
Чтобы создать обычного пользователя, запустите команду sudo adduser nuser, где nuser — это учетная запись пользователя, которую мы хотим добавить. Следуйте инструкциям, чтобы установить пароль, или вы можете ввести пароль позже.
Дважды проверьте, что вы действительно можете войти в систему с помощью SSH и переключиться на root с помощью su. Как только они будут подтверждены, вам нужно отредактировать файл в /etc/ssh/sshd_config с помощью вашего любимого текстового редактора (например, vim). Затем найдите строку PermitRootLogin yes и измените ее на PermitRootLogin no. Перезапустите ssh-сервер следующим образом:
Затем, если вы повторно войдете в систему с помощью root, он всегда будет отклонен, что делает систему немного безопасной (как вы знаете, существует множество IP-адресов, которые пытаются взломать вашу учетную запись root).
FTP (всFTP)
FTP не так безопасен, но если вы настаиваете на его использовании, убедитесь, что вы используете SFTP или SSL/TLS, если применимо. Популярным FTP-сервером в Linux является vsFTP, и после его установки убедитесь, что вы также отключили вход в систему root.
Конфигурация vsFTP находится в файле /etc/vsftp.conf, и вам необходимо убедиться, что установлены следующие значения (можно добавить):
anonymous_enable=NO # no anonymous login plz
local_enable=YES
write_enable=YES
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.users
И создайте файл по адресу /etc/vsftpd.users, если его там еще нет, и добавьте разрешенных пользователей построчно в файл. Перезапустите vsFTP:
sudo service vsftpd restart
И если вы войдете в систему с помощью root, он будет отклонен с этим сообщением:
Connecting to: XXXXXXXXX
220 (vsFTPd 3.0.2)
USER root
530 Permission denied.
220 (vsFTPd 3.0.2)
USER root
530 Permission denied.
Certificate:
Can't connect
LastError: 0
База данных MySQL
Отключить root-вход удаленно
Удалите удаленный вход root в вашу базу данных MySQL, потому что сохраняется высокий риск доступа к вашей учетной записи root с другого компьютера, а не локально. Однако, если у вас есть выделенный сервер, служащий базой данных, то это другая история, и в этом случае вам необходимо усилить пароль root и, возможно, использовать обычные учетные записи в вашем WordPress или других веб-сайтах. Убедитесь, что вы не открываете доступ к этим файлам конфигурации (например, wp-config.php). Просто сделайте эти файлы недоступными для записи.
Войдите в MySQL из командной строки и выполните следующие две команды, чтобы удалить удаленный вход root.
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
flush privileges;
Отключить все входы в систему удаленно
Если вы хотите запретить все входы в систему удаленно и разрешить только локальные подключения, вы можете просто добавить skip-networking (или раскомментировать строку) в /etc/mysql/my.cnf в разделе [mysqld].
[mysqld]
port=3306
skip-networking
Затем вам нужно перезапустить демон MySQLd.
sudo service mysqld restart