본문 바로가기

Software&Hardware/OS_Linux

sudo사용의 필요성

반응형

(1) sudo사용의 필요성


 UNIX 또는 Linux 
시스템에서 root는 무한대의 권한을 가지고 있습니다. 따라서 침입자들에게는 root 권한을 얻어내는 것이 최우선의 목표입니다.


 UNIX 또는 Linux 
시스템에서 root의 권한은, 시스템 관리자, 시스템 커널 자체, 시스템의 서비스 데몬의 대개 세가지 경우로 한정되어 있습니다.


 root
계정으로 원격으로 로긴하는 것은 대부분의 시스템에서 불가능하도록 설정하는게 보통이지만, su를 쓰면 원격으로 로긴한 계정에서도 root가 될 수 있습니다.


 su
대신에 sudo를 쓰면 다음의 장점이 있다.


 root passwd
를 효율적으로 관리할 수 있습니다. 한 명이 아닌 여러 명의 관리자에 의해 시스템이 운영될 경우에, 여러 사람이 root 패스워드를 공유하면 root 패스워드의 정기적인 변경이 어려워짐은 물론, root 패스워드가 외부로 노출될 확률이 상대적으로 높아 지게 됩니다.


 root
가 시스템 상에서 작업하는 시간이 짧아야 합니다. root shell을 실행시켜서 오래 걸리는 작업을 하는 것은 많은 경우에 매우 큰 위험을 초래한합니다. 실수로 root filesystem에서 rm -rf와 같은 위험한 커맨드를 실행할 가능성도 충분히 발생 될 수 있습니다. 따라서 sudo를 써서 root권한을 사용하는 시간을 최소화하는 것은 위협요소로 부터 안전한 작업 또는 운영을 하는데 있어서 매우 큰 장점입니다.


 log
추적이 쉬워집니다. su root를 할 경우가 많아지게 되면, su root가 되어 무슨 작업을 했는지 일일이 확인하는 것이 불가능 합니다. 심지어 시스템의 일부가 손상되어도 그 사실을 눈치 채지 못할 수도 있습니다. sudo를 쓰게 되면 command단위의 logging이 가능하므로 정확한 기록을 확인할 수 있게 됩니다.


 
관리의 권한과 책임이 명확해집니다. root권한을 여러 사람이 공유할때, 어떤 작업이 누구에 의해 행해졌는가는 매우 불분명해집니다. sudo를 써서 작업한다면 누가 어떤 작업을 했느지가 명확해 집니다.


 
일종의 침입탐지의 기능을 한다. ps w command의 결과에서 만약 시스템에 root shell이 실행되어 있다면 분명히 침입을 확신할 수 있습니다. 왜냐면 그 시스템의 여타의 관리자는 분명히 sudo로 작업을 하므로 root shell을 실행시키지 않기 때문이죠. 실제로 관리자가 root shell을 실행시킬 일이 있다 해도 매우 드문 경우이므로 관리자의 주의를 환기시키게 됩니다. 시스템의 침입자는 sudo를 사용할 수가 없습니다. 이유는 sudo sudoers라는 파일에 등록된 사용자만 사용할 수 있는데, 침입자가 자신을 sudoers에 등록시키면 존재가 노출 될 수 밖에 없기 때문입니다. 따라서 침입자는 무슨 일을 하든 시스템을 조작하기 위해서는 root shell을 사용해야 하고 침입이 당장 노출되게 되어있습니다.

 지금까지의 이유 이외에도 sudo를 쓴다는 것은 시스템을 제대로 관리하고 있다는 상징성을 가지고 있습니다. root권한을 최소화 시키는 것이 보안의 첫걸음 이라는 관점에서 보면, sudo의 사용은 바로 보안의 기본이라고 할 수 있습니다.




 (2) sudo
의 사용법


 sudo
를 사용하려면 당연히 시스템에 sudo가 설치되어 있어야 합니다. 기본 설치되거나 다른 여러곳에 설치법이 기술 되어 있기 때문에, 이글에서는 설치법을 다루지는 않습니다. 


 sudo
가 설치되어 있다면, sudoers 파일에 원하는 사용자를 등록시킬 수 있습니다. 현재의 글에서는 /etc/sudoers가 설정파일이라고 합니다. 
sudoers 화일의 위치는 설치 시에 지정한 옵션에 따라 달라질 수 있기 때문 입니다.



 visudo
라는 커맨드를 사용면 명령에 대한  편집 가능하여 집니다.


 
만약 visudo를 쓰지 않고 직집 /etc/sudoers를 편집 할 경우, 편집하다가 실수하면 sudo를 쓰지 못하게 되므로, 문법체크를 해주는 visudo를 쓰는 것을 권장 합니다.


 $ visudo


/etc/sudoers
중에서..
# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for the details on how to write a sudoers file.
#


# Host alias specification


# User alias specification


# Cmnd alias specification


# User privilege specification
root     ALL=(ALL) ALL
stevens   ALL=(ALL) ALL
xlinux ALL=(ALL) NOPASSWD:ALL #
이것은 sudo할때마다 패스워드를 안묻게 하는겁니다.


위와 같이 등록시키면 user stevens sudo command를 사용할 수 있습니. sudoers의 복잡한 문법은 피하고 일단 쉽게 이해할 수 있도록 간단한 예제를 더 들어보면,


 dgb boulder = (operator) /bin/ls, (root) /bin/kill, /usr/bin/lprm


 
이와 같이 설정하면, dgb라는 사용자는 boulder 라는 기계에서 operator의 권한으로 ls, root권한으로 kill lprm을 사용할 수 있게됩니다.


 
사용할 때는 다음과 같이 작성합니다.


 $ sudo -u operator /bin/ls


sudo command
의 일반적인 사용법은 다음과 같다.
 $ sudo command [argument]


예제)
 sudo vi /etc/passwd
password : ******** <== root
패스워드가 아닌 사용자의 패스워드를 쓴다.


root
권한으로 /etc/passwd를 편집한다.

반응형

'Software&Hardware > OS_Linux' 카테고리의 다른 글

터치스크린 설정방법 (touchkit)  (0) 2014.05.07
vim 사용법  (0) 2013.12.08
ramdisk 생성 ( Linux )  (0) 2013.12.08
xset 설정  (0) 2013.12.05
linux상에서 패스워드 없이 sudo 사용  (0) 2013.12.05