/tmp 디렉토리 보안 설정 [CentOS 7]

리눅스 웹 서버를 운영할 때, /tmp 디렉토리는 시스템과 여러 애플리케이션이 임시 파일을 저장하는 공간으로 자주 사용됩니다.

하지만 /tmp 디렉토리는 누구나 쓰기 가능한 특성을 가지고 있어, 적절한 보안 설정 없이 방치하면 악성 스크립트 실행과 같은 보안에 위험이 될 수 있습니다.

✅ /tmp 디렉토리 보안 설정 항목

ext4 또는 xfs로 /tmp 파티션 생성 시 고급 설정에서 noexec,nosuid,nodev 3가지 설정을 합니다.

옵션

설명

noexec

실행 파일 실행 방지

nosuid

  • SUID((Set User ID): 일반 사용자가 프로그램을 실행할 때, 그 프로그램이 파일 소유자 권한으로 실행되도록 하는 기능
  • / SGID(Set Group ID) 무시: 프로그램 실행 시, 그 프로그램이 파일 그룹 권한으로 실행되도록 하는 기능

nodev

장치 파일 사용 금지

minimal 설치가 진행되는 경우 옵션 설정이 없을 수 있습니다.

✅ /etc/fstab 에서 /tmp 디렉토리 보안 설정

fstab은 리눅스에서 부팅 시 자동으로 마운트 할 파일 시스템 정보를 담고 있는 설정 파일입니다.

리눅스 자동 마운트-etc/fstab 안내

🔲 /etc/fstab에 /tmp 설정

VirtualBox에 설치한 CentOS 7 OS의 /tmp 디렉토리 설정입니다.

Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 988M     0  988M   0% /dev
tmpfs                   1000M     0 1000M   0% /dev/shm
tmpfs                   1000M  8.6M  991M   1% /run
tmpfs                   1000M     0 1000M   0% /sys/fs/cgroup
/dev/mapper/centos-root  4.8G  2.7G  1.9G  59% /
/dev/mapper/centos-home  6.3G   30M  6.0G   1% /home
/dev/mapper/centos-tmp   3.9G   17M  3.6G   1% /tmp
/dev/sda2                497M  163M  335M  33% /boot
tmpfs                    200M     0  200M   0% /run/user/0

이미 파티션 /dev/mapper/centos-tmp에 별도로 마운트되어 있는 상태입니다.

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    2M  0 part 
├─sda2            8:2    0  500M  0 part /boot
└─sda3            8:3    0 19.5G  0 part 
  ├─centos-root 253:0    0    5G  0 lvm  /
  ├─centos-swap 253:1    0    4G  0 lvm  [SWAP]
  ├─centos-tmp  253:2    0    4G  0 lvm  /tmp
  └─centos-home 253:3    0  6.5G  0 lvm  /home
sr0              11:0    1 1024M  0 rom  

~]# fdisk /dev/새로운 블록 스토리지 

...
Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p):

/etc/fstab vi로 열어 다음과 같이 설정합니다.

vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Jun 22 05:41:51 2025
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       ext4    defaults        1 1
UUID=674a0523-22b2-4755-9eeb-983294c12708 /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   ext4    defaults        1 2
# /dev/mapper/centos-tmp  /tmp                  ext4    defaults        1 2
/dev/mapper/centos-tmp    /tmp                  ext4    defaults,noexec,nosuid,nodev    1 2
/dev/mapper/centos-swap swap                    swap    defaults        0 0

기존 설정을 주석 처리한 후에 noexec, nosuid, nodev 설정을 적용합니다.

재 마운트를 진행합니다.

mount -o remount /tmp
mount | grep /tmp
/dev/mapper/centos-tmp on /tmp type ext4 (rw,nosuid,nodev,noexec,relatime,data=ordered)

✅ /var/tmp 디렉토리 삭제 후 /tmp 디렉토리 심볼릭 링크 연결

통합적인 보안 관리를 위해 /var/tmp 디렉토리를 삭제 후 /tmp 디렉토리에 심볼릭링크로 연결을 진행합니다.

