리눅스 루트계정을 항상 사용하면 보안에 문제가 되나요?

yellowstone의 이미지

윈도우 비스타 출시와 리눅스 사용하면서 루트계정과 일반사용자 권한 분리(?)를 알게 되었습니다.
윈도우 대다수 사용자는 항상 최상위 계정을 사용합니다. 저는 윈도우7과 리눅스를 접하다 보니 관리자 계정을 잘 사용 안합니다.
그런데 사용하면서 궁금한점이 리눅스에 루트계정을 항상 로그인하여 쓰면 보안에 안좋다고 들었습니다. 만약에 리눅스에 루트계정을 항상 로그인하여 사용하면 어떤 보안에 문제가 생기게 되나요?
그리고 루트계정 안쓴다고 보안취약점을 통해 리눅스나 유닉스가 뚤릴수 있지 않나요? 그런 문제가 있으면서 루트 계정 사용을 자제 하려는 이유가 뭔지 알고 싶습니다.

김정균의 이미지

root 계정을 사용한다고 특별히 문제가 될 것은 없습니다.

다만, key logger에 의해서 root passwd 탈취 확률이 높아질 수 있겠죠 :-)

보안이라는 것은 기술적인 접근 보다는 일상적인 접근(?)이 더 중요한 것 같습니다. 즉, 편리할 수록 보안은 취약해 지는 것이고, 필요없는 권한을 보유하고 있을 수록 보안이 취약해 지는 것이고.. 이런 것이죠.

예를 들어, tomcat으로 서비스를 하는 곳의 경우, 개발자들이 tomcat을 제어하는 것을 많이 원하는 것 같습니다. 그리고 tomcat을 port 80으로 서비스 하기 위해서는 root 권한이 필요 합니다.

저는 보통 이런 경우 sudo를 이용해서 tomcat init script만 구동할 수 있도록 권한을 줍니다. 그런데 제 경험상 대부분의 개발자들은 그냥 root 권한을 원하지 이렇게 지원해 주는 것을 불편해 하거나 불평을 합니다. (지금 회사에서도 인프라의 권한이 너무 막강(?)하다는 뒷말이 들립니다.)

제가 경험한바로는 보안은 기술적으로 접근을 해서 해결을 할 수 있는 문제가 아닙니다. 하지만 우리나라의 보안은 정책적인 법령을 정해놓고 그대로만 하면 면죄부를 주고 있죠. 그러니 보안에 투자를 하더라도 장기적인 관점의 보안이나 정책적인 보안에 머물게 되고 문제는 계속 발생을 하는 것이라 생각합니다.

그러므로 root 계정을 직접적으로 사용을 하는 것 보다는 sudo 같은 명령을 이용해서 필요한 부분에만 사용을 하도록 습관을 기르시는 것이 좋을 것 같습니다.

P.S.
물론 저도 root계정을 직접 이용을 합니다만, 일단 login을 root로 하지는 않습니다. 그리고, 벌어질 일들에 대해서 어느정도 예상을 할 수 있는 범위에서 사용을 하는 편입니다.

yellowstone의 이미지

답변 감사합니다.
리눅스는 더 써봐야 알겠지만, 윈도우7 운영체제를 쓰면서 많이 느낀것이 리눅스의 sudo를 보면 윈도우의 사용자계정컨트롤이 생각 됩니다. 해외소프트웨어보면, 대부분 표준사용자권한으로 프로그램이 실행이 가능합니다.
일부 고급설정만 관리자권한(루트사용자)만 요구하더라구요.
하지만, 국내에서 제작된 프로그램을 보면, 프로그램 실행 할때 상당수가 관리자 권한을 많이 요구합니다.
이 문제가 한국내 문제 인가요?

보안에 관심있다보니 바이러스 제로 시즌 2 카페에 가입했는데, 카페 매니저나 운영진들이 sudo나 사용자 계정컨트롤 같은 보안기능(?)을 무시하는 것 같더라구요. 예를들어 sudo, 사용자계정컨트롤 같은 보안기능이 다 막아주지 못한식으로 댓글을 올리고... ASLR, DEP와 같은 메모리 보호기능도 무시하는 것 같구요.

그리고 프리BSD 10.1 설치 해 봤는데, sudo가 기본적으로 제공을 안해서 그런지 sudo 설치가 안되어 있더라구요. 혹시 프리BSD나 솔라리스, AIX, HP-UX 에서는 sudo 잘 안쓰나요?

ed4kim의 이미지

지난번에 패스워드 관련으로 여기에 문의를 하면서 리눅스에 좀 일가견이 있는 아는 사람에게 물어보다 이런 대화도 했었습니다.
왜 루트 계정에 패스워드를 걸어놓느냐...라는건데 제 대답은 이렇습니다.

"매번 sudo 입력하기가 귀찮아서"

이 답글을 보면서 제 자신이 살짝 부끄러웠습니다. 귀찮다는 이유로 매번 루트계정으로 쓰는게 습관되는것도 그리 좋지는 않은가보구나 하고 말이죠.

