기술 가이드

Ubuntu 설치 직후 보안 강화 가이드

6 min read 리눅스 보안 업데이트됨 21 Oct 2025
Ubuntu 설치 직후 보안 강화 가이드
Ubuntu 설치 직후 보안 강화 가이드

중요한: 변경 작업의 대부분은 루트 권한을 필요로 하므로, 설정 파일을 수정하기 전에 현재 시스템의 백업(특히 /etc 디렉터리)을 권장합니다.

개요

새로 설치한 Linux 시스템은 일반적으로 Windows보다 멀웨어에 덜 취약하지만, 배포판의 편의성 설정 때문에 몇몇 기본값이 상대적으로 느슨할 수 있습니다. Ubuntu는 사용자 친화성을 우선하여 많은 기본 설정을 편리하게 구성합니다. 편리성은 장점이지만 일부 공격 벡터에 취약점을 남길 수 있습니다. 이 문서에서는 비교적 간단하지만 효과적인 설정 변경을 통해 새로 설치된 Ubuntu를 더 안전하게 만드는 방법을 단계별로 안내합니다.

중요 용어 한 줄 정의:

  • 루트(root): 시스템 관리자 권한을 가진 계정으로, 모든 파일과 설정을 변경할 수 있는 최고 권한 계정입니다.

루트(관리자)로 설정 파일 여는 방법

대부분의 보안 변경은 구성 파일 편집을 필요로 하며, 이는 루트 권한으로만 편집 가능합니다. 예시로 편집할 파일이 “/file/config”라고 가정합니다. 다음 세 가지 방법이 자주 사용됩니다.

터미널에서 열기:

sudoedit /file/config

시스템에서 sudoedit로 파일을 여는 예시

Gnome을 사용하는 경우, “Alt + F2”를 누르고 아래를 입력:

gksudo gedit /file/config

KDE의 경우, “Alt + F2”를 누르고 아래를 입력:

kdesu kate /file/config

참고: 아래 스크린샷과 본 가이드의 예시는 모두 터미널에서 sudoedit를 사용해 편집한 예시입니다.

기본 설정(무엇을 먼저 확인해야 하는가)

새 시스템에서 먼저 고려할 몇 가지 기본 항목:

  • 사용자 계정에 비밀번호가 설정되어 있는가. 단일 사용자라도 비밀번호는 필수입니다.
  • 방문자에게 노트북을 잠시 빌려줄 가능성이 있다면, 비밀번호로 보호된 별도 Guest 계정을 사용하세요.
  • 다중 사용자 환경에서는 파일 권한과 그룹 설정을 명확히 하세요.

추가 읽기: “What Is Log4Shell and How to Protect Your Linux System Against It” 같은 특정 취약점 관련 자료도 상황에 따라 참고하세요.

공유 메모리(reconfigure shared memory)

기본적으로 /run/shm(또는 /dev/shm로 심볼릭 링크)는 읽기/쓰기와 실행 허가가 가능하게 마운트됩니다. 공격자들은 이 공간을 악용하여 런타임 서비스에 공격 코드를 주입하는 등의 기법을 사용해 왔습니다. 데스크탑 및 일반 서버 환경에서는 이 파일 시스템을 읽기 전용 또는 실행 불가로 마운트하는 것이 권장됩니다.

“/etc/fstab” 파일을 엽니다:

sudoedit /etc/fstab

파일 끝에 다음 줄을 추가하면 /run/shm을 읽기 전용으로 마운트합니다:

none /run/shm tmpfs defaults,ro 00

그러나 Google Chrome 같은 일부 프로그램은 /run/shm에 쓰기 권한을 필요로 합니다. Chrome을 사용하려면 아래와 같이 쓰기 가능하면서 실행을 금지(noexec)하는 방식으로 마운트하세요:

none /run/shm tmpfs rw,noexec,nosuid,nodev 00

fstab 파일을 편집하는 예시

중요 사항:

  • 읽기 전용(ro)로 설정하면 /run/shm에 쓰기를 요구하는 일부 애플리케이션이 실패할 수 있으니, 애플리케이션 요구사항을 확인하세요.
  • 변경 후에는 마운트 상태를 확인하려면 mount | grep /run/shm을 사용하세요.

su 프로그램 접근 제한

“su”는 다른 사용자(일반적으로 루트)로 전환하여 명령을 실행할 수 있게 해주는 프로그램입니다. 올바르게 사용하면 유용하지만, Guest 계정 또는 권한이 제한된 계정들이 이를 통해 권한 상승을 시도할 수 있습니다. 기본적으로 su에 대한 접근을 관리자 그룹으로 제한하는 것이 안전합니다.

