Обеспечение безопасности сервера linux
Всем привет
Это будет базовое руководство по обеспечению безопасности сервера Linux и будет охватывать Ubuntu, CentOS и Debian. Это руководство должно работать и на Red Hat, хотя это не гарантировано. Оно применимо к любым другим дистрибутивам, хотя методы, приведенные здесь, могут не работать на других дистрибутивах, и поиск подходящего метода может потребовать небольшого исследования. Это руководство применимо к любым выделенным серверам или VPS под управлением Linux, в которых у вас есть root-доступ к серверу.
Запустите свой сервер Minecraft с минимально возможным набором прав, обычно это обычная учетная запись пользователя с отключенным паролем. Чтобы отключить пароль, выполните следующую команду:
*Если вы не знаете, как создать учетную запись пользователя, ознакомьтесь с этим в разделе Аутентификация с открытым ключом ниже*.
Изменение пароля root - Рекомендуется изменить пароль root после получения информации, измените его на безопасный пароль с помощью команды:
Настройка пароля GRUB [относится к GRUB Legacy] - Пароль GRUB предотвращает физический доступ людей к вашему серверу, это полезно в случае взлома центра обработки данных.
Сначала введите следующую команду:
Она попросит вас ввести пароль, выберите его и введите дважды. Вы получите MD5-хэш, обратите внимание на хэш и пароль, который вы ввели ранее.
Затем вам нужно будет отредактировать следующие файлы:
Оба файла связаны, поэтому вы можете редактировать любой из них, разницы нет. *
Добавьте следующее ниже timeout и выше splashimage, <md5-hash> должен быть заменен на тот, который вы получили ранее:
При следующей перезагрузке вашего VPS/Dedicated Server у вас будет защищенный GRUB.
Просмотр прослушиваемых портов - Вы хотите, чтобы были запущены только те приложения, которые вы хотите запустить, команда для проверки запущенных программ и порта, который они прослушивают, следующая:
Список и удаление ненужных программ - Важно знать, что запущено в вашей системе, если есть приложение, которое вы не знаете и считаете ненужным, удалите его из системы с помощью следующих команд, не делайте этого, если вы просто считаете его ненужным, но не знаете, что делает программа. Чтобы просмотреть список установленных программ, используйте следующие команды:
или
Чтобы удалить программу, выполните следующие команды и следуйте подсказкам на экране:
или
Аутентификация с открытым ключом - это ваша альтернатива, поскольку ранее мы отключили вход по паролю. Чтобы использовать аутентификацию с открытым ключом, сделайте следующее:
Выполните следующие шаги для создания пользователя:
Добавьте следующее в открытый файл:
Добавьте в этот файл открытые ключи, к которым вы хотите иметь доступ, если вы хотите, чтобы доступ был только у вашего компьютера, найдите id_rsa.pub на вашем компьютере и скопируйте его содержимое.
Завершите аутентификацию с открытым ключом, выполнив следующие действия:
Во-первых, получите доступ к конфигурации SSH с помощью команды:
Если вы не знакомы с текстовым редактором vi, вам нужно нажать i, чтобы перейти в режим вставки, когда вы закончите редактировать файл, вам нужно будет нажать esc, а затем ввести
-> Используйте протокол SSH версии 2, убедитесь, что в вашей конфигурации есть цифра 2 рядом с протоколом.
-> Отключите аутентификацию по паролю, это необходимо для использования аутентификации по ключу SSH, которая будет описана позже. Отключите аутентификацию по паролю, добавив следующее в конфигурацию SSH:
-> Измените порт SSH, поскольку большинство атак направлено на порт 22, измените его на более высокий, например 962. Помните, что с этого момента вам всегда нужно будет использовать этот порт при входе в систему, будь то SSH или SFTP.
> Разрешите доступ к вашему серверу только определенным пользователям, измените имя пользователя AllowUsers, чтобы включить имена пользователей, которым вы хотите предоставить доступ к SSH, разделяйте имена пользователей пробелом.
Примером множественных пользователей является: AllowUsers RedDragon Red_Dragon — Это позволяет пользователям с именами RedDragon и Red_Dragon входить в систему через SSH.
Если вы хотите еще больше безопасности, вы можете использовать что-то вроде этого, это блокирует пользователей на определенном IP:
AllowUsers RedDragon@<вашip> Red_Dragon@<другой-ip>*Red_Dragon@<вашip> RedDragon@<другой-ip>*
*Вам не нужно включать раздел "Другой ip", он нужен только в том случае, если вы собираетесь использовать несколько IP.
-> vi /etc/issue.net // Задает сообщение, которое будет видно пользователю перед подсказкой Password, это происходит после подключения пользователя к серверу, но до того, как пользователь введет свой пароль. Примером может быть:
После настройки issue.net вам нужно будет зайти в конфигурацию SSH и внести изменения:
#Banner /some/path to Banner /etc/issue.net
-> vi /etc/motd // Задает сообщение, которое будет видно пользователю после входа в систему с именем пользователя и паролем, это сообщение может быть сообщением безопасности или общим сообщением для ваших администраторов, пример сообщения безопасности:
Или дружеское сообщение следующего содержания:
Не забудьте проверить чат Skype сотрудников сегодня!
После настройки motd вам нужно будет зайти в конфигурацию SSH и изменить #motd, как мы это делали ранее с файлом issue.net.
После завершения изменений нам нужно перезапустить SSH с помощью команды:
*Примечание, не отключайтесь от текущего сеанса после выполнения этой команды, откройте новый TAB в вашей программе SSH и попытайтесь войти в систему, используя нового пользователя, и убедитесь, что вы можете войти. Если вы закроете предыдущее соединение и не сможете войти в систему, используя запланированную информацию, вам придется перезагрузить сервер, так как вы заблокировали себя.
sestatus или getenforce
* Он обычно включен на Red Hat и Fedora.
Enabled // SE Linux обеспечивает соблюдение политики
Disabled // SE Linux отключен
Permissive // SE Linux включен, но регистрирует только неудачные действия политики и не обеспечивает выполнение политики.
Если отключен, вы можете включить его с помощью:
setenforce enforcing
Если вышеописанное не работает, возможно, yum-cron не установлен в вашей системе, в этом случае вам нужно сделать следующее:
Затем добавьте в файл следующее:
Затем добавьте следующее в файл:
Затем перезагрузите изменения с помощью:
Затем добавьте в файл следующее:
Добавьте следующее к предыдущему файлу:
* Вам нужно будет также разрешить порты в зависимости от того, на каких портах работает ваш сервер Minecraft.
Добавьте следующее в нижнюю часть файла, включите столько строк, сколько IP, которым вы не хотите запрещать попытки подключения, это предотвратит отказ в доступе для входа в систему из-за неудачных попыток входа. Вот пример того, что нужно добавить:
Измените ADMIN_EMAIL следующим образом
Измените SMTP_FROM следующим образом
Следующие две команды позволяют убедиться, что функция DenyHosts включена при перезагрузке сервера
Если вас интересует просмотр людей, пытающихся войти в систему, просмотрите журналы с помощью команды:
Если у вас есть заблокированный IP, который вы хотите разблокировать, вам нужно сделать следующее:
Отредактируйте следующие файлы, чтобы удалить IP-адрес:
Запустите Deny Hosts с помощью:
Если вы хотите внести в белый список определенную группу статических IP-адресов, сделайте следующее:
Убедитесь, что вы не удаляете 127.0.0.1 из списка, никогда не блокируйте localhost, добавьте в новую строку все IP-адреса, которые вы хотите внести в белый список.
Всем привет
Это будет базовое руководство по обеспечению безопасности сервера Linux и будет охватывать Ubuntu, CentOS и Debian. Это руководство должно работать и на Red Hat, хотя это не гарантировано. Оно применимо к любым другим дистрибутивам, хотя методы, приведенные здесь, могут не работать на других дистрибутивах, и поиск подходящего метода может потребовать небольшого исследования. Это руководство применимо к любым выделенным серверам или VPS под управлением Linux, в которых у вас есть root-доступ к серверу.
Общие советы - Несколько общих советов:
- Используйте SFTP, а не FTP
- Обращайте внимание на обновления и обновляйте их, когда они доступны, поскольку в них могут быть исправлены уязвимости и проблемы безопасности.
- Следите за тем, что вы скачиваете, если вы загружаете файлы не из официальных репозиториев.
- Обращайте внимание на параметры безопасности, которые вы выбираете, например, не давайте всем файлам разрешения 777.
- Отключите запущенные службы, которые вам не нужны.
Советы по Minecraft - Некоторые советы по запуску сервера Minecraft на сервере Linux:
Запустите свой сервер Minecraft с минимально возможным набором прав, обычно это обычная учетная запись пользователя с отключенным паролем. Чтобы отключить пароль, выполните следующую команду:
passwd -d
*Если вы не знаете, как создать учетную запись пользователя, ознакомьтесь с этим в разделе Аутентификация с открытым ключом ниже*.
Изменение пароля root - Рекомендуется изменить пароль root после получения информации, измените его на безопасный пароль с помощью команды:
passwd
.Настройка пароля GRUB [относится к GRUB Legacy] - Пароль GRUB предотвращает физический доступ людей к вашему серверу, это полезно в случае взлома центра обработки данных.
Сначала введите следующую команду:
grub-md5-crypt
Она попросит вас ввести пароль, выберите его и введите дважды. Вы получите MD5-хэш, обратите внимание на хэш и пароль, который вы ввели ранее.
Затем вам нужно будет отредактировать следующие файлы:
vi /boot/grub/menu.lst
или vi /boot/grub/grub.conf
Оба файла связаны, поэтому вы можете редактировать любой из них, разницы нет. *
Добавьте следующее ниже timeout и выше splashimage, <md5-hash> должен быть заменен на тот, который вы получили ранее:
password --md5 <md5-hash>
При следующей перезагрузке вашего VPS/Dedicated Server у вас будет защищенный GRUB.
Просмотр прослушиваемых портов - Вы хотите, чтобы были запущены только те приложения, которые вы хотите запустить, команда для проверки запущенных программ и порта, который они прослушивают, следующая:
netstat -tupln
Список и удаление ненужных программ - Важно знать, что запущено в вашей системе, если есть приложение, которое вы не знаете и считаете ненужным, удалите его из системы с помощью следующих команд, не делайте этого, если вы просто считаете его ненужным, но не знаете, что делает программа. Чтобы просмотреть список установленных программ, используйте следующие команды:
yum list installed
или
dpkg -l
Чтобы удалить программу, выполните следующие команды и следуйте подсказкам на экране:
yum remove <пакет>
или
apt-get --purge remove <пакет>
Аутентификация с открытым ключом - это ваша альтернатива, поскольку ранее мы отключили вход по паролю. Чтобы использовать аутентификацию с открытым ключом, сделайте следующее:
Выполните следующие шаги для создания пользователя:
useradd <имя пользователя>
// Создает пользователяpasswd <created-username>
// Изменит пароль для пользователя, когда вы нажмете enter, он попросит ввести новый парольvisudo
// Редактирование файла sudoersДобавьте следующее в открытый файл:
<созданное имя пользователя> ALL=(ALL) ALL
Переходим к аутентификации:
vi /home/<Имя_Нового_Пользователя>/.ssh/authorized_keys
Добавьте в этот файл открытые ключи, к которым вы хотите иметь доступ, если вы хотите, чтобы доступ был только у вашего компьютера, найдите id_rsa.pub на вашем компьютере и скопируйте его содержимое.
Завершите аутентификацию с открытым ключом, выполнив следующие действия:
chmod 400 /home/<created user>/.ssh/authorized_keys
chown <created user>:<created user> /home/<created user> -R
Защита SSH
Защита SSH - Защита SSH является ключевым моментом, если SSH не защищен, то ваш сервер уязвим для множества различных атак, включая перебор, который является методом, используемым для получения доступа к вашему бэкенду.Во-первых, получите доступ к конфигурации SSH с помощью команды:
vi /etc/ssh/sshd_config
Если вы не знакомы с текстовым редактором vi, вам нужно нажать i, чтобы перейти в режим вставки, когда вы закончите редактировать файл, вам нужно будет нажать esc, а затем ввести
:wq
, после чего нажать клавишу Enter, это сохранит ваши изменения.-> Используйте протокол SSH версии 2, убедитесь, что в вашей конфигурации есть цифра 2 рядом с протоколом.
-> Отключите аутентификацию по паролю, это необходимо для использования аутентификации по ключу SSH, которая будет описана позже. Отключите аутентификацию по паролю, добавив следующее в конфигурацию SSH:
PasswordAuthentication no
-> Измените порт SSH, поскольку большинство атак направлено на порт 22, измените его на более высокий, например 962. Помните, что с этого момента вам всегда нужно будет использовать этот порт при входе в систему, будь то SSH или SFTP.
> Разрешите доступ к вашему серверу только определенным пользователям, измените имя пользователя AllowUsers, чтобы включить имена пользователей, которым вы хотите предоставить доступ к SSH, разделяйте имена пользователей пробелом.
Примером множественных пользователей является: AllowUsers RedDragon Red_Dragon — Это позволяет пользователям с именами RedDragon и Red_Dragon входить в систему через SSH.
Если вы хотите еще больше безопасности, вы можете использовать что-то вроде этого, это блокирует пользователей на определенном IP:
AllowUsers RedDragon@<вашip> Red_Dragon@<другой-ip>*Red_Dragon@<вашip> RedDragon@<другой-ip>*
*Вам не нужно включать раздел "Другой ip", он нужен только в том случае, если вы собираетесь использовать несколько IP.
Установка MOTD и баннера
-> Установка MOTD и баннера, это лишь сдерживающие факторы для потенциальных хакеров.-> vi /etc/issue.net // Задает сообщение, которое будет видно пользователю перед подсказкой Password, это происходит после подключения пользователя к серверу, но до того, как пользователь введет свой пароль. Примером может быть:
Код:
Welcome to the {server-name} Dedicated Server, all connections are logged. Disconnect immediately if you are not an authorized user.
После настройки issue.net вам нужно будет зайти в конфигурацию SSH и внести изменения:
#Banner /some/path to Banner /etc/issue.net
-> vi /etc/motd // Задает сообщение, которое будет видно пользователю после входа в систему с именем пользователя и паролем, это сообщение может быть сообщением безопасности или общим сообщением для ваших администраторов, пример сообщения безопасности:
Код:
You have logged into a secure zone, your IP, login time, and username has been been sent to the server administrator!
Или дружеское сообщение следующего содержания:
Не забудьте проверить чат Skype сотрудников сегодня!
После настройки motd вам нужно будет зайти в конфигурацию SSH и изменить #motd, как мы это делали ранее с файлом issue.net.
После завершения изменений нам нужно перезапустить SSH с помощью команды:
/etc/init.d/sshd restart
*Примечание, не отключайтесь от текущего сеанса после выполнения этой команды, откройте новый TAB в вашей программе SSH и попытайтесь войти в систему, используя нового пользователя, и убедитесь, что вы можете войти. Если вы закроете предыдущее соединение и не сможете войти в систему, используя запланированную информацию, вам придется перезагрузить сервер, так как вы заблокировали себя.
SELinux
SELinux - SELinux - это механизм безопасности ядра Linux, SELinux действует как исполнитель установленной политики безопасности, что обеспечивает безопасность вашего сервера независимо от того, есть ли у вас приложения, которые нарушают политику, или пользователи, которые действуют небрежно. SELinux способен обеспечить выполнение набора целей безопасности, которые вы хотите достичь для своей системы, он включает в себя широкий спектр опций обеспечения безопасности, начиная от ограничения доступа пользователей только к тем ресурсам, которые им необходимы для работы, до блокировки демонов, работающих в сети. Вы можете проверить состояние SELinux, используя:sestatus или getenforce
* Он обычно включен на Red Hat и Fedora.
Enabled // SE Linux обеспечивает соблюдение политики
Disabled // SE Linux отключен
Permissive // SE Linux включен, но регистрирует только неудачные действия политики и не обеспечивает выполнение политики.
Если отключен, вы можете включить его с помощью:
setenforce enforcing
yum-cron
yum-cron - yum cron - это инструмент, который по умолчанию запускается раз в день ночью, он проверяет наличие обновлений в ваших пакетах и обновляет их, это особенно полезно, если вы хотите убедиться, что у вас установлены все последние обновления, которые могут устранить уязвимости в системе безопасности. Чтобы запустить yum-cron, выполните следующие действия:yum chkconfig yum-cron on
service yum-cron start
Если вышеописанное не работает, возможно, yum-cron не установлен в вашей системе, в этом случае вам нужно сделать следующее:
yum install yum-cron
Cronjobs
Cronjobs - Если вы не используете cronjobs на вашем сервере, то лучше отключить их, вы можете отключить их с помощью следующей команды:echo ALL >>/etc/cron.deny
IPV6
IPV6 - Если вы не используете сеть IPV6, рекомендуется отключить ее, вы можете отключить ее с помощью следующих команд:vi /etc/sysconfig/network
Затем добавьте в файл следующее:
Код:
NETWORKING_IPV6=no
IPV6INIT=no
Игнорирование запросов ping и broadcast
Игнорировать запросы ping и broadcast - Вы можете игнорировать запросы ping и broadcast, используя следующие команды:vi /etc/sysctl.conf
Затем добавьте следующее в файл:
Код:
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_echo_ignore_all = 1
Затем перезагрузите изменения с помощью:
sysctl -p
Отключение обнаружения USB
Отключение обнаружения USB - вам не понадобится обнаружение USB, это защищает данные в случае нарушения центра обработки данных. Вы можете отключить обнаружение USB с помощью следующих команд:vi /etc/modprobe.d/no-usb
Затем добавьте в файл следующее:
Код:
install usb-storage /bin/true
Logwatch
Logwatch - регистрирует информацию о соединениях и отправляет ее вам по электронной почте. Чтобы установить logwatch, сделайте следующее:apt-get install logwatch
или yum install log watch
// В зависимости от вашей ОСvi /etc/cron.daily/00logwatch
Добавьте следующее к предыдущему файлу:
Код:
/usr/sbin/logwatch --output mail --mailto [email protected] --detail high // Replace [email protected] with your e-mail
IPTables
IPTables - защита сетевых соединений, для настройки выполните следующие команды:iptables -F
// Удаляет все текущие правилаiptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
// Блокировать нулевые пакетыiptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
// Блокировать атаки stn-floodiptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
// Блокировка пакетов XMASiptables -A INPUT -i lo -j ACCEPT
// Добавляет интерфейс localhostiptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
// Разрешает трафик веб-сервераiptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
// Разрешает трафик веб-сервераiptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
// Разрешает SMTP-трафикiptables -A INPUT -p tcp -m tcp --dport 465 -j ACCEPT
// Разрешает SMTP-трафикiptables -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
// Разрешает чтение электронной почты на сервереiptables -A INPUT -p tcp -m tcp --dport 995 -j ACCEPT
// Разрешает чтение электронной почты на сервереiptables -A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
// Разрешает трафик IMAPiptables -A INPUT -p tcp -m tcp --dport 993 -j ACCEPT
// Разрешает IMAP-трафикiptables -A INPUT -p tcp -m tcp --dport <установленный порт ssh> -j ACCEPT
// Разрешает SSH-трафик по SSHiptables -A INPUT -p tcp -s <ваш IP> -m tcp --dport <установленный порт ssh> -j ACCEPT
// Защищает SSH кроме трафика на вашем IP, повторите для нескольких IP.iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
// Разрешает исходящий трафикiptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
iptables -L -n
// Списки правилiptables-save
// Сохраняет IP-таблицыservice iptables restart
// Применяет наши новые правила* Вам нужно будет также разрешить порты в зависимости от того, на каких портах работает ваш сервер Minecraft.
DenyHosts
DenyHosts [устарел, смотрите Fail2Ban, когда он будет добавлен] - Метод, помогающий бороться с нежелательным доступом на вашем сервере. Используйте следующие команды для настройки DenyHosts:yum install denyhosts
или apt-get install denyhosts
// В зависимости от вашей ОСvi /etc/hosts.allow
// Открывает конфигурацию запрещенных хостовДобавьте следующее в нижнюю часть файла, включите столько строк, сколько IP, которым вы не хотите запрещать попытки подключения, это предотвратит отказ в доступе для входа в систему из-за неудачных попыток входа. Вот пример того, что нужно добавить:
sshd: 127.0.0.1
sshd: 127.0.0.2
vi /etc/denyhosts.conf
// Открывает основную конфигурацию запрета хостовИзмените ADMIN_EMAIL следующим образом
ADMIN_EMAIL = <ваш email>
Измените SMTP_FROM следующим образом
SMTP_FROM = DenyHosts <<ваш email>>.
Следующие две команды позволяют убедиться, что функция DenyHosts включена при перезагрузке сервера
chkconfig denyhosts on
service denyhosts start
Если вас интересует просмотр людей, пытающихся войти в систему, просмотрите журналы с помощью команды:
tail -f /var/log/secure
Если у вас есть заблокированный IP, который вы хотите разблокировать, вам нужно сделать следующее:
/etc/init.d/denyhosts stop
// Остановка Deny HostsОтредактируйте следующие файлы, чтобы удалить IP-адрес:
vi /etc/hosts.deny
vi /var/lib/denyhosts/hosts
vi /var/lib/denyhosts/hosts-restricted
vi /var/lib/denyhosts/hosts-root
vi /var/lib/denyhosts/hosts-valid
vi /var/lib/denyhosts/users-hosts
Запустите Deny Hosts с помощью:
/etc/init.d/denyhosts start
Если вы хотите внести в белый список определенную группу статических IP-адресов, сделайте следующее:
vi /var/lib/denyhosts/allowed-hosts
Убедитесь, что вы не удаляете 127.0.0.1 из списка, никогда не блокируйте localhost, добавьте в новую строку все IP-адреса, которые вы хотите внести в белый список.