Necromancer의 이미지

그 문제를 이해하실려면 먼저 "깨진 유리창 법칙" 부터 읽어보시는게 좋습니다.
수칙 안지킨다고 해서 평소에는 문제 안되지만 그거 때문에 문제가 터질 위험이 늘어나고 터지면 손 못쓰는 상황이 되기 때문에 최대한 줄이기 위해서 각종 안전장치가 도입되고 수칙을 정하는 겁니다. 이게 정보자산에 대해 적용된게 보안이라고 생각하시면 됩니다.

루트로 쓰면 평소에는 문제가 안되는데, 실수 한방으로 시스템이 맛가기도 하고 생각없이 깐 혹은 실수로 돌린 프로그램에 어쩌다 키로거가 들어 있다면 바로 당하게 됩니다. 적어도 일반사용자로 하면 루트권한 필요하다면 검토라도 하게 되니 줄일 수가 있죠. 둘 다 뚫린다면 뚫리는건 마찬가지지만 뚫는 사람 입장에서는 누구는 쉽게 뚫리지만 누구는 뚫기 위해서는 겁나 복잡하고 피곤한 과정을 거쳐야 합니다. 그럼 뚫는 사람은 어디를 좋아할까요?

그 까페 운영자들 제정신 아닌거 같네요.

유닉스류에서는 sudo도 많이 낮아진겁니다. su로 별도의 루트 비번 입력하는게 unix의 계정관리정책이었는데, 자기 계정 비밀번호만 입력해도 바로 루트로 전환되버리니까요.

윈도우는 솔직히 말해 답없습니다. OS 정책이 UNIX 수준으로 보안 많이 강화된건 사실이지만 옛날에 만들어지고 지금 많이 쓰이는 프로그램들이 관리자권한 없으면 실행 안되는게 많아서 그렇습니다. 그게 윈도우 쓰는 사람들에게 영향 주고 개발자도 거기에 맞추니 보안 해제가 당연시되는 악순환이 반복되고 있습니다. 이건 윈도우 만든 마소도 손 못씁니다.

Written By the Black Knight of Destruction

내가왜리눅스썼지의 이미지

현재 우분투 쓰는 사람인데요.
매번 프로그램 설치 등의 작업을 할 때 sudo 를 치면서 사용하는 사람입니다.
어느게 더 치명적인지 묻고 싶습니다.

1. 루트 계정으로 항상 로그인 해서 쓰는 사람과
2. 항상 sudo 를 입력해서 쓰는 사람인데 그 사람의 패스워드 (sudo를 입력할 때 요구하는 계정 패스워드) 를 털린 사람과

어느게 더 위험한 상황인지 묻고 싶습니다.

리눅스의 경우 sudo 를 쓰면 계속 패스워드를 입력하라고 하는데 그 퍠스워드가 계정 패스워드랑 동일한 패스워드를 쓰는 이유가 뭔지 궁금합니다. 이런 경우, 눈으로 남이 키보드로 뭐 치는지 감시하면 쉽게 패스워드를 알아낼 수 도 있지 않나요?

차라리 프로그램 설치 시, 다른 패스워드를 쓰는게 나은거 아닌가 라는 생각도 들어서요.

이보게 친구, 속도는 생명이라고.
망하면 재수강. Re: 제로부터 시작하는 재수강

ymir의 이미지

엄밀하게 얘기하자면, sudo 는 다른 사용자의 권한으로 명령을 실행할 수 있게 해주는 명령어입니다.
명령을 수행하기 전에, 본인 계정의 소유자가 맞는지 확인하기 위해 password 를 확인합니다.

많은 경우 sudo 를 root 권한 작업시 사용하지만, 네트워크 서비스를 안전하게 제공하기 위해서도 사용됩니다.
root 로 네트워크 서비스를 띄우면, 해당 서비스가 exploit 되었을 때 root 권한의 shell 을 띄울 수 있지만..
www 나 mysql 과 같이 로그인 계정이 아닌 제한된 계정으로 서비스를 띄우면..
해당 서비스가 exploit 되더라도, root 권한이 없기 때문에 할 수 있는게 별로 없어집니다.

root 에 대해 sudo 권한이 있는 사용자의 password 를 알고 있다면, 언제든지 root 로 작업 가능합니다.
심지어 sudo passwd root 명령으로 root 의 password 를 바꿔서 로그인 할 수도 있습니다.
물론 root 로 로그인 되어 있는 상태에서는 root 의 password 를 바꾸거나 알아낼 수는 없지만..
어차피 위험한 건 둘 다 마찬가지입니다.

일단 sudo root 권한은 그냥 root 와 같다고 보시면 됩니다.

그럼에도 사용자에게 root 계정을 주지 않고, sudo 권한을 부여하는 것은..
관리자 역할 분리와 함께 이력 추적 등 누가 무슨 작업을 했는지 확인하기 쉽고..
로그인 된 상태에서 자리를 비우더라도 시스템이 털리는 걸 방지하는 효과가 있습니다.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.