2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

웹서버구축 시 계정 관리 및 권한 설정 방법은?

_____
자주 묻는 질문(FAQ) – 웹서버 구축 시 계정 관리 및 권한 설정

1. 질문: 웹서버 운영 시 계정 관리는 왜 중요한가요?
답변:
- 최소 권한 원칙(Principle of Least Privilege)을 지켜 공격 표면을 줄이고, 내부자 위협을 방지합니다.
- 계정이탈·비밀번호 유출 사고 발생 시 피해 범위를 제한할 수 있습니다.
- 변경·접근 이력을 명확히 남겨 감사(audit) 및 장애 대응을 용이하게 합니다.

2. 질문: 루트(root) 계정 직접 로그인을 차단하는 방법은?
답변:
- SSH 설정 파일(/etc/ssh/sshd_config)에서 ‘PermitRootLogin no’로 설정 후 SSH 재시작.
- sudoers 파일(/etc/sudoers) 또는 visudo 명령으로 특정 사용자에게만 sudo 권한 부여.
- 운영체제 레벨에서 root 패스워드를 잠그려면 ‘passwd -l root’ 사용.

3. 질문: 사용자 계정 생성 시 주의 사항은?
답변:
- 일반 사용자용 계정과 서비스용(웹서버·DB서버 데몬) 계정을 분리.
- adduser/addgroup 명령으로 홈 디렉터리, 기본 셸(`/sbin/nologin` 등) 설정.
- passwd 명령으로 강력한 비밀번호 정책(최소 길이, 복잡도) 적용.

4. 질문: sudo 권한은 어떻게 관리하나요?
답변:
- visudo를 이용해 /etc/sudoers 또는 /etc/sudoers.d/에 호스트·사용자·명령별 규칙 작성.
- NOPASSWD 옵션 최소화, 가능하면 특정 명령만 실행하도록 `username ALL=(root) /usr/bin/systemctl restart httpd` 식으로 제한.
- sudo 로그(/var/log/auth.log 또는 /var/log/secure)로 감사.

5. 질문: 그룹(Group) 관리는 어떻게 하나요?
답변:
- 기능별·서비스별 그룹 생성(e.g. webadmins, deployers) 후 사용자 추가.
- 파일·디렉터리 소유자로 그룹 지정(chown root:webadmins)하고 그룹 권한(rwx)만 부여.
- setgid(bit 2)를 디렉터리에 설정해 하위 파일에도 동일 그룹 상속(`chmod g+s /var/www`).

6. 질문: 파일·디렉터리 권한 설정 모범 사례는?
답변:
- 웹 콘텐츠: 소유자·그룹 최소화, 디렉터리 750, 파일 640 권장 (`umask 007`).
- 공개 자료는 755/644, 업로드 디렉터리는 웹서버 사용자 소유로 700 또는 750으로 제한.
- ACL(Access Control List)이 필요하면 setfacl/getfacl로 세분화된 권한 부여.

7. 질문: SSH 접속 보안을 강화하려면?
답변:
- 비밀번호 인증 비활성화(`PasswordAuthentication no`), 공개키 인증만 허용.
- AllowUsers 또는 AllowGroups로 접근 사용자·그룹 제한.
- 포트 변경(기본 22 → 다른 포트) 및 Fail2Ban 같은 브루트포스 차단 도구 도입.

8. 질문: 웹서버(nginx/Apache) 프로세스 권한 설정은?
답변:
- 설정 파일(httpd.conf, nginx.conf)에서 User/Group 지시자로 별도 계정 지정(예: www-data, nginx).
- suEXEC, PHP-FPM pool별 사용자 분리로 호스팅 간 권한 격리.
- chroot/jail 기능 활용 시 `/var/www` 내부로 프로세스 제약.

9. 질문: SELinux·AppArmor 같은 MAC(Mandatory Access Control) 적용법은?
답변:
- SELinux: `getenforce`로 현 상태 확인, `setenforce enforcing` 적용 후 웹서버 도메인(httpd_t 등) 정책 확인·커스터마이징.
- AppArmor: `/etc/apparmor.d/` 내 프로필 작성·수정, `aa-status`로 프로파일 상태 확인.
- 정책 위반 로그(/var/log/audit/audit.log 등) 모니터링 후 모드(enforce/complain) 조정.

10. 질문: 이중 인증(2FA)·OTP는 어떻게 적용하나요?
답변:
- Linux PAM 모듈(pam_oath, pam_google_authenticator) 설치 후 /etc/pam.d/sshd 등에 설정 추가.
- SSHD 설정(Session, Auth 섹션)에 ‘ChallengeResponseAuthentication yes’ 활성화.
- 사용자 홈에 OTP 시크릿 생성(`google-authenticator` 실행), 백업 키 관리.

