/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

  • rm 명령어

    목차✅ /tmp 디렉토리 보안 설정 항목✅ /etc/fstab 에서 /tmp 디렉토리 보안 설정🔲 /etc/fstab에 /tmp 설정✅ /var/tmp 디렉토리 삭제 후 /tmp 디렉토리 심볼릭 링크 연결✅ /var/tmp 디렉토리 별도 보안1. rm 명령어 ‘rm 명령어‘ 는 파일 및 디렉토리를 삭제하는 명령어이다. ‘rm 명령어’ 는 심볼릭 링크는 삭제하지만 링크의 대상 파일은 삭제하지 않는다. ls 명령어와 함께 많이…

  • 리눅스 touch 명령어

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

  • [Linux] mod_ssl.so Apache 모듈 설치하기

    아파치를 사용하는 리눅스 서버에 SSL을 적용하려고 할 때 아피치 모듈 중 mod_ssl.so가 설치되어 있어야 합니다. 목차✅ /tmp 디렉토리 보안 설정 항목✅ /etc/fstab 에서 /tmp 디렉토리 보안 설정🔲 /etc/fstab에 /tmp 설정✅ /var/tmp 디렉토리 삭제 후 /tmp 디렉토리 심볼릭 링크 연결✅ /var/tmp 디렉토리 별도 보안✅ mod_ssl.so 설치 ✅ 서버 방화벽 포트 443 열어두기 SSL 포트인…

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

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

  • 리눅스 dd 명령어

    리눅스 시스템에서 사용하는 명령어 중 하나인 dd 명령어는 디스크, 파티션의 복사, 이미지 파일 생성, 디스크 작업 등 주로 데이터를 복사하거나 변환하는데 사용되는 명령어입니다. 목차✅ /tmp 디렉토리 보안 설정 항목✅ /etc/fstab 에서 /tmp 디렉토리 보안 설정🔲 /etc/fstab에 /tmp 설정✅ /var/tmp 디렉토리 삭제 후 /tmp 디렉토리 심볼릭 링크 연결✅ /var/tmp 디렉토리 별도 보안✅ dd 명령어…

  • 리눅스 uptime 명령어(서버 가동 시간&1,5,15 평균 로드 확인)

    리눅스 uptime 명령어는 시스템의 평균 부하율과 서버의 가동 시간을 확인하는 명령어입니다. 서버의 부팅 시간을 알고 싶을 때, 최근 15분 동안의 평균 로드를 통해 부하율을 알고 싶을 때 사용하는 명령어임을 알 수 있습니다. 목차✅ /tmp 디렉토리 보안 설정 항목✅ /etc/fstab 에서 /tmp 디렉토리 보안 설정🔲 /etc/fstab에 /tmp 설정✅ /var/tmp 디렉토리 삭제 후 /tmp 디렉토리…

답글 남기기

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

Prove your humanity: 7   +   6   =