rm -rf /var/tmp
rm: cannot remove `/var/tmp/': 장치나 자원이 동작 중
ln -s /tmp /var/tmp

장치에서 실행 중인 것으로 삭제가 진행되지 않아 싱글모드로 진입하여 작업을 진행합니다.

재부팅 후에 GRUB 부트로더에서 [e] 버튼으로 편집 모드로 진입 후

CentOS 7 GRUB 부트로더

CentOS 7 GRUB 부트로더_편집모드 single 추가

싱글모드 설정을 진행합니다.

CentOS 7 GRUB 부트로더_편집모드 single 추가_싱글모드에서 var tmp 폴더 삭제

/var/tmp 디렉토리 삭제 후 싱글모드에서 심볼릭링크를 같이 생성합니다.

ln -s /tmp /var/tmp
CentOS 7_tmp 디렉토리 보안 설정 후 var_tmp 디렉토리 삭제 및 심볼릭링크 연결

이후에 재부팅 시 설정했던 싱글 모드는 일회성이기 때문에 single 텍스트는 자동으로 지워집니다.

✅ /var/tmp 디렉토리 별도 보안

RHEL 7,8,9 의 기본 설정을 그대로 사용할 수도 있습니다.

 ~]# ll /var/tmp -d
drwxrwxrwt. 9 root root 4096  6월 28 22:45 /var/tmp

[t] 설정은 sticky bit설정으로 이미 소유자만 삭제 및 수정이 가능한 상태여서 별도의 수정이 필요한 경우는 거의 없습니다. /tmp 디렉토리 역시 거의 동일한 설정을 따릅니다.

 ~]# cat /usr/lib/tmpfiles.d/tmp.conf
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# See tmpfiles.d(5) for details

# Clear tmp directories separately, to make them easier to override
q /tmp 1777 root root 10d
q /var/tmp 1777 root root 30d
 ~]# systemctl status systemd-tmpfiles-clean.service
 systemd-tmpfiles-clean.service - Cleanup of Temporary Directories
     Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-clean.service; static)
     Active: inactive (dead) since Sat 2025-06-28 16:18:43 KST; 7h ago
TriggeredBy:  systemd-tmpfiles-clean.timer
       Docs: man:tmpfiles.d(5)
             man:systemd-tmpfiles(8)
    Process: 86720 ExecStart=systemd-tmpfiles --clean (code=exited, status=0/SUCCESS)
   Main PID: 86720 (code=exited, status=0/SUCCESS)
        CPU: 14ms

 6월 28 16:18:43 ip-172-26-10-157.ap-northeast-2.compute.internal systemd[1]: Starting Cleanup of Temporary Directo>
 6월 28 16:18:43 ip-172-26-10-157.ap-northeast-2.compute.internal systemd[1]: systemd-tmpfiles-clean.service: Deact>
 6월 28 16:18:43 ip-172-26-10-157.ap-northeast-2.compute.internal systemd[1]: Finished Cleanup of Temporary Directo>
lines 1-13/13 (END)

/tmp 파일에 대해 /etc/fstab에 연결하여 noexec, nosuid, nodev 등의 마운트 옵션으로 보안 정책을 적용하고, /var/tmp에 대해서는 기본 권한과 systemd-tmpfiles의 자동 정리 정책을 그대로 유지하는 방식을 권장합니다.

이렇게 하면 /tmp는 실행 파일 차단 등 엄격한 보안 조치를 적용하여 임시 실행 공간으로 안전하게 관리하고, /var/tmp는 장기 임시 저장소로서의 기능을 유지하면서도 불필요한 파일은 자동으로 정리되어 시스템 자원을 효율적으로 관리할 수 있습니다.

필요 시 SELinux 정책을 추가로 적용해 보안을 강화해서 사용할 수 있습니다.

Similar Posts

  • 리눅스 백그라운드(Back Ground)&포그라운드(Fore Ground): 프로세스 제어하기

    리눅스의 프로세스는 백그라운드(Back Ground)와 포그라운드(Fore Ground) 두 가지의 모드로 작동됩니다. 리눅스 백그라운드 작업을 하는 이유는 일반적인 쉘 명령어를 실행했을 때 프로세스가 종료될 때까지 기다리면서 다른 작업을 하지 못하는 경우가 있기 때문입니다. 목차✅ /tmp 디렉토리 보안 설정 항목✅ /etc/fstab 에서 /tmp 디렉토리 보안 설정🔲 /etc/fstab에 /tmp 설정✅ /var/tmp 디렉토리 삭제 후 /tmp 디렉토리 심볼릭…

  • 리눅스 톰캣 설치

    리눅스 톰캣 설치(Ver 9.0.83)를 진행해 보겠습니다. 목차✅ /tmp 디렉토리 보안 설정 항목✅ /etc/fstab 에서 /tmp 디렉토리 보안 설정🔲 /etc/fstab에 /tmp 설정✅ /var/tmp 디렉토리 삭제 후 /tmp 디렉토리 심볼릭 링크 연결✅ /var/tmp 디렉토리 별도 보안1. wget 설치 먼저 레드헷 계열에서 사용하는 패키지 매니저인 yum으로 wget 설치를 진행합니다. wget은 웹 서버로부터 컨텐츠를 가져오는 프로그램입니다. 2….

  • bash: 셸 따옴표 및 셸 쌍따옴표

    bash 및 셸 프로그램에서 명령어를 치환하는데 ‘$’ 기호와 소괄호'()’를 사용하는 대신 따옴표 기호도 사용합니다. 치환은 수식의 어떤 부분에 그와 대등한 무언가로 바꿔 넣는 행위입니다. ‘셸 따옴표’와 ‘셸 쌍따옴표’의 기본 공통 사항은 확장을 제어하는데 활용된다는 것입니다. 여기에서 차이점은 셸 따옴표는 모든 확장을 제어하지만 셸 쌍따옴표는 3개의 기호를 제외하게 됩니다. 셸 쌍따옴표 제외 기호: $…

  • echo 명령어: From 확장과 인용

    echo 명령어는 문자열을 그대로 출력해 주는 명령어이다. echo 명령어는 프롬프트에서 사용하는 일은 거의 없으며, 쉘 스크립트 작성 시에 자주 사용하는 명령어이다. 표준 출력 상에 해당 텍스트 인자를 표시한다. 목차✅ /tmp 디렉토리 보안 설정 항목✅ /etc/fstab 에서 /tmp 디렉토리 보안 설정🔲 /etc/fstab에 /tmp 설정✅ /var/tmp 디렉토리 삭제 후 /tmp 디렉토리 심볼릭 링크 연결✅ /var/tmp…

  • 리눅스 명령어 13가지 카테고리 분류&시스템의 이해

    리눅스의 명령줄 인터페이스(Command Line Interface, CLI)는 컴퓨터 프로그램 및 운영체제와 상호 작용하기 위한 텍스트 기반의 사용자 인터페이스입니다. 리눅스 명령어는 유닉스 계열 운영체제어서 거의 동일하게 작동하며, 명령어를 입력해서 파일의 생성, 수정, 복사 이동 및 서버 전반에 걸친 관리를 하게 됩니다. 명령어를 카테고리로 분류하지만 틀릴 수 있는 점을 참고하여 주시기 바랍니다. 목차✅ /tmp 디렉토리 보안…

  • 리눅스 touch 명령어

    touch 명령어는 파일의 날짜 시간 정보를 변경하는 명령어입니다. 아무 옵션 없이 사용할 경우 파일의 최근 사용 시간, 변경 시간이 서버의 현재 시간으로 변경됩니다. 파일이 없는 파일명을 입력할 경우 새로운 크기가 0인 빈 파일이 생성됩니다. 목차✅ /tmp 디렉토리 보안 설정 항목✅ /etc/fstab 에서 /tmp 디렉토리 보안 설정🔲 /etc/fstab에 /tmp 설정✅ /var/tmp 디렉토리 삭제 후…

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 5   +   4   =