11. 질문: 운영 중 계정·권한 변경 이력 관리는?
답변:
- auditd 도입 후 /etc/audit/audit.rules에 ‘-w /etc/passwd -p wa’ 등 감시 규칙 등록.
- syslog, rsyslog로 sudo/ssh/auth 로그 중앙집중식 수집·분석.
- 변경 요청·승인 절차(ITSM) 문서화 및 스크립트 자동화로 일관된 배포.

12. 질문: 권한 설정 후 점검 포인트는?
답변:
- 정기 스캔: Lynis, OpenSCAP, CIS-CAT 같은 도구로 권고안 준수 여부 체크.
- 권한 최소화: `find /var/www -perm /o+w` 같이 불필요한 쓰기 권한 점검.
- 모의 해킹·취약점 진단으로 계정·권한 취약점 확인.

위의 FAQ를 참고하여 계정과 권한을 체계적으로 관리하면 웹서버의 보안성이 크게 향상됩니다.
웹서버를 운영할 때 계정과 권한 관리를 제대로 해두지 않으면 시스템 전체가 취약해질 수 있습니다.

아래 내용은 웹서버 구축 시 반드시 고려해야 할 계정 관리 원칙과 구체적인 설정 방법을 단계별로 설명한 것입니다.

1. 최소 권한 원칙(Principle of Least Privilege) 적용 모든 계정은 그 계정이 수행해야 할 작업에 필요한 권한만 갖도록 제한해야 합니다.

불필요한 권한을 가진 계정이 해킹당하면 공격자가 서버 전체를 장악할 수 있으므로, 계정마다 역할(role)을 명확히 구분하고 각 역할에 꼭 필요한 권한만 부여하십시오.

2. 계정 분리 전략 • 루트(root) 계정 : 시스템 전체를 관리하는 최상위 슈퍼유저입니다.

평소 절대로 직접 로그인하거나 일상 작업에 사용하지 말고, 오직 긴급한 시스템 복구나 특권 명령이 필요할 때만 sudo su 또는 su 명령을 통해 일시적으로 권한을 상승시켜 사용합니다.

• 운영 관리자 계정 : 시스템 설정 변경, 설치·업데이트 등 일반 관리자 작업만 수행하도록 생성합니다.

이 계정에는 sudo 권한을 최소한으로 부여하고, /etc/sudoers 파일이나 /etc/sudoers.d 디렉터리에서 구체적인 명령어 접근을 제한합니다.

• 웹 서비스 전용 계정 : Apache (예: www-data), Nginx (예: nginx)와 같이 웹서버 데몬이 실행되는 전용 시스템 계정을 별도로 만듭니다.

이 계정은 웹문서가 위치한 디렉터리(/var/www/html 등)에만 읽기·실행 권한을 갖고, 불필요한 디렉터리 접근은 차단해야 합니다.

• 배포 및 개발 계정 : 소스 코드 업로드, 배포 자동화(CI/CD)용 계정으로, 웹서버 계정과는 별도로 생성하되 그룹 관리를 통해 ▲웹 문서 디렉터리 쓰기 권한(필요 시) ▲로그 디렉터리 읽기 권한 등을 한정적으로 부여합니다.

• 데이터베이스 전용 계정 : MySQL, PostgreSQL 등 DB 접근을 위한 계정은 애플리케이션 서버에서만 사용하도록 외부 SSH 접속을 차단하고, DB 접속 시 사용할 최소 권한(SELECT, INSERT, UPDATE 등)만 주어야 합니다.



3. SSH 접근 제어 • 공개키 기반 인증 설정 /etc/ssh/sshd_config에서 PasswordAuthentication no로 설정한 뒤, 관리·배포용 계정에만 각 사용자의 공개키(~/.ssh/authorized_keys)를 등록합니다.

• 루트 직접 로그인 차단 PermitRootLogin no로 설정하여 원격에서 루트 직접 접속을 불가능하게 합니다.

• 포트 변경 및 방화벽 설정 기본 SSH 포트(2

2)를 다른 포트로 변경하고 iptables 또는 ufw, firewalld 등을 사용해 허용된 IP 대역만 접근하도록 제한합니다.



4. 사용자·그룹 관리 • 그룹 분리 addgroup 명령으로 개발팀, 운영팀, 모니터링팀 등 역할별 그룹을 만들고 사용자 계정을 그룹에 할당합니다.

