Открыть SSH порт плохая идея на Raspberry Pi?

у меня дома есть Raspberry Pi, который я подключил к домашней сети. Я использую его для запуска VPN-сервера, SSH-туннеля, а иногда и SSH в него для выполнения обслуживания на нем.

это плохая идея, чтобы открыть порты (TCP) на моем маршрутизаторе, чтобы я мог удаленно подключаться к моему Pi, пока я вдали от дома? Я не использую обычный порт 22; это случайный порт, который я выбрал. Однако, когда я сканирую свой IP-адрес с помощью nmap on pentest-tools.com, Я вижу открытый порт, который я выбрал для SSH. Мой Пи защищенные паролем, и нет никаких конфиденциальных данных или номеров кредитных карт на мой, который я знаю. Но учитывая, что я использую его для туннелирования VPN или SSH, конфиденциальные данные могут проходить через него. Так разве это плохо иметь этот порт SSH на роутер? Может ли кто-нибудь сделать что-нибудь вредоносное для моей домашней сети, открыв этот порт, учитывая, что мой Pi всегда включен и слушает этот порт?

25
задан Ben N
04.03.2023 6:18 Количество просмотров материала 2441
Распечатать страницу

2 ответа

С точки зрения безопасности, три дополнительных метода приходят мне на ум.

A: использовать аутентификацию с открытым ключом

чтобы добавить к безопасности, вы можете настроить SSH-сервер для использования аутентификации с открытым ключом. То есть, либо в дополнение, либо вместо надежного пароля, соединение будет открыто только в том случае, если SSH-клиент предоставляет закрытый ключ, который соответствует открытому ключу на сервере. Даже если злоумышленник может получить открытый ключ каким-то образом, он не может восстановить секретный ключ от этого. Однако это не скроет ваш порт от сканеров портов.

B: используйте другой порт

кроме того, я сделал хороший опыт в плане меньше сканирование портов с настройкой SSH сервер слушать порт, отличный от 22. Соответствующий параметр конфигурации по умолчанию в /etc/ssh/sshd_config is

Port 22

вы можете изменить это, скажем 54322:

Port 54322

не забудьте повторно запустить сервер SSH после этого; в зависимости от Linux на вашей малине, это может быть один из

# service sshd restart
# systemctl restart sshd

