
서버 내부의 시선을 제한하며 질서를 잡는 과정
서버를 운영하다 보면 특정 사용자가 자신의 허용된 영역을 벗어나 시스템 전체를 들여다보는 상황을 마주하게 됩니다. Rocky Linux 9.7 환경에서 기본 SFTP 기능을 사용하면서도 사용자의 발걸음을 홈 디렉터리 안에 묶어두는 설정은, 단순한 제약을 넘어 보안의 기본을 다지는 과정으로 보입니다. 특히 이미 서비스 중인 웹 폴더가 존재할 때, 그 흐름을 깨지 않으면서 접근 권한만을 정교하게 다듬는 일은 신중한 접근이 필요해 보입니다.
아래는 요약 버전으로 하단의 경우 운영 중인 경우 주의해서 적용해 주세요.
1단계: 홈 디렉토리 소유권 변경 (감옥 만들기)
홈 디렉토리의 주인을 root로 바꿔서 상위로 못 나가게 막습니다.
# /home 경로에서 실행 시
chown root:root {user}
chmod 755 {user}
# (참고: chown root:root 하나면 chgrp root까지 한 번에 처리됩니다.)
2단계: 작업용 폴더 생성 및 권한 부여 (실제 업로드 공간)
홈 폴더가 root 소유가 되면 사용자가 파일을 못 올리므로, 그 안에 전용 폴더를 만들어줍니다.
mkdir /home/{user}/public_html
chown {user}:{user} /home/{user}/public_html3단계: 격리 그룹에 계정 추가 (명령서 적용)
SSH 설정에 등록된 감옥 그룹(sftp_users)에 해당 사용자를 집어넣습니다.
# -aG를 쓰면 기존 그룹을 유지하면서 '추가'만 되므로 안전합니다.
usermod -aG sftp_users {user}4단계: SSH 서비스 재시작 (설정 반영)
설정값은 SSH 서비스가 다시 시작될 때 적용됩니다.systemctl restart sshd
5. 요약 버전
제가 사용하는 방법 간단 요약
cd /home chgrp root gozzle chown root gozzle usermod -G sftp_users gozzle apachectl restart
사용자를 그룹의 울타리 안에 두는 준비
먼저 개별 사용자를 하나하나 제어하기보다 공통된 규칙을 적용할 울타리를 만드는 것이 효율적인 선택인 듯합니다. 이미 시스템 내에 존재하는 sftp_users 그룹을 활용하여 사용자의 소속을 명확히 하고, 불필요한 쉘 접속을 차단함으로써 오직 파일 전송이라는 목적에만 집중하게 만드는 작업이 선행됩니다. 기존 계정인 경우에도 그룹의 성격과 접속 권한을 다시 정의해 주는 것만으로도 변화의 시작점이 마련됩니다.
계정의 성격 재정의하기
sudo usermod -g sftp_users -s /sbin/nologin cnstar
이러한 변화는 사용자가 서버의 다른 구석을 살피지 못하도록 시야를 좁히는 첫 번째 장치가 됩니다. 쉘 접속을 제한함으로써 시스템 명령어 실행 가능성을 차단하고, 그룹 단위의 관리를 통해 향후 늘어날지 모를 다른 계정들에게도 일관된 규칙을 적용할 준비를 마치는 것으로 보입니다.
엄격한 상위 폴더와 유연한 하위 폴더의 공존
SFTP에서 상위 디렉터리 이동을 막는 'Chroot' 기능은 다소 까다로운 규칙을 요구하곤 합니다. 사용자가 갇히게 될 최상위 지점인 홈 디렉터리의 주인이 반드시 root여야 하며, 그 어떤 사용자도 그곳에 직접 글을 쓸 수 없어야 한다는 점이 그것입니다. 하지만 이 규칙은 기존에 운영하던 웹 서비스 폴더인 public_html의 위치와 충돌할 수도 있다는 우려를 낳기도 합니다.
공간의 주인 바꾸기
sudo chown root:root /home/cnstar sudo chmod 755 /home/cnstar
관찰자의 시선에서 볼 때, 홈 디렉터리를 root 소유로 넘겨주는 것은 집의 현관문 열쇠를 관리자에게 맡기는 것과 비슷해 보입니다. 이제 사용자는 현관을 지나 자신의 방인 public_html까지는 안전하게 도달할 수 있지만, 현관문 밖 복도로 나가는 일은 불가능해집니다. 이미 존재하던 웹 폴더의 경로는 유지되므로 서비스에 미치는 영향은 최소화되는 셈입니다.
익숙한 공간으로의 연결과 설정의 마무리
새로운 폴더를 만드는 대신 기존의 public_html을 활용하는 방식은 사용자 경험의 연속성을 보장해 주는 듯합니다. 홈 디렉터리 자체에는 파일을 올릴 수 없게 되었으므로, 사용자가 실질적으로 작업하는 공간에 대해서는 명확한 소유권을 다시 돌려주어야 합니다. 이는 시스템의 보안 원칙을 지키면서도 실제 작업자의 편의를 배려하는 지점으로 해석됩니다.
작업 공간의 권한 회복
sudo chown cnstar:sftp_users /home/cnstar/public_html sudo chmod 755 /home/cnstar/public_html
마지막으로 서버의 설정 파일인 sshd_config에서 해당 그룹에 대한 제약 조건을 명시하는 것으로 기록은 마무리됩니다. Match Group 구문을 통해 특정 그룹에게만 엄격한 Chroot를 적용하고, 내부 SFTP 명령만을 강제함으로써 보안의 밀도를 높이는 방식입니다. 이미 설정이 존재한다면 중복을 피하며 정돈하는 과정이 필요할 것입니다.
설정 반영과 마침표
sudo setsebool -P ssh_chroot_rw_homedirs on sudo systemctl restart sshd
모든 설정이 끝난 뒤 사용자가 접속하면, 그는 오직 자신의 세계만을 마주하게 됩니다. public_html이라는 익숙한 이름 안에서 자신의 일을 이어가되, 그 너머의 시스템 영역은 더 이상 그의 시야에 닿지 않는 평온한 상태가 유지되는 것으로 보입니다.