다음 유닉스/리눅스 시스템의 보안 체크리스트 점검 항목 중 일부이다. 각 명령이 어떤 보안 조치를 위한 것인지 서술하시오.
(1) chmod -s <파일명> (2) find / -user root -type f \( -perm -4000 -o -perm -2000 \) -xdev -exec ls -al {} \;
/
이하 모든 일반 파일f
에 대하여 소유자가 root 이고 SUID 또는 SGID가 설정된 실행 파일은 실행 시에 root 권한 상승을 통해 공격에 악용될 수 있는 위협이 존재한다.-xdev
: 검색할 디렉터리와 다른 파일시스템은 검색하지 않는 옵션리눅스 시스템 담당자는 서버 취약점 점검을 위해 다음 명령어를 수행하고자 한다. 각각의 질문에 답하시오.
- 최근 7일 이내에 변경된 파일을 찾는 find 명령어를 작성하시오.
- 사용자(소유자)가 root 이고 SUID(setuid)가 설정된 파일을 찾는 find 명령어를 작성하시오.
find / -mtime -7
find / -user root -perm -4000
다음 리눅스 시스템 관리자가 사용하는 중요 디렉터리에 대한 백업용 쉘 스크립트 파일과 백업 결과 파일에 관한 내용이다. 각각의 질문에 답하시오.
[백업용 쉘 스크립트 파일(back.sh)] #!/bin/sh today = $(date + %Y%m%d%H%M%S) tar -cvzf /data/backup/etc_$dat.tgz /etc/* tar -cvzf /data/backup/home_$dat.tgz /home/* [백업 결과 파일 목록] -rw-r--r-- 1 root root 101853308 2021-03-10 13:39 etc_202103101339.tgz -rw-r--r-- 1 root root 40736 2021-03-10 13:39 etc_202103101339.tgz
- 백업 결과 파일의 접근권한을 검토하여 어떤 보안상 문제가 있는지 설명하시오.
1.
의 문제점을 개선하기 위해 백업용 쉘 스크립트 파일을 umask 변경 후 백업 파일을 생성하고 umask를 원래대로 재설정하도록 수정하시오.- operator 사용자만 백업용 쉘 스크립트 파일(/usr/local/bin/backup.sh)을 사용하도록 만드는 명령어를 작성하고 해당 명령어에 대해 간단히 설명하시오.
#!/bin/sh
today = $(date + %Y%m%d%H%M%S)
umask 066
tar -cvzf /data/backup/etc_$dat.tgz /etc/*
tar -cvzf /data/backup/home_$dat.tgz /home/*
umask 022
chown operator /usr/local/bin/backup.sh
chmod 700 /usr/local/bin/backup.sh
루트(root) 계정은 리눅스 시스템에서 가장 강력한 권한을 가지고 있는 계정이다. 만약 루트 사용자가 터미널 접속 후 로그아웃하는 것을 잊고 접속한 상태로 방치한다면 비인가자에 악의 적인 시스템 접근으로 인해 불필요한 내부정보의 노출 위험이 존재한다.
- 위와 같은 상황을 방지하기 위해 일정 시간 동안 사용하지 않는 루트 계정이 자동 로그아웃되도록 설정할 수 있는 환경변수는 무엇인가?
- 이 환경변수를 모든 사용자가 로그인할 때마다 자동으로 적용하고자 한다. 적절한 설정 파일과 설정 방법(권장 시간 600초)을 쓰시오.
TMOUT
환경 변수/etc/profile
에 설정# vi /etc/profile
TMOUT = 600
export TMOUT
또는
TMOUT = 600; export TMOUT
또는
export TMOUT = 600
리눅스 시스템 관리자(root)는 cron 프로그램을 이용하여 다음과 같은 작업을 수행하려고 한다. 다음 질문에 각각 답하시오.
- 자신의 crontab 파일(cron 테이블)에 예약된 작업을 확인하기 위한 crontab 명령어를 쓰시오.
- test01 사용자의 crontab 파일(cron 테이블)을 생성(편집)하기 위한 crontab 명령어를 쓰시오.
- 자신의 crontab 파일(cron 테이블)에
/bin/re -rf
명령어를 사용하여/tmp
디렉터리 밑에 있는 모든 파일과 디렉터리를 삭제하는 작업 등록을 위한 명령을 작성하시오. 단, 매주 일요일 오전 03:00 동작하며 표준 출력은/dev/null
로 보내어 출력되지 않게 하고 표준 에러는 표준 출력으로 재입력하도록 작성하시오.
crontab -l
crontab -u test01 -e
0 3 * * 0 /bin/rm -rf /tmp/* >/dev/null 2>&1
crontab -u <계정명> -l
crontab -u <계정명> -e
crontab -u <계정명> -r
crontab -l <계정명>
crontab -e <계정명>
crontab -r <계정명>
사이트 관리자는 원격 로그 서버를 구축하여 관리 대상 장비의 syslog를 로컬 및 원격 로그 서버에 모두 남기려고 한다. 아래 보기를 참조하여 관리 대항 장비 및 원격 로그 서버에 설정할 것은 무엇인지 기술하시오.
[관리 대상 장비 - /etc/slog.conf 내용 일부] authpriv.* /var/log/secure ( A ) A : 원격 로그 서버(IP : 192.168.133.20)로 인증 관련 로그를 전송하도록 설정 [원격 로그 서버 - 방화벽(iptables) 설정] #iptables -A INPUT -p ( B ) --dport ( C ) -j ACCEPT B, C : 원격 로그 서버에 관리 대상 장비의 로그를 전송받을 수 있도록 방화벽(iptables) 설정
# syslog.conf 설정 형식
facility.priority, facility.priority, • • • action(logfile-location)
A.B A.B C
@원격로그서버 IP
)514/udp(syslog 기본 포트)
를 사용함