우연히 원격 서버에 대한 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

그리고 나는 내 자신과 다른 사람들을 쫓아 냈다.

이 문제를 어떻게 해결합니까?



1
그는 머신에서 모든 ssh 패킷을 차단하고 있기 때문입니다. 잘못 구성된 서브넷에서는 해당 mac 주소에 대해 tcpdump를 수행하고 해당 서브넷을 가져 와서 동일한 서브넷에 가상 NIC를 구성한 후 대화하십시오.
jfalcon 일명 Don Fanning

50
글쎄, 당신은 적어도 무단 개인에 대한 액세스를 제거했습니다.
CVn

2
다음에는 죽은 사람의 스위치 가 도움이 될 것입니다.
Wayne Conrad

2
호스트는 누구입니까? 많은 VM 호스트는 원격 위치에서 접근 할 수없는 경우 SSH를 사용할 수있는 직렬 콘솔을 제공합니다.
Jon

답변:


60

몇 가지 대안이 있습니다.

  • 물리적 키보드가 연결된 것처럼 서버를 제어 할 수있는 IPMI / "KVM"/ 콘솔 액세스 권한이 서버에 있는지 확인하십시오.
  • 제공하지 않는 경우 복구 리눅스 CD로 VM을 부팅 할 수 있는지 (일부 공급자는이를 제공) 방화벽 규칙을 수정 한 다음 정상적으로 부팅합니다.
  • 콘솔 액세스 권한이없는 경우 복구를 위해 부팅하거나 볼륨을 다른 VM에 연결하기 전에 (Amazon의 경우 신용 사용자 3550767의 답변), 규칙을 저장하지 않은 경우 Ankh2054의 재부팅에 대한 답변을 먼저 시도 할 수 있습니다 ( 당신이 구원의 기회를 갖기 전에 스스로를 쫓아 낸 이후의 사건 일 것입니다). init 스크립트가 정상적으로 재부팅 할 때 규칙을 자동으로 저장하는 경우 제어판을 사용하거나 정상이 아닌 재설정 / 전원 끄기 (일명 하드 재부팅 또는 하드 종료)를 사용하여 전원을 껐다 켜도록 요청하십시오 (credit @jfalcon, @joshudson).

    이 문제의 단점을 재 시도하십시오 (재부팅 중에 기록되는 데이터가 손실 될 수 있고 부팅시 파일 시스템 검사가 필요할 수 있으므로 부팅 시간이 길어질 수 있지만 지연은 복구로 부팅하는 것보다 적을 수 있습니다).


1
vps 서버에 따라 도달 할 수있는 원격 액세스가 없을 수 있습니다. vmware, kvm, xen 등과 같은 시스템에는 콘솔이 있지만 일반 사용자 용으로 설정되지 않았습니다. 이러한 형태의 공개 제어를 허용하는 close는 openstack입니다.
jfalcon 일명 Don Fanning

4
즉, 아마존 / 구글 공간에 있다면 드라이브를 스냅 샷하고 다른 가상 머신에서 마운트하여 수정을 할 수 있습니다.
jfalcon 일명 Don Fanning

47

IPtables 규칙을 아직 저장하지 않은 경우 VPS에서 서버를 재부팅 (사용 가능한 경우)하면 규칙이 사라집니다.


init 스크립트가 종료 중에 iptables를 저장하지 않는 한.
jfalcon 일명 Don Fanning

3
@ jfalcon : 그래서 가상 플러그를 뽑으라고 요청할 수 있습니다.
joshudson

22
@jfalcon 또한 셧다운시 자동 저장하는 것이 좋지 않은 이유이기도합니다. 시스템이 맹목적으로 실행하는 것이 아니라 sysadmin에 의해 의식적인 결정을 내리십시오.
CVn

@ joshudson : 재부팅 원숭이에게 정확히 무엇을 해야하는지 알려주고 전원을 강제로 꺼야합니다. 종료 만 시작하는 것이 아닙니다.
jfalcon 일명 Don Fanning

