요새 서버가 있습니다. ProxyCammand 및 개인 키를 사용하여 로컬에서 배스천을 통해 C로 SSH를 수행해야 하는 일부 사용자가 있어야 합니다.
Bastion 호스트에서 ssh에만 액세스할 수 있는 사용자와 그룹을 만들고 싶습니다(proxyCommand를 통해 발생함). 또한 파일을 읽을 필요도 없습니다.
어떻게 해야 합니까? 방법이 있나요?
위의 방법이 가능하지 않은 경우 다른 대안은 허용된 파일에 대해서만 읽기 액세스 권한을 갖는 것입니다. 단, 해당 그룹에만 읽기 액세스 권한이 있는 제한된 파일(OS에 의해 기본값으로 설정됨)은 제외됩니다.
답변1
다음은 특정 사용자가 지정된 일부 명령만 사용하도록 허용하는 방법입니다.
사용자 셸을 제한된 bash로 변경합니다.
chsh -s /bin/rbash <username>
사용자의 홈 디렉터리 아래에 bin 디렉터리를 만듭니다.
sudo mkdir /home/<username>/bin sudo chmod 755 /home/<username>/bin
사용자의 기본 PATH를 다음 bin 디렉터리로 변경합니다.
echo "PATH=$HOME/bin" >> /home/<username>/.bashrc echo "export PATH >> /home/<username>/.bashrc
사용자에게 필요한 명령에 대한 심볼릭 링크를 만듭니다.
sudo ln -s /bin/<command> /home/<username>/bin/
~/.bashrc
변경할 수 없도록 만들어 사용자가 변경하지 못하도록 제한합니다 .chattr +i /home/<username>/.bashrc
이렇게 하면 허용하려는 명령에 대한 심볼릭 링크만 생성할 수 있습니다.
두 명 이상의 사용자에 대해 동일한 작업을 수행하려면 이러한 명령을 포함하고 사용자 이름을 매개변수로 갖는 bash 스크립트를 생성할 수 있습니다.
편집: CentOS에서 rbash는 직접 구현되지 않을 수 있으며 생성하려면 심볼릭 링크가 필요할 수 있으며 Red Hat과 같은 다른 GNU/Linux 버전에서도 유사합니다.
# cd /bin
# ln -s bash rbash
편집2:
rbash가 너무 제한적이라면 일반 bash도 그렇게 할 수 있지만 이것은 더 많은 작업입니다. 사용하고 싶지 않은 for 및 기타 명령을 /bin
사용하여 거의 모든 명령의 실행을 허용하지 않아야 읽기가 가능해집니다. 사용자에게만 제공되며 특히 실행할 수 없습니다.setfacl -m u:user1:r /bin/su
su
보다이 답변 상세 사항은.
답변2
네트워크 트래픽
당신이 사용할 수있는iptables
네트워크 트래픽을 제한하려면:
# Allow port 22 traffic to a specific IP/hostname for a specific user
iptables -A OUTPUT -p tcp --dport 22 -d allowed_host -m owner --uid-owner username -j ACCEPT
# Block all other outgoing port 22 (SSH) traffic
iptables -A OUTPUT -p tcp --dport 22 -d 0.0.0.0/0 -j REJECT
파일 시스템 액세스
파일 시스템 액세스를 제한하려면 다음을 사용할 수 있습니다.파일 시스템 권한
또한 파일을 읽을 필요도 없습니다.
로그인하려면 일부 파일을 읽을 수 있어야 합니다.
- 사용자 홈 디렉터리
- 사용자 셸의 실행 파일 및 모든 라이브러리
일반 사용자에게 읽기 액세스를 허용하지 않으려면 루트가 소유한 파일에서 누구나 읽을 수 있는 플래그를 제거하거나 루트가 소유한 디렉터리에서 누구나 실행할 수 있고 누구나 읽을 수 있는 플래그를 제거할 수 있습니다.
# chmod o-r secret-file
# ls -l secret-file
-rw-r----- 1 root root 0 Mar 27 13:23 secret-file
# chmod o-rx secret-dir/
# ls -ld secret-dir/
drwxr-x--- 2 root root 64 Mar 27 13:24 secret-dir/