시스템 보안

시스템 보안

운영체제 공격에 대한 대응 방안이고 공격자의 최종목적은 root 권한탈취입니다.

시스템 공격 + 대응방안 ==> 시스템 보안

 

특수권한

(실습)

Cent OS에서 실행합니다.

[user@localhost 바탕화면]$ su - root

[root@localhost ~]# cd /test

[root@localhost test]# ls -l 

# ls -l 명령어를 입력했을 때 안에 파일이 있으면 전체 삭제

[root@localhost test]# rm -rf ./*

 

[root@localhost test]# nano test01.sh

[파일 작성]

echo "===================="
date +%Y-%m-%d
echo "===================="

[root@localhost test]# ls -l 

[root@localhost test]# ./test01.sh #권한 없음

[root@localhost test]# chmod 744 test01.sh #권한 부여

[root@localhost test]# ./test01.sh #확인가능

 

[root@localhost test]# cp test01.sh test02.sh #복사

[root@localhost test]# cp test01.sh test03.sh

[root@localhost test]# ls -l 

 

[root@localhost test]# chmod 4744 test02.sh

[root@localhost test]# chmod 4755 test03.sh

[root@localhost test]# ls -l 

test02와 test03은 특수권한이 설정되었습니다.

 

새로운 터미널을 열어줍니다. (user)

[user@localhost 바탕화면]$ cd /test
[user@localhost test]$ ls -l
[user@localhost test]$  ./test01.sh #실행 안됨
[user@localhost test]$  ./test02.sh #실행 안됨
[user@localhost test]$  ./test03.sh #실행됨

test01은 이 파일의 소유자만 실행할 수 있습니다. test02는 이 파일을 실행하는 동안에는 root 권한을 부여받을 수 있지만, 실제 실행되지는 않는다. test03은 실행됩니다. 이 파일을 실행하기 위해서는 그룹과 아더에도 실행권한이 있어야 합니다.

 

root 터미널로 돌아와서 입력합니다.

[root@localhost test]# ls -l /usr/bin/passwd

[root@localhost test]# ls -l /etc/passwd

user 터미널에서 passwd 명령어가 실행되는 것은 root의 권한을 잠시 빌려서 실행하는 것입니다. 여기서 입력하는 내용들은 /etc/passwd를 수정하게 됩니다. 원래 /etc/passwd는 관리자만 변경할 수 있습니다.

 

Sticky Bit

(실습)

Cent OS에서 실행합니다.

계정을 만들어봅니다.

[root@localhost test]# useradd hong
[root@localhost test]# passwd hong

 

폴더를 생성합니다

[root@localhost test]# rm -rf ./* #이전 파일 삭제

[root@localhost test]# mkdir DIR01

[root@localhost test]# mkdir DIR02

[root@localhost test]# ls -l 

 

[root@localhost test]# chmod 777 DIR01

[root@localhost test]# chmod 1777 DIR02

[root@localhost test]# ls -l 

DIR01은 특수권한이 없고, DIR02는 특수권한이 부여되어 있습니다.

 

[root@localhost test]# su hong

su 뒤에 하이픈을 찍고 안 찍고의 차이가 있습니다. 하이픈이 있으면 세션 다 끊고 새로 들어가는 것이고, 하이픈을 안 쓰면 이전 작업 다 가지고 들어가는 것입니다.

 

hong 터미널과 user 터미널에서 동시 신행 @앞부분을 보고 터미널 확인하기 

[hong@localhost test]# whoami

[hong@localhost test]# ls -l

[user@localhost test]# whoami

[user@localhost test]# ls -l

 

[hong@localhost test]# cd DIR01

[hong@localhost test]# touch aaa

[user@localhost test]# cd DIR01

[user@localhost test]# touch bbb

[hong@localhost test]# ls -l

[user@localhost test]# ls -l

 

위를 실행해 보면 aaa의 소유주는 hong이고, bbb의 소유주는 user입니다. 그럼 여기서 hong이 bbb파일을 지우고 user가 aaa파일을 지울 수 있을까요?? 가능합니다.

 

Sticky Bit는 자료실, 게시판에서 주로 사용합니다. 다수의 사용자들이 글을 남기는데, 일반 사용자들은 읽을 수 있으나 삭제할 수는 없어야 합니다. 소유자만이 파일을 삭제할 수 있습니다.

리눅스도 작업을 하다 보면 여러 사람들이 공통으로 사용할 수 있는 공유장이 있어야 합니다. 공유공간이 있어야하기는 하지만 소유자만 파일을 삭제할 수 있어야합니다. 

DIR01을 보면 모든 사람들이 들어가서 사용할 수 있는 공간으로 만들어놨습니다. rwxrwxrwx는 소유자가 아닌 사람들도 삭제 권한이 있다는 의미입니다. 우리가 필요한 것은 모든 사람이 사용할 수 있지만 삭제는 소유자만이 가능한 것을 원합니다. 그렇게 만들 때 필요한 것이 Sticky Bit입니다.

 

이번에는 DIR02 폴더로 가서 파일을 작성하고 삭제해 보겠습니다.

[hong@localhost test]# cd DIR02

[hong@localhost test]# cat > aaa

[파일작성] Hello aaa

[user@localhost test]# cd DIR02

[user@localhost test]# cat > bbb

[파일작성] Hello bbb

[hong@localhost test]# ls -l

[user@localhost test]# ls -l

 

[hong@localhost test]# cat bbb #읽을 수 있음

[hong@localhost test]# rm -rf bbb #삭제불가

[user@localhost test]# cat aaa #읽을 수 있음

[user@localhost test]# rm -rf aaa #삭제불가

 

읽을 수는 있지만 삭제는 불가합니다.