/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

  • [Linux] lsof 명령어: 실행 중 파일 정보 출력

    lsof 명령어는 lisf open files의 약자로 리눅스 시스템에서 열려 있는 파일의 정보를 출력해 주는 명령어입니다. lsof 명령어는 파일을 포함하여 디렉터리, 네트워크 소켓, 파이프 등 프로세스가 사용 중인 다양한 리소스도 조회할 수 있습니다. 목차✅ /tmp 디렉토리 보안 설정 항목✅ /etc/fstab 에서 /tmp 디렉토리 보안 설정🔲 /etc/fstab에 /tmp 설정✅ /var/tmp 디렉토리 삭제 후 /tmp 디렉토리…

  • Linux: 프로그램과 프로세스 및 스레드(3가지 용어 차이)

    리눅스 시스템에서 프로그램과 프로세스 스레드의 차이는 운영체제를 이해하는데 필요한 요소입니다. 목차✅ /tmp 디렉토리 보안 설정 항목✅ /etc/fstab 에서 /tmp 디렉토리 보안 설정🔲 /etc/fstab에 /tmp 설정✅ /var/tmp 디렉토리 삭제 후 /tmp 디렉토리 심볼릭 링크 연결✅ /var/tmp 디렉토리 별도 보안✅ 프로그램(Program)이란? 사전적 의미의 프로그램은 컴퓨터에서 실행 가능한 명령어들의 모음을 의미하며, 특정 작업을 수행하기 위해 개발된…

  • Apache 시작, 중지, 재시작 명령어 | 서비스 상태 확인

    리눅스에서 Apache를 설치하고 레드헷 계열과 우분투에서의 시작, 중지, 재시작 명령어를 자주 사용하게 됩니다. Apache 시작, 중지, 재시작 등의 명령어는 다음과 같습니다. 목차✅ /tmp 디렉토리 보안 설정 항목✅ /etc/fstab 에서 /tmp 디렉토리 보안 설정🔲 /etc/fstab에 /tmp 설정✅ /var/tmp 디렉토리 삭제 후 /tmp 디렉토리 심볼릭 링크 연결✅ /var/tmp 디렉토리 별도 보안✅ Apache 시작 및 중지,…

  • GeoIP 국가 코드표 정리 목록

    아파치 서버에서 사용할 수 있는 GeoIP 국가 코드표 정리 목록입니다. 목차✅ /tmp 디렉토리 보안 설정 항목✅ /etc/fstab 에서 /tmp 디렉토리 보안 설정🔲 /etc/fstab에 /tmp 설정✅ /var/tmp 디렉토리 삭제 후 /tmp 디렉토리 심볼릭 링크 연결✅ /var/tmp 디렉토리 별도 보안GeoIP란? GeoIP는 maxmind에서 제공하는 모듈과 IP 정보 DataBase를 이용해서 웹에 접근하는 IP를 국가 별로 확인할 수…

  • SSL 인증서 설치(Sectigo)

    Apache 웹 서버에 Sectigo SSL 인증서 설치를 진행합니다. 테스트 URL로 서브 도메인 tozisin.com으로 하여 설치 테스트를 진행합니다. 설치할 인증서는 설치 후 30일 간 이용 가능한 ‘Free 30Days SSL‘ 설치를 진행합니다. AlmaLinux 9.4는 Rocky Linux 9.4와 완전히 호환되는 RHEL 계열의 클론입니다. 따라서 Apache 설치 및 모듈 구성 방식도 Rocky Linux와 동일합니다. Apache 버전은 2.4.57입니다….

  • 리눅스 chgrp 명령어

    리눅스 chgrp 명령어는 파일 및 디렉토리의 그룹을 변경할 수 있는 명령어이며, Change Group의 약자입니다. 목차✅ /tmp 디렉토리 보안 설정 항목✅ /etc/fstab 에서 /tmp 디렉토리 보안 설정🔲 /etc/fstab에 /tmp 설정✅ /var/tmp 디렉토리 삭제 후 /tmp 디렉토리 심볼릭 링크 연결✅ /var/tmp 디렉토리 별도 보안✅ 리눅스 chgrp 명령어 기본 사용법 chgrp 명령어에서 옵션은 거의 사용되지 않습니다….

답글 남기기

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

Prove your humanity: 2   +   7   =