본문 바로가기

Linux/보안

사용자 보안 - 루트권한 제한(sudo)


루트 권한 제한 (sudo)
- 인증받은 사용자가 특정 명령을 root 권한으로 실행하는 명령어 이다.

/etc/sudoers
- sudo 명령을 내릴 수 잇는 사용자와 명령을 정희한 파일로 편집하려면 visudo 명령을 사용해야 한다.

visudo
- /etc/sudoers 파일을 수정하는 명렁어 이다.



1. sudoers 파일 수정

 
[root@server3 ~]# vi /etc/sudoers - vi 편집기로는 /etc/sudoers 파일을 수정할 수 없다. read-only 파일이기 때문이다.
[root@server3 ~]# visudo
test1 ALL=/usr/sbin/useradd, /usr/bin/passwd - 추가해준다.

참고
- %를 이용하면 그룹지정을 할 수 있다.
ex) %users ALL=   - users라는 그룹에 대해서 권한을 지정할 수 있다.




2. 테스트

 
[root@server3 ~]# useradd test1
[root@server3 ~]# passwd test1
Changing password for user test1.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@server3 ~]# su - test1
[test1@server3 ~]$ whoami
test1
[test1@server3 ~]$ useradd
-bash: useradd: command not found
[test1@server3 ~]$ /usr/sbin/useradd test6
-bash: /usr/sbin/useradd: 허가 거부됨
[test1@server3 ~]$ sudo /usr/sbin/useradd test5

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

Password:       - root 계정의 패스워드를 입력해준다.
[test1@server3 ~]$

-------------------------------------------------------------------

- 다른 쉘에서 확인
[root@server3 ~]# tail /etc/passwd
kim:x:670:15::/home2/kim:/bin/bash
lee:x:690:500::/home2/lee:/bin/csh
park:x:700:15::/home2/park:/bin/bash
test2:x:701:701::/home/test2:/bin/bash
test3:x:702:702::/home/test3:/bin/bash
test4:x:703:703::/home/test4:/bin/bash
test1:x:704:704::/home/test1:/bin/bash
test5:x:705:705::/home/test5:/bin/bash - test5가 생성된 것을 확인할 수 있다.
[root@server3 ~]#

-------------------------------------------------------------------

[test1@server3 ~]$ sudo /usr/bin/passwd test5 - 한번 패스워드를 입력하면 쉘이 있는 동안에는 계속 적용된다.
Changing password for user test5.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[test1@server3 ~]$




3. su 명령제한
- su 명령은 특정 사용자 외에 일반 사용자는 사용하지 않도록 하는 것이 좋다.

 
[root@server3 ~]# whereis su
su: /bin/su /usr/share/man/man1/su.1.gz
[root@server3 ~]# ls -l /bin/su - su의 퍼미션 확인
-rwsr-x--- 1 root su 24120  5월 25  2008 /bin/su

[root@server3 ~]# chown root.test1 /bin/su
[root@server3 ~]# ls -l /bin/su
-rwxr-x--- 1 root test1 24120  5월 25  2008 /bin/su

[root@server3 ~]# chmod 4750 /bin/su - SUID 를 지정
[root@server3 ~]# ls -l /bin/su
-rwsr-x--- 1 root test1 24120  5월 25  2008 /bin/su

[root@server3 ~]# su - test2 - root계정이기 때문에 su 명령어을 사용할 수 있다.
[test2@server3 ~]$ su - test4 - test2 사용자가 su 명령어를 사용하려하면 거부된다.
-bash: /bin/su: 허가 거부됨
[test2@server3 ~]$ su - test5
-bash: /bin/su: 허가 거부됨