아래 명령은 /bin/su에 대한 소유자/권한을 오버라이드하여 su를 관리자 그룹(sudo)에 속한 사용자만 사용할 수 있도록 합니다:

sudo dpkg-statoverride --update --add root sudo 4750 /bin/su

명령 설명(간단):

  • dpkg-statoverride: 패키지 관리자가 설치한 파일 권한을 덮어쓰는 도구입니다.
  • 4750: su의 권한 비트를 설정(설정된 집합uid + 소유자 읽기/쓰기/실행 + 그룹 읽기/실행).

su 접근을 제한하는 예시

주의: 권한을 잘못 설정하면 시스템 관리자가 su를 통해 루트로 전환할 수 없게 될 위험이 있으므로, 적용 후 반드시 다른 터미널에서 root 권한 확인을 해보세요.

추가 읽기: SELinux로 서버 보안을 강화하는 방법도 검토하세요.

홈 디렉터리 보호

기본적으로 사용자 홈 디렉터리는 같은 시스템의 다른 사용자들에게 읽히는 경우가 있습니다. 다른 사용자가 내 문서를 볼 수 없게 하려면 홈 디렉터리 권한을 제한하세요. 아래 예시에서 “username”을 실제 사용자 계정으로 바꾸세요.

홈 전체를 다른 사용자로부터 읽기 불가로 설정:

chmod 0700 /home/username

위 설정은 소유자만 읽기/쓰기/실행 권한을 갖습니다. 만약 같은 그룹 사용자에게 디렉터리 접근을 허용하려면 0750을 사용하세요:

chmod 0750 /home/username

참고: Linux 파일 권한에 익숙하지 않다면 “rwx”와 숫자 표기(예: 0700)의 의미를 먼저 확인하세요.

홈 디렉터리 권한 설정 예시

SSH 루트 로그인 비활성화

기본적으로 Ubuntu는 루트 계정으로의 직접 SSH 로그인을 허용하지 않지만, 루트 비밀번호를 설정하면 위험해질 수 있습니다. 먼저 로컬에 SSH 서버가 설치되어 있는지 확인하세요:

ssh localhost

서버가 설치되어 있지 않다면 “Connection refused” 오류가 뜹니다. 설치되어 있다면, 설정 파일 “/etc/ssh/sshd_config”에서 루트 로그인 설정을 변경합니다.

파일을 열고 다음을 찾아 바꿉니다:

PermitRootLogin yes

다음으로 바꿉니다:

PermitRootLogin no

변경 후 SSH 데몬을 재시작하세요:

sudo systemctl restart sshd

추가 권장 사항:

  • 루트 대신 sudo 접근을 사용하고, sudo 로그를 모니터링하세요.
  • 공개키 기반 인증(public key auth)을 사용하고 패스워드 인증은 비활성화하면 더 안전합니다.

보안 강화 체크리스트(관리자용)

  • 모든 사용자 계정에 강력한 비밀번호 설정
  • /etc/fstab에서 /run/shm 마운트 옵션 검토 및 수정
  • su 접근을 관리자 그룹으로 제한(dpkg-statoverride 적용)
  • 모든 사용자 홈 디렉터리에 대해 적절한 권한 설정(chmod 0700 또는 0750)
  • /etc/ssh/sshd_config에서 PermitRootLogin no 설정 및 공개키 인증 활성화
  • 불필요한 서비스 제거 또는 비활성화
  • 정기적인 보안 업데이트 자동화(예: unattended-upgrades)

역할별 간략 체크리스트:

  • 시스템 관리자: 위의 모든 항목 적용 및 로그/감사 설정(예: rsyslog, auditd)
  • 일반 사용자: 개인 파일을 홈 디렉터리 내부 적절한 위치에 두고, 공개 위치에 민감 정보 저장 금지
  • 방문자(Guest): 방문자 계정 사용 후 세션 정리, 임시 파일 삭제

대체 접근 방식 및 보완 대책

  1. AppArmor/SELinux 사용: Ubuntu는 AppArmor를 기본으로 제공합니다. AppArmor 프로파일을 통해 프로세스별 권한을 제한하면 추가적인 방어 계층을 확보할 수 있습니다.
  2. 컨테이너 격리: 민감한 서비스는 컨테이너(예: Docker)나 가상머신으로 분리하여 호스트 침해 시 영향 범위를 줄입니다.
  3. 암호화: 노트북 같은 이동형 기기는 전체 디스크 암호화(LUKS)를 적용하세요.
  4. 중앙 로그 및 경고: 여러 호스트를 운영한다면 중앙 로그 수집(SIEM)과 자동 경고를 도입하세요.

