01. 디렉토리/파일 보안

디렉토리 보안

  • 시스템 디렉토리 접근 불가
sudo -s
chmod 700 /boot /mnt /media /root
chmod 711 / /bin /sbin /usr /usr/bin /usr/sbin
chmod 711 /etc /home /lib /dev /opt /home
chmod 711 /var /var/log /var/log/nginx /var/log/postgresql
  • 시스템 정보 노출 안 함
sudo -s
echo tty1 > /etc/securetty

cat /dev/null > /etc/issue
cat /dev/null > /etc/issue.net
chown root:root /etc/issue /etc/issue.net /etc/motd
chmod 0600 /etc/issue /etc/issue.net /etc/motd

파일시스템 보안

임시 파일 생성 디렉토리 /tmp와 공유 메모리 디렉토리 /run/shm 디렉토리에서 파일 실행, 장치 파일 생성 금지 등을 설정한다.

  • /etc/fstab 파일 수정
# 임시 디렉토리
UUID=임의문자열 /tmp            ext4    defaults,noexec,nosuid,nodev        0       2

# 웹 디렉토리
UUID=임의문자열 /www            ext4    defaults,nodev,nosuid,noexec    0       2 

# 공유 메모리
tmpfs       /dev/shm    tmpfs defaults,noexec,nosuid,nodev  0 0

공유 메모리 설정을 추가한다.

웹 어플리케이션이 있는 웹 루트 디렉토리를 별도로 두어 위와 같이 설정하면 첨부파일에 의한 해킹을 방지하는데 도움이 된다.

파일시스템 마운트 옵션

  • defaults: rw, suid, dev, exec, auto, nouser, async
  • noexec: 해당 파티션에서 파일 실행 불가
  • nosuid: 해당 파티션에서 SUID, SGID 설정 불가
  • nodev: 해당 파티션에서 문자, 블록 디바이스 파일 생성 금지

일반사용자 실행 금지 파일

일반 사용자는 패키지 관리 명령어, 콘솔에서 웹 또는 외부 접근 파일 관련 명령어, 스크립트 실행 명령어, 컴파일/빌드 명령어 등을 금지한다.

#!/bin/bash

FILES="
/usr/bin/apt-get
/usr/bin/apt-cache
/usr/bin/dpkg
/usr/bin/aptitude
/usr/bin/wget
/usr/bin/w3m
/usr/bin/curl
/usr/bin/ssh
/usr/bin/telnet.netkit
/usr/bin/netkit-ftp
/usr/bin/scp
/usr/bin/sftp
/usr/bin/nmap
/usr/bin/python2.7
/usr/bin/python3.5
/usr/bin/perl
/usr/bin/php5
/usr/bin/top
/usr/bin/pstree
/usr/bin/free
/usr/bin/w
/bin/ps
/usr/bin/who
/usr/bin/whoami
/usr/bin/find
/usr/bin/which
/usr/bin/whereis
/usr/bin/write
/usr/bin/wall
/bin/df
/bin/ping
/bin/netstat
/sbin/ifconfig
/bin/kill
/usr/bin/lsof
/usr/bin/make
/usr/bin/gcc
/usr/bin/g++
/usr/bin/c++
"

for f in $FILES
do
    # /var/lib/dpkg/statoverride 파일 업데이트
    dpkg-statoverride --remove $f
    dpkg-statoverride --update --add root admin 0750 $f
done

시스템에 따라 다음 파일은 존재하지 않을 수도 있다.

  • /usr/bin/aptitude
  • /usr/bin/w3m
  • /usr/bin/nmap
  • /usr/bin/php5

egg 같은 일반 계정으로 psycopg2-binary 같은 파이썬 패키지 빌드가 필요하다면 아래와 같이 일부 명령어를 임시적으로 허용할 수 있다.

FILES="
/usr/bin/python2.7
/usr/bin/python3.5
/usr/bin/gcc
"

for f in $FILES
do
    # /var/lib/dpkg/statoverride 파일 업데이트
    dpkg-statoverride --remove $f
    dpkg-statoverride --update --add root pincoin 0750 $f
done

이와 같이 허용할지라도 파이썬 패키지 빌드가 끝나면 다시 일반 사용자의 파일 실행을 금지한다.

파일 권한 보안

  • SUID 파일 찾기
sudo find / -perm +4000
  • GUID 파일 찾기
sudo find / -perm +2000
  • SUID/GUID 파일 동시 찾기
sudo find / -path /proc -prune -o -type f -perm +6000 -ls
  • 누구든지 쓸 수 있는 파일 찾기
sudo find /dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print
  • 소유자가 없는 파일 찾기
sudo find /dir -xdev \( -nouser -o -nogroup \) -print

최종 수정일시: 2019-01-06 02:01

blog comments powered by Disqus