Является ли моя конфигурация Dante SOCKS5 «безопасной»?

Я понимаю, что "безопасный" - очень загруженное определение.

Мне нужно подключиться к серверу регистрации SFTP (только пользователь / пароль, без ключа ssh).

Сервер SFTP имеет белый список IP-адресов, и все IP-адреса моих серверов являются динамическими. Я хочу настроить прокси-сервер SOCKS5 со статическим IP-адресом, который позволит мне подключаться с моих серверов и проксировать соединение SSH. К сожалению, я не могу занести в белый список входящие IP-адреса в брандмауэре, потому что я использую Heroku, который использует любой IP-адрес на Amazon

. Я в основном обеспокоен тем, что этот прокси-сервер открыт для всего мира, и я хочу убедиться, что шаги, которые я сделали хорошо, или если мне нужно сделать больше. Я знаю, что безопасность может идти в крайнем направлении, но я не особо продвинутый, поэтому мне нужна золотая середина, которая подходит для 99,95% приложений.

Вот шаги, которые я сделал, и ничего больше ( так что никакой дополнительной настройки или установки программного обеспечения и т. д.).

  1. Создайте экземпляр в Google Cloud, используйте Ubuntu 18.04 , дайте ему статический IP-адрес
  2. Открытый порт tcp: 1080 в брандмауэре с использованием веб-интерфейса Google Cloud блок 80 и 443
  3. Создайте нового пользователя с помощью следующей команды, используя очень безопасный пароль (длина 24 символа, включая буквы и цифры )

     useradd -M -s / usr / sbin / nologin -p $ (openssl passwd -1 ПАРОЛЬ) ИМЯ ПОЛЬЗОВАТЕЛЯ
     
  4. Установите Dante со следующей конфигурацией ( ens4 происходит из запуска ifconfig и получения имени адаптера. Думаю, это то, как это называется в облаке Google):

     logoutput:  /var/log/danted.log
    
    внутренний: Ens4 порт = 1080
    внешний: ens4
    
    socksmethod: имя пользователя
    clientmethod: нет
    
    user.privileged: root
    user.unprivileged: никто
     # закомментировать строки user.libwrap
    
    timeout.io: 43200
    
    client pass {
      от: 0.0.0.0/0 до: 0.0.0.0/0
      журнал: ошибка
     }
    
    socks pass {
      от: 0.0.0.0/0 до: регистрация-service.example.com
      журнал: ошибка
     }
     

Вот мои основные проблемы:

  1. Можно ли, чтобы порт 1080 был открыт? Некоторые люди говорят, что это плохо, но они связывают меня с некоторыми вещами, которые я не понимаю, например с netplan.io. Есть ли простое решение, которое я могу сделать, если это плохая идея?
  2. Я заметил, что вы можете использовать ключевое слово method внутри блоков client и socks ... мне что-то туда положить? Или он использует то, что указано выше в разделах socksmethod и clientmethod ?
  3. Должен ли я добавить что-то, что блокирует неудачные попытки входа в систему (я думаю, это называется fail2ban?)
  4. Я сделал добавьте ограничение для части socks , чтобы разрешить подключение только к logging-service.example.com , хотя я полагаю, что если кто-то вторгся до этого момента, то что-то очень не так.
  5. Библиотеки net-ssh / net-sftp , которые я использую, также поддерживают прокси-серверы "jump", это более безопасно?
  6. Это кажется странным, позволяя миру просто подключаться к порту 1080 и попытайтесь угадать имя пользователя / пароль. Полагаю, это самое слабое звено. Если пароль длинный и надежный, есть ли что-нибудь еще для усиления этого самого слабого звена?

Есть ли другие идеи, чтобы сделать его более безопасным?

0
задан 28 September 2019 в 22:35
1 ответ

1) Не уверенный, о чем они говорят. Очевидно, у Вас должен будет быть один открытый порт, и, пока Ваши серверы могут достигнуть того порта, это не имеет большого значения, каков тот номер порта.

1080 стандартный порт носков однако, поэтому если кто-то делает сканирование портов, и они видят, что порт 1080 открыт, их первое предположение может быть то, что существует сервер носков, работающий на том порте, и они нападут, это с их "носками нападает на инструменты". Если вместо этого Вы позволите Dante послушать на порте 443, то возможно, они первоначально предположат, что это - https сервер, и при первом нападении это с их "https нападает на инструменты. Т.е. это могло бы запутать вещи немного для взломщика.

2) Это будет использовать то, что выше. Вставление его только полезно, если то, что выше, является списком нескольких methods/clientmethods, и Вы хотите предельные определенные правила к подмножеству того списка.

3) не знают, каков "fail2ban", но Вы могли бы хотеть сделать правила для этого. Если Вы затем замечаете, что сто заблокированных запросов от IP-адреса 'k' в Вашем файле журнала Dante, возможно, ее благоразумное добавляют "клиентское правило" блока для того IP-адреса, вместо того, чтобы позволяют ему продолжить играть в игру предположения.

4) Имеет смысл.

5) Да, если можно заставить его работать в примере использования.

6), Возможно, нет. Некоторые возможности могут однако быть:

  • Использование "метод: gssapi" вместо "метода: имя пользователя". Это намного более безопасно (никакое имя пользователя/пароли простого текста, отправляемое по сети Dante), но также намного более трудно настроить и включает установку Kerberos.

  • , Если серверы Вы соединяетесь с Dante от выполненного identd/rfc931-servers, можно измениться "clientmethod: ни один" к "clientmethod: rfc931" и добавляют дополнительное "identd" имя пользователя на хосте Dante с этой целью.
    будет служить своего рода двухфакторной аутентификацией, где кто-то должен будет предположить и какие identd имена пользователей Dante примет соединения от, и какие имена пользователей/пароли Dante примет от этих соединений. Это - однако также протокол открытого текста, поэтому если кто-то может осуществить сниффинг сетевого трафика, они видят имя identd, а также Ваше имя пользователя носков и пароль.

0
ответ дан 5 December 2019 в 00:34

Теги

Похожие вопросы