이것은 내 질문에 대한 후속 조치입니다.여기.
나는 첫 번째 웹 서버를 설정하고 있으며 더 나은 보안을 위해 어떤 사용자 계정을 만들고 권한을 제공해야 할지 고민하고 있습니다. 아래는 내가 가지고 있는 것입니다.
2명의 개발자의 경우 2개의 계정이 있고(보조 그룹에 추가됨 devs
) 이들만 서버에 SSH로 연결할 수 있습니다. 웹 응용 프로그램(Django 기반)의 경우 쉘 액세스 권한이 있는 일반 사용자 1명 app
(사용자로 구성하지 않았 --system
으며 그룹에 속함 ) 을 만들었습니다 . app
2명의 개발자는 서버에 SSH로 접속한 후 app
모든 업데이트와 애플리케이션 시작/중지를 위해 su를 할 것입니다. 사용자 app
는 수행할 수 없습니다 ( 사용 su
시 그룹 설정에 추가하지 않아 차단됨 ). 또한 cron 작업이 ssh를 통해 로그 파일, 상태 등을 가져오는 백업 관련 작업에 대한 기능이 없는 세 번째 계정도 있습니다./etc/pam.d/su
pam_wheel.so
su
보안 측면을 개선해야 하는지 알려주세요. (PS: 저는 여기 초보자입니다)
답변1
su
비밀번호를 공유해야 합니다. 나는 sudo를 선호합니다. 따라서 개발자는 로 sudo -u app command
실행 하거나 대화형 셸을 로 시작하기 위해 실행합니다 . 아마도 의 쉘을 /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 키 관리가 뒤따를 것입니다.