이것은 내 질문에 대한 후속 조치입니다.여기.
저는 첫 번째 웹 서버를 설정하고 있으며 더 나은 보안을 제공하기 위해 어떤 사용자 계정을 만들고 권한을 만들어야 하는지 알아보고 있습니다. 아래는 내가 가지고 있는 것입니다.
저는 2명의 개발자를 위한 2개의 계정을 가지고 있으며(그리고 그들은 보충 그룹에 추가되었습니다 devs
) 그들만이 서버에 SSH를 통해 접속할 수 있습니다. 웹 애플리케이션(Django 기반)의 경우 쉘 액세스 권한이 있는 일반 사용자 1명을 생성했습니다 app
(사용자로 구성되지 않았으며 --system
그룹에 속함 app
). 2명의 개발자가 서버에 SSH로 접속한 후 app
업데이트를 수행하고 애플리케이션을 시작/중지합니다 . app
사용자는 실행할 수 없습니다( su
사용 중 그룹 설정에 추가하지 않아 차단됨). 또한 cron 작업이 ssh를 통해 로그 파일, 상태 등을 가져오는 백업 관련 작업을 수행할 수 없는 세 번째 계정도 있습니다./etc/pam.d/su
pam_wheel.so
su
보안 개선이 필요한 경우 알려주시기 바랍니다. (PS: 저는 초보자입니다)
답변1
su
공유 비밀번호가 필요합니다. 저는 Sudo를 선호합니다. 따라서 개발자는 sudo -u app command
run으로 실행하거나 대화형 셸을 시작하기 위해 실행할 수 있습니다. 아마도 쉘을 /bin/false 또는 /bin/true와 같은 것으로 설정한 경우일 것입니다.command
app
sudo -u app -i
app
sudo -u app -i /bin/bash
app
애플리케이션으로 전체 셸이 필요하지 않지만 애플리케이션을 다시 시작해야 하는 경우 애플리케이션으로 실행할 수 있는 명령을 제한할 수 있습니다. 액세스해야 하는 디렉터리에 기본 ACL을 사용하면 개발자와 애플리케이션에 액세스 권한이 부여되므로 파일 시스템 권한 문제가 발생하지 않습니다. IMHO 최소 권한 원칙을 따라야 합니다. 필요하지 않다면 이 작업을 수행하도록 권한을 부여하지 마세요.
일반적으로 저는 ssh용 키를 사용하는 것을 선호합니다. 가능하다면 개발자 비밀번호를 비활성화하고 sudo 규칙을 설정하여 비밀번호를 요구하지 않도록 하세요. 이렇게 하면 누구도 비밀번호가 필요하지 않으므로 비밀번호가 유출/분실/재설정될 수 없습니다.
오늘 밤의 읽기 과제는 이 기사에 "파일 시스템 ACL 작동 방식" 및 "sudo 구성 방법"이라는 내용이 많이 포함되어 있기 때문입니다. 아마도 다음은 SSH 키를 관리하는 것입니다.