모든 IP에 대해 scp를 비활성화하지만 특정 IP에 대해서는 허용합니다.

모든 IP에 대해 scp를 비활성화하지만 특정 IP에 대해서는 허용합니다.

sshd를 실행하는 서버가 있습니다. 우리는 그것에 대한 루트 액세스 권한을 가지고 있습니다.

질문:SCP를 비활성화하는 방법은 무엇입니까? 하지만 :SCP에 지정된 IP를 허용하는 방법은 다음과 같습니다(복사 등).

어쩌면 SCP 바이너리의 이름을 바꾸고 "사용자 루트 일치" 항목이 올바른 SCP 경로와 함께 있을 수도 있습니다. 아니면 무엇입니까?

업데이트: 모든 액세스를 허용해야 하며 scp*만 차단해야 합니다. *그러나 scp에 대해 지정된 IP를 화이트리스트에 추가

답변1

~/.ssh/authorized_keys를 사용하여 사용자가 수행할 수 있는 작업을 제한할 수 있습니다.

command="/noscp.sh" ssh-dss blablabla== [email protected]

;

#!/bin/sh

if [[ "$SSH_ORIGINAL_COMMAND" =~ scp* -a ! "$SSH_CLIENT" =~ 10.10.10.10* ]] ; then
   echo "Rejected" >&2
   echo "$(date) fail $SSH_CLIENT $SSH_ORIGINAL_COMMAND" >> noscp.log
   exit 1
else
   $SSH_ORIGINAL_COMMAND
fi
exit

이것이 가능하지만 SSH 등을 통해 파일을 직접 복사할 수 있는 경우 scp를 차단하는 것은 의미가 없으므로 목표를 알려주는 것이 좋습니다. 종종 사용자의 소스 IP보다는 사용자의 SSH 키로 기능을 제한하는 것이 더 합리적입니다.

답변2

다음을 추가하세요./etc/ssh/sshd_config

Match Address *,!10.10.10.10/32
        ForceCommand /bin/bash

실제로 허용되지 않는 /bin/bash한 모든 주소를 강제로 적용합니다 .10.10.10.10/32scp

~에서man sshd_config

성냥

조건부 블록을 도입합니다. "일치" 줄의 모든 조건이 충족되면 다음 줄의 키워드는 다른 "일치" 줄이나 파일 끝까지 구성 파일의 전역 섹션에 설정된 키워드를 재정의합니다. 조건을 충족하는 여러 일치 블록에 키워드가 나타나는 경우 해당 키워드의 첫 번째 인스턴스만 적용됩니다.

Match에 대한 인수는 하나 이상의 조건부 패턴 쌍이거나 모든 조건과 일치하는 단일 토큰 All입니다. 사용 가능한 표준은 다음과 같습니다.사용자, 그룹, 호스트, 로컬 주소, 로컬 포트, R 도메인 및 주소(RDomain은 연결을 수신하는 rdomain(4)을 나타냅니다.)

일치 패턴은 단일 항목 또는 쉼표로 구분된 목록으로 구성될 수 있으며 ssh_config(5)의 PATTERNS 섹션에 설명된 대로 와일드카드 및 부정 연산자를 사용할 수 있습니다.

주소 표준의 패턴에는 192.0.2.0/24 또는 2001:db8::/32와 같은 CIDR 주소/마스크 형식과 일치하는 주소가 포함될 수도 있습니다. 제공된 마스크 길이는 주소와 일치해야 합니다. 지정된 마스크 길이가 주소에 비해 너무 길거나 주소의 해당 호스트 부분에 비트가 설정된 경우 오류가 발생합니다. 예를 들어 각각 192.0.2.0/33 및 192.0.2.0/8입니다.

Match 키워드 다음 줄에서는 키워드의 하위 집합만 사용할 수 있습니다. 사용 가능한 키워드는AcceptEnv, AllowAgentForwarding, AllowGroups, AllowStreamLocalForwarding, AllowTcpForwarding, AllowUsers, AuthenticationMethods, AuthorizedKeysCommand, AuthorizedKeysCommandUser, AuthorizedKeysFile, AuthorizedPrincipalsCommand, AuthorizedPrincipalsCommandUser, AuthorizedPrincipalsFile, 배너, Chroot 디렉터리, ClientAliveCountMax, ClientAliveInterval, DenyGroups, DenyUsers, ForceComman d, GSSAPIAuthentication, , HostbasedAcceptedKeyTypes, HostbasedAuthentication, HostbasedUsesNameFromPacketOnly, IPQoS, KbdInteractiveAuthentication, KerberosAuthentication, LogLevel, MaxAuthTries, MaxSessions, PasswordAuthentication, PermitEmptyPasswords, PermitListen, PermitOpen, PermitRootLogin, PermitTTY, PermitTunnel, PermitUserRC, PubkeyAcceptedKeyTypes, PubkeyAuthentication, RekeyLimit, RevokedKeys, RDomain, SetEnv, StreamLocalBindMask, StreamLocalBindUnlink, UserCAKeys, X11DisplayOffset, X11 전달 및 X11UseLocalhost.

관련 정보