На моем сервере есть и iptables, и ufw. Нужно ли мне настраивать оба брандмауэра?
ба, к которым вы можете получить доступ через веб-браузер, работают в дистрибутиве Linux. Здесь мы покажем вам, как можно защитить свой сервер Linux.Примечание. Это руководство было создано с использованием сервера Ubuntu, но оно применимо и для других дистрибутивов Linux, включая ваш локальный веб-сервер .
1. Удалить корневой доступ по SSH
Один из самых быстрых способов защитить ваш сервер Ubuntu — это защитите свой демон SSH , отключив корневой доступ по SSH. По умолчанию сервер OpenSSH разрешает любом
Contents
1. Удалить корневой доступ по SSH
имени пользователя root.Например, выполнение следующей команды на незащищенном сервере приведет к появлению запроса на вход:
ssh root@insecure.server.ip.address
Это может стать проблемой, поскольку в этом случае ваш сервер станет открытым и уязвимым для атаки методом подбора пароля. Чтобы это исправить, войдите на свой сервер Linux и обновите файл конфигурации демона SSH.
Зайдя на сервер Linux, отредактируйте файл конфигурации SSH:
sudo nano /etc/ssh/sshd_config
Найдите переменную PermitRootLogin в GNU Nano, нажав Ctrl+ Wи набрав PermitRootLogin
.
Измените значение PermitRootLogin с «да» на «нет», затем сохраните файл, нажав Ctrl+ o, затем Ctrl+ x.
Чтобы применить новые настройки, перезагрузите демон SSH сервера через systemctl
:
sudo systemctl restart ssh
2. Используйте пару открытых ключей для доступа по SSH
Еще один быстрый способ защитить ваш сервер Linux — создать пару открытых ключей между вашей локальной учетной записью и учетной записью пользователя SSH. При таком подходе процесс входа в систему с паролем не требуется, и вы автоматически аутентифицируетесь на удаленном сервере.
Для создать пару открытых ключей необходимо сначала запустить на локальном компьютере следующую команду:
ssh-keygen
Программа генерации ключей запросит у вас ряд сведений о ключе, который вы хотите создать. Вы можете безопасно оставить эти параметры по умолчанию, нажав Enterтри раза.
Экспортируйте новую пару открытых ключей на удаленный сервер с помощью программы ssh-copy-id
. Это простая утилита, которая подготавливает локальные и удаленные компьютеры к аутентификации с открытым ключом через SSH.
ssh-copy-id ramces@my.server.ip.address
ssh ramces@my.server.ip.address
Также можно дополнительно защитить ваш Linux-сервер, удалив запрос на вход в SSH. Откройте файл конфигурации вашего демона с помощью следующей команды:
sudo nano /etc/ssh/sshd_config
Найдите переменную PasswordAuthentication
и измените ее значение с «да» на «нет».
Перезагрузите демон SSH, выполнив следующую команду:
sudo systemctl restart sshd
3. Укрепите брандмауэр вашего Linux-сервера
Помимо ограничения доступа по SSH, вы также можете повысить безопасность своего Linux-сервера на настройка брандмауэра . По умолчанию новый компьютер с Linux будет принимать все входящие соединения с любого порта.
Это может быть проблемой, поскольку делает ваш сервер уязвимым для атаки сканирования портов. Например, злоумышленник может просканировать ваш компьютер на наличие незащищенных портов и использовать это для поиска подходящего эксплойта.
Один из способов исправить это — установить ufw, простой клиент брандмауэра, который может контролировать порты и адреса, доступные внешнему миру.
Выполните следующую команду, чтобы установить ufw в Ubuntu:
sudo apt install ufw
Установите правила по умолчанию для ufw. Это политики, которым ваш брандмауэр будет следовать для любого порта, который вы не настраиваете. Рекомендуется убедиться, что вы блокируете все входящие соединения:
sudo ufw default deny incoming sudo ufw default allow outgoing
Настройте брандмауэр для служб, которые вы хотите запускать на своем компьютере. Например, выполнение следующих команд позволит вам войти в систему через SSH и разместить веб-сервер:
sudo ufw allow 22 sudo ufw allow 80 sudo ufw allow 443
Наконец, вам необходимо активировать новую конфигурацию брандмауэра, запустив sudo ufw enable
. Кроме того, вы можете проверить, подключен ли ваш брандмауэр к сети, выполнив эту команду:
sudo ufw status
4. Создайте нового пользователя для каждой службы
По умолчанию каждый файл и программа в системе Linux принадлежит определенному пользователю и группе. Чтобы изменить систему, вам необходимо иметь соответствующие разрешения для нужных папок.
Один из способов повысить безопасность вашего сервера Linux — создавать новую учетную запись пользователя для каждой новой службы. Такой подход позволяет вам ограничить привилегии каждой службы отдельной учетной записью пользователя.
Для этого выполните следующие команды:
sudo useradd -s /bin/bash -d /home/new-service -m -G sudo new-service sudo passwd new-service
- Флаг
-s
устанавливает системную оболочку для новой учетной записи пользователя. В моем случае моя новая учетная запись использует в качестве оболочки Bash. - Флаги
-d
и-m
устанавливают каталог пользователя по умолчанию для новой учетной записи. - Флаг
-G
, с другой стороны, добавляет новую учетную запись в любые указанные вами дополнительные группы. Например, добавление новой учетной записи в группу sudo позволит ей выполнять команды суперпользователя. - Команда
passwd
позволяет установить новый пароль для новой учетной записи пользователя.
После этого вы можете использовать свою новую учетную запись пользователя, выйдя из текущей учетной записи или запустив su new-service
.
5. Укрепите ядро вашего сервера
Ядро — одна из наиболее важных частей системы Linux и связующее звено, связывающее аппаратное обеспечение вашего компьютера с вашим программным обеспечением. Например, компиляция собственного ядра Linux позволяет включить поддержку экзотического оборудования и функций.
Кроме того, ядро также служит корневым процессом операционной системы. Защита ядра — одна из наиболее важных частей защиты вашего сервера Linux.
Один из самых быстрых способов защитить ваше ядро — через sysctl
. Это встроенная утилита, позволяющая настраивать параметры времени выполнения ядра Linux.
Однако важно отметить, что sysctl
не будет охватывать весь процесс усиления безопасности ядра, поскольку защита ядра во многом будет зависеть от того, что вам от него нужно.
Зная это, вы можете выполнить следующие команды, чтобы ядро не сообщало какую-либо диагностическую информацию:
sudo sysctl kernel.kptr_restrict=2 sudo sysctl kernel.dmesg_restrict=1 sudo sysctl kernel.kexec_load_disabled=1
Вы также можете запустить следующие команды, чтобы указать ядру отбрасывать любые ложные запросы на подключение к вашему серверу:
sudo sysctl net.ipv4.tcp_syncookies=1 sudo sysctl net.ipv4.tcp_rfc1337=1
Эти команды, с другой стороны, заставят ядро проверять каждое входящее соединение с машиной:
sudo sysctl net.ipv4.conf.all.rp_filter=1 sudo sysctl net.ipv4.conf.default.rp_filter=1
Наконец, следующий набор команд предотвратит перенаправление любого входящего соединения на другой шлюз. Это предотвратит попадание вашей машины в результате атаки «человек посередине».
sudo sysctl net.ipv4.conf.all.accept_redirects=0 sudo sysctl net.ipv4.conf.default.accept_redirects=0 sudo sysctl net.ipv4.conf.all.secure_redirects=0 sudo sysctl net.ipv4.conf.default.secure_redirects=0 sudo sysctl net.ipv6.conf.all.accept_redirects=0 sudo sysctl net.ipv6.conf.default.accept_redirects=0 sudo sysctl net.ipv4.conf.all.send_redirects=0 sudo sysctl net.ipv4.conf.default.send_redirects=0
Советы : помимо приведенных выше советов, вы также можете воспользоваться эти инструменты с открытым исходным кодом для защиты вашего сервера Linux .
Часто задаваемые вопросы
Я потерял свой локальный компьютер. Можно ли еще войти на мой сервер Ubuntu через SSH?
По большей части невозможно войти в систему через SSH, если используется только аутентификация с открытым ключом. Однако доступ к приглашению SSH все равно будет возможен, если вы не отключили переменную PasswordAuthentication
.
Кроме того, вы можете либо физически получить доступ к машине и обновить «/etc/ssh/sshd_config», либо получить доступ к корневой консоли у вашего провайдера VPS.
Нет! И iptables, и ufw — это программное обеспечение брандмауэра, которое контролирует одни и те же диапазоны адресов и порты. Вам нужно настроить только один из них, чтобы на вашем сервере Linux был работающий брандмауэр.
Можно ли удалить права суперпользователя, которые я создал?
Да! Из группы можно удалить существующего пользователя. Используйте утилиту usermod
. Например, запуск usermod -G video new-service
удалит пользователя «new-service» из группы «sudo» и добавит его в группу «видео».
Автор изображения: Unsplash . Все изменения и скриншоты Рамсеса Реда.