※ 아래 설정을 위해서는 /tmp 파티션이 따로 잡혀 있어야 합니다.


실행권한 없는/tmp  파티션 만들기

웹응용프로그램(apache) 취약성을 이용한 웹 해킹에 따른 방지 방법입니다.


tmp 디렉토리로 /tmp 를 사용하기도 합니다.
하지만 일부 버그를 이용하여 /tmp 파일에 스크립트를 넣고 실행 시키는 경우가 많습니다.
 

이에따라 /tmp 디렉토리를 다시 생성, 보안설정을 하여 마운트 하는 방법을 설명합니다.
 

1. /tmp 로 쓰이게될 100MB의 용량을 생성한다. 만약 더 큰 용량을 원한다면 count 사이즈를 높히면 됩니다.
   $ dd if=/dev/zero of=tmphdd bs=1024 count=100000

2. 파일시스템을 만들고 (-j : ext 3 , 무옵션 : ext2)
   $ /sbin/mke2fs -j /dev/tmphdd

   완료가 되면 파티션 생성과 파일시스템이 만들어 지며


3. rsync 또는 cp를 사용하여 임시 디렉토리를 만들고 데이터를 백업합니다.
   이제 기존 데이타를 옮기고

   $ rsync -av /tmp /var/tmp_BAK

   $ chmod 1777 /tmp/

4. tmphdd 를 마운트 할때 옵션 몇가지를 추가합니다.
   $ mount -o loop,noexec,nosuid,rw /dev/tmphdd /tmp

   실행권한을 주지 않고 마운트 합니다.

5. 기존자료를 복구합니다.
   $ cd /tmp

   $ rsync -av /var/tmp_BAK/tmp/ ./
 

6. 백업되었던 파일을 삭제 합니다.

   $ rm -rf /var/tmp_BAK/tmp/

7. 부팅시 fstab 에 추가해야 다음 리붓에도 적용시키기 위해 /etc/fstab 에 한줄의 라인을 추가합니다.

   $ /dev/tmphdd /tmp ext3 loop,noexec,nosuid,rw 0 0

  

8. 완료 후 테스트는 /tmp 디렉토리에 실행 파일을 넣고 실행시켜 봅니다.

   $ /tmp/a.out


   bash: ./a.out: Permission denied


 

9. 아파치도 재실행하여 웹로그인이 되는지 확인하고