Я случайно запретил SSH-соединение с удаленным сервером ... Что дальше?

61

Скажем еще раз, мы все делаем ошибки , а я только что сделал одну.

Краткая история: я делал некоторые вещи на VPS (Debian), который я арендую, когда заметил какое-то странное поведение. С помощью netstatкоманды я увидел несанкционированное соединение через SSH. Я не знал, что делать, поэтому я решил закрыть его, используя iptables:

iptables -A INPUT -p tcp --dport ssh -s IP -j DROP

Но я устал, и я написал

iptables -A INPUT -p tcp --dport ssh -j DROP

и я выгнал себя (и всех остальных) ...

Как я могу это исправить?

tomatoGuy
источник
1
нет, потому что он блокирует все ssh-пакеты на машине. в неправильно сконфигурированной подсети вы просто должны tcpdump для этого mac-адреса, получить подсеть, на которую она подключается, затем настроить виртуальный ник в той же подсети и поговорить с ним.
jfalcon aka Don Fanning
50
Ну, вы, по крайней мере, удалили доступ для посторонних лиц.
CVn
2
В следующий раз, возможно, подойдет переключатель мертвецов .
Уэйн Конрад
2
Кто твой хозяин? Многие виртуальные хосты предлагают последовательную консоль, которая позволяет вам использовать SSH в тех случаях, когда вы не можете получить доступ из удаленного местоположения.
Джон

Ответы:

60

Есть несколько альтернатив:

  • Посмотрите, есть ли у них IPMI / "KVM" / консольный доступ к серверу, который позволяет вам управлять им, как если бы к нему была подключена физическая клавиатура.
  • Если они этого не предлагают, посмотрите, можете ли вы загрузить виртуальную машину с компакт-диска восстановления linux (некоторые поставщики предлагают это), а затем исправьте правила брандмауэра таким образом, а затем загрузите его как обычно.
  • Если у вас нет доступа к консоли, перед загрузкой для восстановления или подключением тома к другой виртуальной машине (как в случае с Amazon, ответ user 3550767), вы можете сначала попробовать ответ Ankh2054 о перезагрузке, если вы не сохранили правила ( Скорее всего, дело в том, что вы вышвырнули себя, прежде чем у вас была возможность сэкономить). Воспользуйтесь панелью управления или попросите кого-нибудь выключить и снова включить / выключить ее с помощью постепенного сброса / выключения (например, принудительной перезагрузки или жесткого выключения) в случае, если сценарий инициализации автоматически сохраняет правила при изящной перезагрузке (credit @jfalcon, @joshudson).

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

g491
источник
1
в зависимости от сервера VPS, он может не иметь удаленного доступа. такие системы, как vmware, kvm, xen и т. д., имеют консоли, но не предназначены для общего пользования. замыкания, которые допускают такую ​​форму общественного контроля - openstack.
jfalcon aka Don Fanning
4
Тем не менее, если он находится в Amazon / Google, он мог сделать снимок диска и смонтировать его с другой виртуальной машины, чтобы исправить это.
jfalcon aka Don Fanning
47

Если вы еще не сохранили правило IPtables, вы можете перезагрузить сервер на VPS (если доступно), и правило должно исчезнуть.

Ankh2054
источник
если скрипт init не сохраняет iptables во время выключения.
jfalcon aka Don Fanning
3
@jfalcon: Вот почему вы можете попросить их отключить виртуальный плагин.
Джошудсон
22
@jfalcon Вот почему плохая идея автоматически сохранять при выключении ... делать сисадмином сознательное решение о сохранении, а не то, что система выполняет вслепую.
CVn
@joshudson: Вы должны сказать обезьяне перезагрузки, что делать, и отключить питание. Не просто инициировать отключение.
jfalcon aka Don Fanning
@ MichaelKjörling: Эта философия тоже неверна. Это VPS, поэтому он, скорее всего, помещает свои приложения в «песочницу», и он не контролирует, кто нажимает на выключатель питания. И вы не представляете, как VPS-хостинг настраивал свои сборки. Нет ничего плохого в сохранении при выключении. Его ошибка была его ошибкой. Во-первых, разумным шагом было бы поставить SSH на нестандартный порт или использовать fail2ban вместо реакции с панической реакцией.
jfalcon aka Don Fanning
30

Это то, для чего нужны человеческие линии помощи. Позвоните поставщику услуг и попросите одного из операторов удалить это правило для вас.

RobertG
источник
3

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

user3550767
источник
2
Верно для AWS VPS; как правило, не правда.
MadHatter,
@MadHatter Точные данные могут отличаться, но если поставщик VPS не предлагает какой-либо метод загрузки с известным рабочим образом, из которого можно смонтировать и исправить корневую файловую систему, то я ожидаю, что они обанкротятся, когда клиенты узнал об этом ограничении.
Касперд
Обычно они делают это, предлагая консольный доступ, поэтому вы можете загружаться в однопользовательском режиме или с загрузочного носителя (обычно абстрагируемого как ISO). Я утверждаю, что на самом деле это гораздо более нормально, чем странный способ решения проблемы AWS, когда требуется второй VPS (временно).
MadHatter,
@MadHatter Какой из двух подходов кажется странным, вполне может зависеть от того, с чем вы наиболее знакомы. И любой подход делает работу. Что является наиболее распространенным, я не могу комментировать, так как до сих пор мне нужен был только такой доступ для одного VPS-провайдера.
Касперд
@kasperd: Нет, то, что вы используете, зависит от того, что поддерживает данный поставщик VPS; это не вопрос выбора. Если вы используете AWS, вы монтируете том на другой VPS; Если вы используете более нормального VPS-провайдера, вы загружаетесь с одного пользователя или с загрузочного носителя. Я не рассматриваю это как член (ну, не совсем), но потому что важно понимать, что нужно выяснить, каков метод (ы) провайдера, а затем использовать их. Попытка использовать метод AWS с, скажем, Hetzner просто не будет работать , потому что один сервер Hetzner не может видеть FS другого (afaik).
MadHatter,
3

Официальный ответ: зайдите в панель управления VPS, получите локальный доступ (виртуальный KVM) или позвоните им.

Объяснение шагов / правил, чтобы не допустить его снова:

  1. Существуют изменения в правилах ip, маршрутизации и брандмауэра, которые могут испортиться и заблокировать ваш доступ.
  2. и это относится и к конфигурации выделенного сетевого устройства, а не только к VPS

Так что, если вы не 100% уверены , что вы можете восстановить .. Я рекомендую всегда сделать так , чтобы сбросить сетевую конфигурацию в прежнем состоянии .. как, открытый фоновый сеанс с любым screen, nohupили tmuxдаже cronможете работать для этого, и добавить iptables -Fили другое желаемое средство для сброса чего-либо в предыдущее состояние.

kagali-Сан -
источник