• 디렉터리 소유권 설정 웹루트 디렉터리(/var/www/html)는 webdev 그룹 소유로 설정(chown root:webdev)하고, 웹서버 계정이 이 그룹의 읽기·실행만 할 수 있도록 chmod 750 혹은 755로 설정합니다.

배포용 계정은 webdev 그룹에 포함시켜 쓰기 권한(770)을 허용할 수 있습니다.

• ACL 활용 세밀한 권한 제어가 필요하다면 setfacl/getfacl로 특정 사용자·그룹에 대한 읽기·쓰기·실행 권한을 추가·제거해 줍니다.



5. 파일 및 디렉터리 권한 설정 • 웹 루트 및 코드 파일 보통 644(-rw-r–r--) 또는 640으로 설정해 소유자만 쓰기, 그룹과 타인에게 읽기 권한만 주고 실행 권한은 제거합니다.

• 실행 스크립트 및 바이너리 스크립트 파일은 750(-rwxr-x---)으로, 바이너리는 755(-rwxr-xr-x)로 설정하되 타인이 불필요하게 실행하지 못하도록 최소화합니다.

• 민감 정보 파일 SSL 키, 환경설정 파일(.env, .htpasswd 등)은 600(-rw-------)으로 설정하고 소유자를 root나 운영 관리자 계정으로 한정합니다.



6. sudo 정책 세부화 /etc/sudoers 파일을 직접 수정할 때는 반드시 visudo 명령을 쓰며, 다음과 같이 최소 권한만 허용합니다.

• 특정 명령만 실행 허용 예를 들어 웹서버 재시작만 허용하려면 webadmin ALL=(root) NOPASSWD: /usr/sbin/service nginx restart 와 같이 명시하고 그 외 권한 상승은 불가능하게 합니다.

• 별칭 사용 Cmnd_Alias 정의를 통해 허용 명령 모음을 만들고, 사용자·그룹별로 각각 할당하면 관리가 편리해집니다.



7. 패스워드 및 계정 보안 정책 • 패스워드 복잡도 및 유효기간 PAM 설정(/etc/pam.d/common-password)에서 최소 길이, 숫자·특수문자 포함 여부, 변경 주기(expire)를 강제합니다.

• 계정 잠금 여러 번 실패한 로그인 시 일정 시간 계정을 잠그는 pam_tally2 또는 faillock 모듈을 활성화합니다.

• 비활성 계정 정리 수개월간 로그인하지 않은 계정은 자동 비활성화 또는 삭제하도록 스크립트를 주기적(cron)으로 실행합니다.



8. 보안 강화 도구 및 감사 • SELinux/AppArmor 리눅스 배포판에 맞는 강화 모듈을 활성화하고, 웹서버 데몬이 특정 디렉터리만 읽고 쓸 수 있도록 정책을 정의합니다.

• 로그·감사 /var/log/auth.log, /var/log/secure에 SSH·sudo 기록이 남도록 설정하고, logwatch나 auditd를 이용해 비정상 접근을 탐지합니다.

• 침입 차단 fail2ban, denyhosts 등을 이용해 일정 시간 내 실패 로그인 시 해당 IP를 차단합니다.



9. SFTP/Chroot 환경 배포용 혹은 서비스용 SFTP 계정은 chroot 디렉터리(/srv/sftp 등)를 지정해 그 외 경로 접근을 금지합니다.

sshd_config에 Match Group sftpusers ChrootDirectory /srv/sftp/%u ForceCommand internal-sftp 와 같이 설정하면 해당 그룹 계정은 지정된 디렉터리 안에서만 파일 전송이 가능합니다.



10. 주기적인 점검 및 업데이트 • 계정 리스트와 권한 설정 상태를 주기적으로 스크립트로 점검하여 의심 계정이나 과도 권한 계정이 없는지 확인합니다.

• sudoers, sshd_config, PAM 설정, SELinux 정책 등 보안 설정 파일은 변경 시 이력 관리(git 등)를 통해 언제든 되돌릴 수 있도록 합니다.

• 정기적으로 보안 패치를 적용하고, 웹서버(Apache/Nginx), PHP, 데이터베이스 등 핵심 서비스의 버전을 최신으로 유지합니다.

위 원칙과 절차를 충실히 지키면 계정별 권한을 명확히 분리하고, 운영자·개발자·서비스별로 최소 권한만을 부여함으로써 웹서버 보안 수준을 크게 향상시킬 수 있습니다.

작성자: 김예지 [비회원] | 작성일자: 10개월 전 2025-07-22 08:02:01
조회수: 164 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.