Play!를 호스팅하는 웹 서버를 설정했습니다. 프레임워크 애플리케이션, 서버는 Amazon Linux EC2입니다.
Amazon Linux에 익숙하지 않은 경우 기본적으로 루트 사용자와 sudo 권한을 가진 ec2 사용자가 있습니다. 키를 사용하여 ec2 사용자로 ssh를 통해 서버에 액세스하려면 비밀번호가 비활성화됩니다.
나는 이 애플리케이션이 가능한 한 안전하기를 원하지만 이 설정은 나에게 안전하지 않은 것 같습니다. 누군가가 ssh 키를 얻을 수 있다면 그들은 시스템에 대한 루트 액세스 권한을 갖게 될 것입니다.
서버를 강화하기 위해 새 사용자 "Play"를 추가했습니다. Play 사용자 홈 폴더에 앱을 저장하고 실행합니다. 그런 다음 ec2-user에서 sudo 명령을 제거하고 루트에 대한 비밀번호를 추가했습니다.
이제 sudo 권한 없이 ec2 사용자로 ssh를 통해 로그인한 다음 루트/Play 사용자로 전환하여 서버에서 변경하거나 작업합니다.
이것은 매우 안전한 솔루션처럼 보이지만 한 단계 더 나아가고 싶습니다. 로그인하는 데 사용되는 사용자(ec2-user)를 "su - "라는 1개의 명령으로만 제한하고 싶습니다. 이것이 내가 이 사용자를 루트로 전환하는 데 사용할 전부입니다.
참고로 이 설정을 위해 실행한 명령은 다음과 같습니다.
sudo su -
루트 비밀번호 추가:
passwd
추가된 Play 사용자:
sudo adduser Play
sudoers에서 ec2-user 제거
cd /etc/sudoers.d
nano cloud-init
ec2-user를 제거하고 파일을 다음으로 업데이트합니다.
Play ALL= NOPASSWD: ALL
# User rules for ec2-user
Play ALL=(ALL) NOPASSWD:ALL
어떤 도움/조언이라도 미리 감사드립니다!
답변1
이외의 명령에 대한 액세스를 제거한다고 해서 su
본질적으로 시스템이 더 안전해지는 것은 아닙니다.
첫째, 사용자를 알려진 셸에 할당하면 다음과 같은 것 외에는 내부 명령이 실행되는 것을 막을 수 없습니다.rbash그러나 rbash 자체는 더 편안하며 사용자가 일부 명령을 실행할 수 있습니다. 받아보실 수 있으면 사용하시면 됩니다.
덜 안전하지만 가능한 또 다른 해결책은 사용자의 기본 셸을 스크립트로 정의하고 해당 스크립트에 su -
및 명령만 포함하고 exit
캡처 또는 대기 중단 시퀀스 외에는 아무것도 포함하지 않는 것입니다. 이를 필수 인터페이스라고 합니다. 또한 이 스크립트와 해당 전체 경로를 입력해야 합니다. 이는 스크립트이므로 현재와 미래에 그에 따른 모든 보안 결과가 있습니다.ctrl-c
ctrl-z
/etc/shells
답변2
당신이 할 수 있는 일은 일종의 ACL(액세스 제어 목록)을 구현하는 것입니다.
나는 이전 의견에서 OP가 나와 같은 생각을 하고 있다고 생각한다고 언급했습니다. 즉, 사용자 SSH를 제한된 계정으로 허용하여 또 다른 보안 계층을 추가하는 것입니다. 그런 다음 비밀번호는 su
더 많은 권한이 있지만 삭제된 다른 계정에 액세스하는 데 사용됩니다.
사용자 행동을 제한하려는 경우 ec2-user
. 먼저 sudoers
해당 그룹에 해당 사용자가 없는지 확인하세요 .
기본적으로 시스템에 있는 대부분의 파일에 대한 읽기 권한은 계속 유지되지만 해당 파일을 편집하거나 읽을 수 없는 파일을 읽을 수 있는 권한을 높일 수는 없습니다.
ec2-user
STFP 설정을 사용하여 특정 디렉터리로 제한하는 것을 포함하여 다양한 솔루션을 찾았습니다 . 디렉토리를 에서 로 변경할 수 있어야 하기 chroot
때문에 이 솔루션이 가장 적합하지 않을 수 있다고 생각합니다 .ec2-user
su
/home/ec2-user
/home/play
가장 좋은 해결책은 ACL을 적용하는 것이라고 생각합니다. 이는 사용자가 셸에서 실행할 수 있는 명령을 제한하는 방법입니다.
명령을 사용 setfacl
하고 파일에서 사용자의 읽기 및 실행 권한을 제거하여 작동합니다 /bin
.
setfacl -m u:ec2-user:r /bin/more
-m: to add read read access to the user. u: user, can be changed to g(group) or o(other). ec2-user: the user r: give the user only read permission.
more
이 예에서는 bash 파일에 대한 쓰기 및 실행 권한을 제거합니다 . 이는 명령을 사용하도록 허용하는 대신 사용하지 않으려는 명령을 제거해야 하기 때문에 최선의 방법은 아닙니다 su
. 그러나 이것이 제가 찾을 수 있는 가장 빠르고 쉬운 방법입니다.