Я следил за различными другими учебными пособиями и сообщениями в блоге по настройке машины Ubuntu в качестве резервного «сервера» (я буду называть его сервером, но это просто рабочий стол Ubuntu), к которому я добавляю новые файлы с помощью rsync. Прямо сейчас я могу подключиться к серверу с моего ноутбука с помощью rsync и ssh с помощью ключа RSA, который я создал, и без запроса пароля, когда мой ноутбук подключен к домашнему маршрутизатору, к которому также подключен сервер. Я хотел бы иметь возможность отправлять файлы с моего ноутбука, когда я нахожусь вне дома. В некоторых уроках, на которые я смотрел, были краткие предложения по безопасности, но они не фокусировались на них.
Что мне нужно сделать, чтобы мой ноутбук с файлами отправлял на сервер, не делая слишком легким взлом на сервер?
Вот что я сделал до сих пор :
Запустите ssh-keygen и ssh-copy-id, чтобы создать пару ключей для моего ноутбука и сервера.
Создал скрипт на сервере для записи его публичного IP-адреса в файл, шифрования файла и загрузки на FTP-сервер, к которому у меня есть доступ (я знаю, что могу подписаться на бесплатную динамическую учетную запись DNS для эта часть, но так как у меня есть учетная запись ftp и мне не нужно делать публично доступным ip, я подумал, что это может быть лучше).
Вот что я видел:
Переадресация портов: я знаю, что мне нужно назначить серверу фиксированный IP-адрес на маршрутизаторе, а затем сообщить маршрутизатору перенаправить порт или порты к нему. Должен ли я просто использовать порт 22 или выбрать случайный порт и использовать его?
Включите брандмауэр (ufw). Будет ли это что-нибудь делать, или мой маршрутизатор уже заблокирует все, кроме нужного мне порта?
Запустите fail2ban.
Стоит ли делать все эти вещи? Должен ли я сделать что-нибудь еще? Могу ли я настроить сервер так, чтобы он разрешал соединения только с ключом RSA (а не с паролем), или fail2ban обеспечит достаточную защиту от попыток злонамеренного соединения? Можно ли ограничить типы соединений, которые разрешает сервер (например, только ssh)?
Надеюсь, это не слишком много вопросов. Я довольно новичок в Ubuntu (но использую сценарии оболочки и bash в OSX). Мне не нужно иметь абсолютную максимально безопасную настройку. Мне бы хотелось, чтобы что-то было достаточно безопасным, но не настолько сложным, чтобы оно могло легко сломаться, и мне было бы трудно это исправить.
Хорошо, я думаю, что вы пытаетесь немного перепроектировать. SSH - один из самых безопасных протоколов передачи файлов, и если вы уже выполняете пересылку по ssh, то ваши 90% там. Ваш маршрутизатор действует как базовый брандмауэр, поэтому вам не нужно включать iptables для личного резервного сервера.
Придерживайтесь порта 22. Это значительно облегчит жизнь.
fail2ban - хороший скрипт для общедоступных серверов, особенно там, где разрешен вход на основе пароля. На вашем сервере будет больше проблем, чем будет исправлено. Я бы не рекомендовал запускать его. Вот мои предложения:
PasswordAuthentication yes
на PasswordAuthentication no
и убедитесь, что challengeresponse
установлено на no
. Это будет препятствовать любому без вашего личного ключа от входа в систему вообще. За исключением того, что вы в значительной степени охвачены по умолчанию. ssh шифрует трафик и проверяет хост / клиент. Там не так много осталось после этого.