언제 이 방법들이 실패하는가(한계와 반례)

  • 물리적 접근이 이미 가능한 경우: 시스템이 물리적으로 탈취되면 암호화가 되어 있지 않은 데이터는 노출될 수 있습니다.
  • 루트 권한을 가진 악성 소프트웨어: 이미 루트 권한으로 실행 중인 악성코드는 위 설정 대부분을 우회하거나 변경할 수 있습니다.
  • 취약한 패키지/서비스: 최신 보안 업데이트가 적용되지 않았거나, 설치된 소프트웨어 자체에 제로데이 취약점이 존재하면 로컬 설정만으로는 완전 방어가 불가능합니다.

테스트 및 수용 기준

변경을 적용한 후 확인해야 할 최소 테스트 목록:

  • /run/shm 마운트 상태 확인: mount | grep /run/shm — 의도한 옵션(ro 또는 noexec 등)이 적용되어야 함.
  • su 권한 확인: 일반 사용자로 su 시도 시 실패하고, sudo 그룹 사용자만 성공하는지 확인.
  • 홈 디렉터리 접근 테스트: 다른 사용자로 /home/username 접근 시 권한 거부가 반환되는지 확인.
  • SSH 루트 로그인 테스트: 원격에서 루트 계정으로 로그인 시도가 거부되는지 확인.

수용 기준(간단): 위 테스트 모두 통과하면 기본적인 보안 강화 작업은 성공으로 간주합니다.

실무용 보안 하드닝 체크리스트(요약형)

  • 파일시스템: /run/shm을 안전하게 마운트
  • 사용자계정: 강력한 비밀번호, 불필요한 계정 삭제
  • 권한관리: 홈 디렉터리와 중요 파일 권한 제한
  • SSH: PermitRootLogin no, 공개키 인증 사용, 포트 변경(선택 사항)
  • 서비스: 불필요한 데몬 비활성화
  • 업데이트: 자동 보안 업데이트 활성화
  • 모니터링: 로그 수집 및 이상 징후 탐지

1줄 용어집

  • tmpfs: 메모리 기반 임시 파일 시스템으로 재부팅 시 내용이 사라집니다.
  • noexec: 해당 파일시스템에서 실행 파일을 실행하지 못하도록 하는 마운트 옵션입니다.
  • su: 다른 사용자로 전환하여 명령을 실행하는 유틸리티입니다.
  • dpkg-statoverride: 패키지 관리자가 설치한 파일 권한을 수동으로 덮어쓸 때 사용하는 도구입니다.

마이그레이션/호환성 팁

  • 데스크탑 환경에서 /run/shm을 ro로 변경하면 일부 브라우저나 애플리케이션이 정상 동작하지 않을 수 있습니다. 문제가 생기면 rw,noexec,nosuid,nodev 옵션을 사용하세요.
  • 오래된 스크립트나 서비스는 su 대신 sudo를 사용하도록 마이그레이션하는 것이 안전합니다.

결론 및 요약

축하합니다 — 위의 설정을 적용하면 새로 설치한 Ubuntu에서 흔히 악용되는 몇 가지 공격 벡터를 효과적으로 차단할 수 있습니다. 이 가이드는 시스템을 완전히 무결하게 만드는 궁극적 솔루션은 아니지만, 빠르게 적용 가능한 실용적인 하드닝 단계들을 제공합니다. 지속적으로 보안 업데이트를 적용하고, 추가 방어(예: AppArmor, 중앙 로그 수집, 암호화)를 도입하여 방어 깊이를 늘리세요.

요약 핵심 포인트:

  • /run/shm 설정으로 런타임 공격 표면 축소
  • su 접근과 홈 디렉터리 권한 제한으로 로컬 권한 상승 방지
  • SSH 루트 로그인 비활성화 및 공개키 인증 권장

추가 자료: 자세한 내용과 고급 보안 팁은 공식 Ubuntu Wiki를 참고하세요.

Important: 설정 변경 전에는 항상 구성 파일과 중요한 데이터의 백업을 만드세요.

공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

Steam에서 게임 환불하는 방법 — 단계별 가이드
Gaming

Steam에서 게임 환불하는 방법 — 단계별 가이드

Apple Pay로 암호화폐 구매: 단계별 플랫폼 가이드
암호화폐

Apple Pay로 암호화폐 구매: 단계별 플랫폼 가이드

Snapchat 공개 프로필 만드는 방법
소셜 미디어

Snapchat 공개 프로필 만드는 방법

리눅스용 오픈 소스 대체 앱 가이드
소프트웨어

리눅스용 오픈 소스 대체 앱 가이드

Lenovo P780에 CyanogenMod(CM11) 설치 방법
안드로이드

Lenovo P780에 CyanogenMod(CM11) 설치 방법

USB로 Snow Leopard 설치 디스크 만들기
Mac 가이드

USB로 Snow Leopard 설치 디스크 만들기