[unix] ssh * remote * 포트 전달을 어떻게 제한 할 수 있습니까?

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

permitopenauthorized_keys의 옵션에 대해 알고 있지만 매뉴얼 페이지에 표시된 것처럼 로컬 ‘ ssh -L‘포트 전달 만 제한합니다.

여기 에서 논의 된 것처럼 사용자는 동일 netcat하거나 유사 할 것이지만이 경우 사용자는 쉘 액세스 권한이 없습니다

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

누군가가 openssh가 그것을 구현하기 위해 패치를 만들었습니까?

편집 : 이 버그 보고서를 찾았 으므로 아직 구현되지 않은 것 같습니다.



답변

2018-08-24에 릴리스 된 OpenSSH 7.8p1에서 구현되었습니다. 릴리스 노트에서 인용하십시오.

sshd_config (5)에 PermitListen 지시문을 추가하고 원격 포워딩 (ssh -R …)에서 사용할 청취 주소 및 포트 번호를 제어하는 ​​해당 permitlisten = certified_keys 옵션을 추가하십시오.


답변

no-port-forwarding모든 포트 전달을 막는 옵션 이 있습니다. 최소한 OpenSSH 4.3p2 (CentOS 5.3-가장 오래된 컴퓨터)에 있습니다. 당신이 놓았던 것과 같은 곳에 두십시오 permitopen.


답변

ssh 사용을 제한하는 것은 불가능합니다. 어쩌면 selinux 또는 iptables를 사용할 수도 있습니다. 그러나 귀하의 요구에 맞거나 맞지 않을 수있는 대체 전략이 있습니다. UNIX 소켓에 바인딩을 사용하십시오. openssh 버전 6.8부터 사용할 수 있습니다.

소켓을 사용할 때 파일 시스템 ACL (소켓은 * nix에 따라 다름)을 사용할 수 있으며 한 사용자가 다른 소켓에 바인딩하지 못하게 할 수 있습니다. 그러나 어떤 식 으로든 포트에 바인딩하는 것을 막지는 못하므로 사용 사례에 따라 도움이되지 않을 수도 있지만 일관되게 소켓 만 사용할 수 있다면 포트는 중요하지 않을 수 있습니다.

매달려있는 소켓 파일을 처리하는 UNIX 소켓을 사용하면 리버스 게시자가 다시 연결하려고 할 때 문제가 발생할 수 있습니다. 그 문제에 대한 또 다른 질문 (및 답변)이 있습니다. 간단히 말해서 아마도 다음을 사용하고 싶을 것입니다 StreamLocalBindUnlink yes.

연결 종료 후 SSH 역 터널 소켓을 정리하는 방법은 무엇입니까?


답변

중복 : /superuser/516417/how-to-restrict-ssh-port-forwarding-without-denying-it

다음을 사용할 수있는 것 같습니다.

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

편집 : 그래서 서버 구성에서 다음을 추가하십시오

허용 호스트 : 포트

허용 IPv4_addr : port를여십시오

허가 열기 [IPv6_addr] : port


답변