@ MichaelKjörling :이 철학도 잘못되었습니다. 이것은 VPS이므로 응용 프로그램을 샌드 박싱하고 전원 스위치를 치는 사람을 제어 할 수 없습니다. 그리고 VPS 호스팅이 빌드를 어떻게 구성했는지 모릅니다. 종료시 저장에 아무런 문제가 없습니다. 그의 실수는 그의 실수였다. 우선 현명한 움직임은 SSH를 비표준 포트에 배치하거나 당황한 반응과 반응하는 대신 fail2ban을 사용하는 것입니다.
jfalcon 일명 Don Fanning

30

이것이 바로 직원이 도와주는 헬프 라인입니다. 서비스 제공 업체에 전화하여 운영자 중 한 명이 규칙을 제거하도록하십시오.


3

손상된 인스턴스를 해결하는 일반적인 방법은 인스턴스를 종료하고 루트 볼륨을 작업 인스턴스에 연결하는 것입니다. 그런 다음 볼륨을 마운트하고 로그를 보거나 구성 파일을 편집 할 수 있습니다. 그런 다음 볼륨을 분리하고 자체 인스턴스에서 시작할 수 있습니다.


2
AWS VPS에는 해당됩니다. 일반적으로 사실이 아닙니다.
MadHatter

@MadHatter 정확한 세부 사항은 다를 수 있지만 VPS 공급자가 루트 파일 시스템을 마운트하고 수정할 수있는 알려진 작업 이미지로 부팅 할 수있는 방법을 제공하지 않으면 고객이 일단 비즈니스에서 벗어날 것으로 예상합니다 그 한계에 대해 배웠습니다.
kasperd

일반적으로 콘솔 액세스를 제공하여이를 수행하므로 단일 사용자 모드 또는 복구 미디어 (일반적으로 ISO로 추상화)에서 부팅 할 수 있습니다. 나는 이것이 두 번째 VPS가 (일시적으로) 요구 사항 인 문제를 처리하는 AWS의 이상한 방법보다 훨씬 더 정상적이라고 주장합니다.
MadHatter

@MadHatter 두 가지 접근 방식 중 어느 것이 이상하게 보일지는 가장 잘 알고있는 것에 달려 있습니다. 그리고 두 가지 접근 방식으로 작업이 완료됩니다. 내가 실제로 언급 할 수없는 가장 일반적인 것은 지금까지는 단일 VPS 공급자에서만 이러한 액세스가 필요했기 때문입니다.
kasperd

@kasperd : 아니요. 사용하는 VPS 제공 업체에 따라 다릅니다. 선택의 문제가 아닙니다. AWS를 사용하는 경우 다른 VPS에 볼륨을 마운트합니다. 보다 일반적인 VPS 공급자를 사용하는 경우 단일 사용자 또는 복구 미디어에서 부팅합니다. 나는이 점을 성가신 것으로 생각하지는 않지만 (전부는 아님) 공급자의 지원되는 방법을 찾아야한다는 것을 이해하는 것이 중요하기 때문에 사용하십시오. 하나의 Hetzner 가상 서버가 다른 FS (afaik)를 볼 수 없기 때문에 Hetzner와 함께 AWS 방법을 사용하려고하면 작동 하지 않습니다.
MadHatter

3

정식 답변 : VPS 관리 패널로 이동하여 로컬 액세스 (가상 KVM)를 받거나 전화하십시오.

다시 넘어지지 않도록하는 단계 / 규칙 설명 :

  1. 잘못되어 액세스를 차단할 수있는 IP, 라우팅 및 방화벽 규칙 변경이 있습니다.
  2. 전용 네트워크 장치 구성에도 적용되며 VPS에만 해당되지 않습니다.

그래서 당신은 당신이 중 하나와 같은 .. .. 난 항상 이전 상태로 네트워크 설정을 재설정 할 수있는 방법을하는 것이 좋습니다 개방 배경 세션을 복구 할 수 있습니다 100 % 확신하지 않는 한 screen, nohup또는 tmux심지어 cron이 작동 할 수 있으며, 추가 iptables -F또는 다른 원하는 수단을 이전 상태로 재설정하는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.