내 사용 사례에 맞는 솔루션을 찾고 있습니다. SSH 데몬을 기본이 아닌 포트로 이동하고 모든 스크립트 키디가 SSH 피트의 포트 22를 통해 내 SSH에 연결하도록 하고 싶습니다(순전히 명확성을 위해). 안전 조치가 아닌 벌목을 하고 삶에 즐거움을 더하기 위해).
그러나 SSH 포트 지정을 허용하지 않는 일부 git 클라이언트를 만났습니다. git의 ssh 작업을 포기하고 포트 9418에서 git 프로토콜만 사용하는 것 외에도 특정 규칙과 일치하는 프록시 클라이언트를 리디렉션/역방향으로 사용하고 싶습니다( user=git OR
pubkey_auth=true
).
- 클라이언트와 SSH 데몬 간의 중간자 연결 없이 이러한 SSH 요청을 전달할 수 있습니까?
- 핸드셰이크가 완료되고 연결이 설정될 때까지 관찰자에게 사용자 또는 인증 방법에 대한 정보가 표시됩니까?
- 서비스에서 연결을 허용한 다음 해당 서비스와 로컬 서비스 사이에 또 다른 암호화된 터널을 설정해야 하는 경우에도 어떤 종류의 서비스를 찾아야 합니까? SSH 터널, 역방향 프록시, SSH 멀티플렉싱?
주로 IPTABLES, 역방향 SSH 터널링 또는 sshpiper를 사용하여 트래픽을 분할하는 일부 리소스를 검색했지만 소스 IP에 관계없이 정의된 클라이언트에 대해서만 SSH 트래픽을 필터링하도록 하는 방법을 찾을 수 없습니다(sshpiper는 유망해 보이지만 좀 더 자세히 살펴보겠습니다.)
추가 트래픽을 위해 포트 2222의 서버에 SSH로 연결할 수 있으며 Tarpit 포트를 인터넷에 노출할 수도 있습니다. 일부 git 클라이언트의 기본 동작을 설명하려고 합니다.
(아래 그래픽 시각화)
INTERNET
│
│
│
│
SSH to │port 22
│
▼
┌───────────────────┐ If user matches, ┌────────────────────────┐
│ │ forward the connection │ │
│ [email protected] ├────────────────────────► SSH Daemon Port 2222 │
│ │ │ │
└─────────┬─────────┘ └────────────────────────┘
│
┌─────────▼─────────┐ Send everyone else ┌────────────────────────┐
│ │ to the SSH tarpit │ │
│ *@example.com ├────────────────────────► EndleSSH @ Port 2022 │
│ │ │ │
└───────────────────┘ └────────────────────────┘