[우분투 24.04 LTS] 안전한 서버 관리를 위한 sudo 계정 생성 및 Root 원격 접속 차단
리눅스 시스템 인프라 보안에 있어 가장 취약한 지점은 최고 관리자 권한을 지닌 ‘Root’ 계정의 무분별한 네트워크 노출이다. 전 세계 해커들이 시도하는 무차별 대입 공격(Brute-force Attack)의 1순위 타겟은 시스템 운영체제 설치 시 기본적으로 존재하는 Root 계정이기 때문이다. 따라서 Root 계정의 원격 접속 경로를 네트워크 단에서 원천적으로 차단하고, 외부에서 유추가 불가능한 고유 ID를 가진 일반 사용자 계정을 생성하여 필요 시에만 sudo 명령어로 권한을 임시 상승시켜 작업하는 것이 서버 보안 아키텍처의 핵심 표준이다.
본 문서는 우분투(Ubuntu) 24.04 LTS 서버 환경에서 시스템 관리를 전담할 신규 sudo 사용자를 생성하고, Root 계정의 SSH 원격 로그인을 완벽하게 차단하는 실무 프로세스를 기술한다.
1. 신규 관리자 계정(User) 생성 체계
현재 Root 계정 또는 기존의 sudo 권한을 지닌 계정으로 터미널에 접속된 상태에서, 서버 관리를 전담할 새로운 일반 사용자 계정을 생성한다. 리눅스 시스템에서 계정을 생성하는 명령어 체계는 useradd와 adduser 두 가지로 구분된다.
useradd는 순수하게 계정 명칭만 레지스트리에 등록하는 저수준(Low-level) 명령어인 반면, adduser는 계정 생성과 동시에 사용자 전용 홈 디렉터리(/home/계정명)를 자동 할당하고 기본 쉘(Bash) 환경 및 초기 시스템 설정 파일들을 자동으로 구성해 주는 고수준(High-level) 명령어이다. 시스템 안정성과 완벽한 계정 구성을 위해 반드시 adduser를 사용한다.
Bash
sudo adduser 신규계정명
명령어 실행 시 신규 계정의 인증 비밀번호를 두 번 교차 입력하는 프롬프트가 출력된다. 인증 우회 및 무차별 대입 공격을 방어하기 위해 영문 대소문자, 숫자, 특수기호가 복합적으로 결합된 강력한 난수 형태의 패스워드를 지정해야 한다.
이후 화면에 출력되는 Full Name, Room Number, Work Phone 등의 부가적인 사용자 정보는 실제 서버 운영이나 시스템 권한 통제에 어떠한 영향도 미치지 않는 주석성 데이터이다. 따라서 Enter 키를 연속으로 입력하여 기입을 생략한 후, 최종 확인 프롬프트에서 Y를 입력하여 계정 생성 프로세스를 마무리한다.
2. 신규 계정에 최고 관리자(sudo) 권한 위임
생성된 일반 계정은 본인에게 할당된 독립된 홈 디렉터리 내에서만 파일 제어 권한을 가질 뿐, 시스템의 코어 설정 파일을 수정하거나 네트워크 서비스를 제어할 수 있는 통제 권한이 전무하다. 해당 계정이 시스템 전반의 인프라 관리 작업을 수행할 수 있도록 최고 관리자 권한을 위임받는 sudo 시스템 그룹에 편입시키는 과정이 필수적이다.
Bash
sudo usermod -aG sudo 신규계정명
명령어에 사용된 usermod는 사용자 계정의 속성 및 권한을 재구성하는 유틸리티이다. 해당 명령어에서 -aG 옵션의 역할은 시스템 보안상 매우 중요하다. -G 옵션만 단독으로 사용할 경우 해당 사용자가 소속되어 있던 기존의 모든 그룹에서 강제 탈퇴되고 새로운 그룹에만 속하게 되는 치명적인 권한 꼬임 현상이 발생할 수 있다.
따라서 기존 그룹 소속을 온전히 유지한 상태에서(append) 특정 관리자 그룹(Group)에만 추가로 지정하는 -aG 옵션을 반드시 적용해야 한다. 이 과정을 거친 계정은 시스템 명령어 실행 시 앞에 sudo를 붙여 임시로 Root와 동일한 시스템 통제권을 안전하고 제한적으로 행사할 수 있게 된다.
3. 계정 원격 접속 및 권한 상승 구동 검증
Root 계정의 원격 접속을 차단하는 보안 정책을 시스템에 적용하기에 앞서, 방금 생성한 신규 계정으로 시스템에 정상적인 네트워크 접근이 가능한지, 그리고 권한 상승 체계(sudo)가 에러 없이 구동되는지 반드시 교차 검증해야 한다. 만약 검증 과정 없이 Root 접속을 먼저 차단해 버린다면, 설정 오류 시 서버의 원격 제어권을 완전히 상실하는 시스템 락아웃(Lock-out) 사태가 발생할 수 있다.
현재 연결되어 있는 SSH 터미널 세션은 그대로 유지한 상태에서, 별개의 새로운 터미널 창을 실행하여 신규 계정으로 서버 원격 접속을 시도한다. (포트를 변경한 경우 -p 옵션을 지정한다.)
Bash
ssh -p 포트번호 신규계정명@서버IP주소
신규 계정으로 정상 로그인되었다면, Root 권한이 필수적으로 요구되는 시스템 명령어를 입력하여 권한 상승 모듈이 작동하는지 테스트한다.
Bash
sudo ls -la /root
명령어 입력 시 신규 계정의 패스워드를 요구하는 프롬프트가 나타나며, 비밀번호를 정확히 입력했을 때 보안 구역인 루트 디렉터리의 내부 파일 목록이 정상적으로 출력된다면 sudo 권한 위임이 시스템에 완벽하게 적용된 것이다.
4. SSH 데몬 설정 파일 수정 및 Root 원격 접속 원천 차단
신규 관리자 계정의 정상적인 접근과 시스템 제어권이 최종 확인되었다면, 인프라 보안의 치명적 위협인 Root 계정의 SSH 원격 로그인을 네트워크 단에서 강제 차단할 단계이다. 우분투 환경의 표준 텍스트 에디터를 호출하여 SSH 서비스 데몬의 핵심 설정 파일인 sshd_config를 직접 수정한다.
Bash
sudo nano /etc/ssh/sshd_config
설정 파일의 내부 스크립트를 탐색하여 관리자 인증 정책을 제어하는 PermitRootLogin 지시자가 위치한 라인을 찾는다. 우분투의 기본 상태에서는 해당 라인이 주석 처리(#)되어 있거나 특정 조건부 허용 값으로 설정되어 있을 수 있다.
앞의 주석 기호(#)를 삭제하여 환경 변수를 활성화하고, 할당된 값을 yes 또는 prohibit-password에서 no로 명확하게 변경하여 어떠한 형태의 네트워크 통신을 통한 Root 원격 로그인도 불가능하도록 시스템 논리를 강제한다.
Plaintext
PermitRootLogin no
설정값 수정이 완료되면 Ctrl + O를 눌러 변경 사항을 파일 스토리지에 기록하고, Enter를 입력한 뒤 Ctrl + X를 눌러 에디터 인터페이스를 안전하게 종료한다.
5. SSH 서비스 재시작 및 보안 정책 시스템 반영
수정된 SSH 설정 파일의 보안 정책을 시스템 메모리에 영구적으로 반영하기 위해 SSH 데몬 프로세스를 재시작하여 변경된 통신 규약을 적용한다.
Bash
sudo systemctl restart ssh
데몬 재시작 이후, 외부 클라이언트에서 직접 Root 계정으로 원격 접속(ssh root@서버IP)을 시도하여 시스템으로부터 Permission denied 메시지가 반환되며 접근이 완벽하게 거부(Drop)되는지 최종 확인한다. 이로써 외부 공격자는 시스템 최고 관리자의 계정 ID조차 유추할 수 없는 상태가 되어 인프라 보안 수준이 극대화된다.
마무리
Root 계정의 외부 네트워크 노출을 차단하고 추측 불가능한 고유 sudo 계정을 통해서만 시스템을 관리하는 안전한 서버 접근 통제 체계가 완성되었다. 방화벽 네트워크 설정(UFW), 침입 차단 시스템 구축(Fail2ban), 웹 통신 암호화(SSL), 그리고 시스템 내부 최고 관리자 권한 격리 및 제어까지 완료함으로써 홈 서버 구축의 핵심적인 시스템 보안 및 인프라 관리 매뉴얼(Phase 2)이 모두 성공적으로 종료되었다.
서버 시스템의 무결성과 보안성이 완벽하게 확보되었으므로, 다음 포스팅부터는 최신 IT 운영 트렌드에 부합하는 컨테이너 가상화 기반 서비스 호스팅 체계(Phase 3)로 진입하여, [우분투 서버에 도커(Docker) 및 도커 컴포즈(Docker Compose) 설치 완벽 가이드]를 상세히 다루어 효율적인 웹 서비스 배포 환경을 구축하겠다.