SSH *원격* 포트 전달을 제한하는 방법은 무엇입니까?

SSH *원격* 포트 전달을 제한하는 방법은 무엇입니까?

ssh -R사용자가 원격으로 "" 전달할 수 있는 포트를 제한해야 합니다 .

permitopenAuthorized_keys 옵션에 대해 알고 있지만 매뉴얼 페이지에 따르면 로컬 " ssh -L" 포트 전달 만 제한합니다.

논의여기사용자는 동일 netcat하거나 유사한 결과를 얻게 되지만 이 경우 사용자는 셸 액세스 권한이 없습니다.

나도 찾았어이 스레드selinux 또는 를 사용하는 방법에 대해 이야기하고 있지만 LD_PRELOAD이전에 selinux를 구성한 적이 없으며 사용 방법에 대한 정보를 찾을 수 없습니다 LD_PRELOAD.

어쩌면 누군가가 이것을 달성하기 위해 openssh에 대한 패치를 만들었을까요?

편집 : 찾았습니다이 버그 보고서그래서 아직 구현되지 않은 것 같아요

답변1

이는 2018년 8월 24일에 출시된 OpenSSH 7.8p1에서 구현되었습니다. 릴리스 노트 인용:

PermitListen 지시문을 sshd_config(5)에 추가하고 해당 PermitListen=authorized_keys 옵션을 추가하여 원격 전달(ssh -R ...)에서 사용할 수 있는 수신 주소와 포트 번호를 제어합니다.

답변2

no-port-forwarding모든 포트 전달을 차단하는 옵션이 있습니다 . 적어도 OpenSSH 4.3p2(CentOS 5.3 - 내가 액세스할 수 있는 가장 오래된 시스템) 이후입니다. 원래 의도한 위치에 놓습니다 permitopen.

답변3

SSH를 사용하여 제한할 수 없습니다. 아마도 이 목적으로 selinux나 iptables를 사용할 수 있을 것입니다. 그러나 귀하의 요구에 적합하거나 적합하지 않을 수 있는 대체 전략이 있습니다. UNIX 소켓에 대한 바인딩을 사용합니다. openssh 버전 6.8부터 사용할 수 있습니다.

소켓을 사용할 때 파일 시스템 ACL을 사용할 수 있으며(소켓이 이를 준수하는지 여부는 *nix에 따라 다를 수 있음) 이를 사용하여 한 사용자가 다른 사용자의 소켓에 바인딩하는 것을 방지할 수 있습니다. 하지만 어떤 식으로든 포트 바인딩을 방해하지 않으므로 사용 사례에 따라 도움이 되지 않을 수도 있지만 항상 소켓만 사용할 수 있다면 포트는 중요하지 않을 수 있습니다.

역방향 게시자가 다시 연결을 시도하기 때문에 UNIX 소켓을 사용하여 매달려 있는 소켓 파일을 처리하는 데 문제가 있을 수 있습니다. 이 문제에 대해 또 다른 질문(및 답변)이 있습니다. 즉, 다음을 사용할 수도 있습니다 StreamLocalBindUnlink yes.

연결이 닫힌 후 SSH 역방향 터널 소켓을 정리하는 방법은 무엇입니까?

답변4

복사:https://superuser.com/questions/516417/how-to-restrict-ssh-port-forwarding-without-denying-it

다음을 사용해도 될 것 같나요?

서버 구성 파일에는라이센스 오픈옵션. 이 옵션을 사용하여 전달을 설정할 수 있는 호스트와 포트를 지정할 수 있습니다. 이 옵션은 Match 블록 내에서 사용할 수 있으므로 사용자, 그룹, 호스트 이름 또는 IP 주소 패턴에 따라 제한될 수 있습니다.

편집: 따라서 서버 구성에 다음을 추가하십시오.

호스트:포트 열기 허용

IPv4_addr:port 열기 허용

허용열기 [IPv6_addr]:포트

관련 정보