(том # sign, если не в файле, должен обозначать корневой запрос здесь, в моих примерах.)

не волнуйтесь, ваш текущий сеанс SSH будет оставаться активным. Возможно, стоит попробовать открыть второй сеанс SSH на порт 54322, чтобы узнать, работает ли вход в систему. Не забывайте

  • установите SSH-клиент на Новый Порт
  • если применимо, перенаправьте новый порт интернет-маршрутизатора на Малина Pi

C: закройте порт и откройте его только по вашему запросу

если вы действительно не хотите, чтобы показать "интернет", что у вас есть этот порт открыт, посмотрите на порт стучит демонов, e. g. knockd. Те программы слушают (закрытые) порты, определенные вами, и после последовательности стука, также определенной вами, открывают другой порт, e. g. ваш порт SSH. От мобильного телефона или ноутбука, вы начинаете стучать последовательность, и демон стука на вашем Raspberry Pi открывает порт SSH, который не был виден вообще.

более подробно, порт стук будет добавить строку в iptables конфигурации. Эта линия откроет порт на вашей малине. Это также означает, что порт SSH должен быть закрыт iptables раньше. И это означает, что вы не можете войти через SSH.

пример knockd.conf может выглядеть так:

[openclosessh]
    sequence    = 1000,2020,3015,65432
    seq_timeout = 15
    tcpflags    = syn
    start_command   = /usr/local/bin/knockd-open.sh %IP%
    cmd_timeout = 30
    stop_command    = /usr/local/bin/knockd-close.sh %IP%

кроме того, не забудьте перенаправить to-be-knocked порты с Вашего интернет-маршрутизатора на твоя малина.

соответствующие скрипты открытия / закрытия могут выглядеть так:

#!/bin/bash
# /usr/local/bin/knockd-open.sh
# adds two lines at the top of iptables which allow all incoming and outgoing traffic on tcp port 54322
iptables -I INPUT -s  -p tcp --dport 54322 -j ACCEPT
iptables -I OUTPUT -d  -p tcp --sport 54322 -j ACCEPT

и

#!/bin/bash
# /usr/local/bin/knockd-close.sh
# deletes those two lines again
iptables -D INPUT -s  -p tcp --dport 54322 -j ACCEPT
iptables -D OUTPUT -d  -p tcp --sport 54322 -j ACCEPT

не забудьте сделать оба скрипта исполняемыми с помощью chmod +x /usr/local/bin/knockd*. Кроме того, вы должны запустить и включить службу knockd с одним из

# service knockd start && update-rc.d knockd enable
# systemctl start knockd && systemctl enable knockd

особенно, если вы используете стук на удаленном компьютере, к которому у вас нет доступа к консоли, вы можете использовать atd автоматически отменить любые изменения и / или перезагрузить малину в случае ошибок конфигурации.

потому что iptables не будут храниться при перезагрузках автоматически, в примере, вы можете быть root (через su) и

# at now + 5 minutes
> reboot
> (hit ctrl-d)
# ./script-which-closes-iptables.sh

пример ./script-which-closes-iptables.sh может выглядеть так (не забудьте сделать его исполняемым с chmod +x)

#!/bin/bash
# allow everything on the loopback interface
iptables -A INPUT -i lo -j ACCEPT
# allow only related or established incoming ssh sessions
iptables -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -m tcp --dport 54322 -j ACCEPT
# allow outgoing related or established ssh sessions
iptables -A OUTPUT -p tcp -m state --state RELATED,ESTABLISHED -m tcp --sport 54322 -j ACCEPT
# allow everything on the loopback interface
iptables -A OUTPUT -o lo -j ACCEPT
# drop everything else in and out
iptables -P INPUT DROP
iptables -P OUTPUT DROP

если ваша сессия SSH умирает сейчас, малина перезагрузится через 5 минут. Если сеанс SSH все еще активен, отмените ожидающую перезагрузку с

# atq
15 reboot
# atrm 15

если сеанс SSH все еще активен, попробуйте войти через второй сеанс SSH. Это не должно сработать. Затем используйте свой мобильный телефон и выбейте порты, которые вы настроили в /etc/knockd.conf. После этого повторите попытку входа через второй сеанс SSH. На этот раз все должно сработать.

затем вы можете сделать ваши iptables сохраняются перезагрузки. В вашей системе может потребоваться установить пакет через

# apt-get install iptables-persistent

сохранить iptables с

# iptables-save > /etc/iptables/iptables-rules

и включите сервис iptables с помощью

# systemctl enable iptables
5
отвечен stueja 2023-03-05 14:06

Если ваш Raspberry Pi имеет надежный пароль и сильную безопасность SSH, вы в порядке; злоумышленники ничего не могут сделать с SSH, если они не могут войти в него или использовать его. Они наверняка найдут порт.

историческая справка: В прошлом, проблема настройки СШ; авто-сгенерированный ключ был предсказуем. Это было исправлено.

Если злоумышленники do управлять, чтобы получить доступ SSH, они эффективно владеют устройством. Затем они могут использовать его, чтобы делать плохие вещи, как ARP отравления, что позволяет им захватывать и менять незашифрованные данные через сеть. Они также могут использовать Pi в качестве отправной точки для атак на другие хосты. Пи-это компьютер, как и любой другой, и вы должны быть осторожны, чтобы защитить его.

1
отвечен Ben N 2023-03-05 16:23

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

networking
port-forwarding
security
ssh
ssh-tunnel
Вверх