본문으로 바로가기

[CentOS] /tmp 디렉토리 보안

category 리눅스/CentOS 2013. 5. 28. 03:30

웹서버를 운영하면 /tmp가 필요하다. 이 디렉토리는 누구나 읽고, 쓰고, 실행하게끔 기본으로 설정되며 또한 파티션 없이 사용하는 경우도 있으나 꼭 tmp "파티션" 을 생성하여 사용하기를 권장한다.

80포트(아파치, 즉 일반 홈페이지 방문시 브라우저에서)를 이용하여 /tmp에 악성. 해킹 스크립트를 넣어서 실행 시킬수 있으며 서버보안에 치명적일수 있다.

서버를 처음 설치시 작업을 진행하는 것이 좋다. 이미 구동중인 서버라면 /tmp 를 사용하는 모든 프로세스를 멈추고 진행한다(MySQL, Apache, Plesk, Postgers, SpamAssain, etc).

파티션 체크 및 백업

아래 명령어를 이용하여 현재 파티션이 /tmp 파티션을 분리하여 설치했는지 아닌지를 살펴본다.

df -h

/tmp 를 사용하는 모든 프로세스를 종료후에 /tmp의 백업과 /etc/fstab의 백업을 만든다.

cp -Rp /tmp /tmp-backup
cp /etc/fstab /etc/fstab.backup

설치시 /tmp를 파티션을 나눴을 경우

이 경우 간단히 /etc/fstab 파일의 /tmp 파티션에 nodev,noexec, nosuid를 추가하면 된다.

vi /etc/fstab

  UUID=....    /tmp    ext4    defaults,nodev,nosuid,noexec    1  2

파티션을 다시 마운트 하도록 하자

mount -o remount /tmp

/tmp 파티션이 없고 / 디렉토리 이하에 존재하는 경우

이 경우에는 새로운 /tmp 파티션을 원하는 사이즈로 생성하는 것이 좋다.(나는 10Gb)

1. 새로운 파티션 생성과 포맷

cd /var
dd if=/dev/zero of=tmpmount bs=1 count=0 seek=10G
mkfs.ext4 /var/tmpmount

위의 마지막 명령에 의해 질의문이 뜰수 있는데 y 를 선택하도록 한다.

2. /etc/fstab 에 내용 추가

echo "/var/tmpmount /tmp ext4 loop,rw,noexec,nosuid,nodev 0 0" >> /etc/fstab

3. /tmp 파티션 마운트

mount -o loop,rw,noexec,nosuid,nodev /var/tmpmount /tmp

4. 소유권과 사용권한 부여

chmod 0777 /tmp
chown root.root /tmp

/tmp 복구와 /var/tmp 설정

위의 /tmp 설정들이 문제없이 진행되었다면 아래의 설정을 따라한다.

1. /tmp 복구와 백업 삭제

cp -Rp /tmp-backup/* /tmp/
rm -rf /tmp-backup

2. /var/tmp 삭제와 심볼릭 링크 걸기

rm -rf /var/tmp/
ln -s /tmp/ /var/tmp

3. 재부팅

reboot

4. 파티션 확인

df -h