리눅스 권한 골때리네요 보안에 관한 문제

babbab의 이미지

슬렉웨어를 쓰는데 제 컴퓨터 보안이 걱정이 되서 개인 계정과 루트계정으로 umask로 077로 설정했는데 잘 되다가 슬랙빌드 패키지를 설치하는중 etc 디렉터리의 권한을 rwx------로 바꿔놔 내 계정을 로그인 할때 왜 I have no name이 나오는지 찾느라 한참 고생했네요. passwd, shadow 파일 권한도 다 맞는데 왜 문제인가 했더니 패키지 컴파일하고 설치하는도중 etc 디렉터리 권한을 바꿔놓았네요. etc 디렉터리 권한만 바꿔놓으면 다행인데 이것 말고도 usr, var에 있는 여러 디렉터리 권한도 바꿔놔 어떤게 원래 권한이었는지도 모르겠어요.

보안도 생각해 보면 권한을 주는 문제인데 other에게 읽는권한을 주단 얘기는 그 사용자에게 읽어도 되는 믿음 또는 권한을 주단 얘기네요. 읽는 권한만 가지고 있어도 유저 계정의 데이타를 들여다 볼수 있어서 게스트로 로그인 해서 그 시스템의 약점을 찾아 볼수 있기도 하고요. 이렇게 큰 복잡한 리눅스 시스템이지만 아무것도 아닌 작은것에 보안이 깨지는 걸로 알고 있습니다.

또 권한, 믿음을 주는 문제가 아얘 권한, 믿음을 주던지 아얘 보지도 못하게 주지말던지 하는 문제이네요. 예를 들어 어느회사에서 직원을 고용하면 그 직원에게 일을 시키기 위해선 그 직원에게 access를 허용해야 하는데 read 권한을 준것이지요 (일을 하기 위해선 아마도 write, execute권한도 줘야 할겁니다.) 그 직원이 일을 하면서 회사 영업 비밀이나 취약점도 같이 보게 될겁니다. 회사는 상식적으로 그 직원이 영업 비밀이나 약점을 악용하지 않을 거라 믿음을 가지고 고용을 한거고 read권한을 준것 이지요. 이렇듯 보안은 아얘 권한을 주고 고용하던지 아얘 안주고 고용을 안하던지 하는 문제이네요.

그렇기 떄문에 root,user,other로 access level이 있고 권한, 믿음을 줘도 단계적으로 주는 방법을 쓰는것 같네요. 솔직히 컴퓨터 인테넷에서 터지는 해킹사고도 그렇고 전 컴퓨터 보안을 잘 안믿는 편입니다. 컴퓨터가 쉽게 뚤릴수 있고 정보도 돈주고 사고파는 세상인데 (무슨 정보에 따라 값어치가 있느냐 없느냐지만) 진짜 값어치 있는 정보는 컴퓨터가 아닌 제 머리속에 두어야 할것입니다.

서버를 운영하면 권한을 잘못줘 컴퓨터가 뚤릴수 있고 인터넷 데몬 프로그램 자체의 발견되지 않은 버그나 취약점에 의해 뚤릴수 있고 뚤리는 방법은 여러가지라 생각됩니다. 버그나 취약점이 있으면 프로그램잉을 좀 하면 ssh나 telnet등 비슷한 개인 전용 접속 프로그램을 짜서 서버데몬의 취약점을 이용해 user 결국은 root 권한까지 얻을 수 있을 수도 있겠지요.

다른 리눅스 배포판도 개인용으로 나왔으면 마찮가지겠지만 저는 슬렉웨어를 쓰는데 개인용 편리목적을 위해 프로그램이 겨우 작동해야 하게 만들어 놓았고 보안은 그렇게 생각 안하는 거처럼 보입니다. 하여튼 컴퓨터 보안은 못믿겠습니다. 언젠간 뚤리는걸 기다리고 있는게 컴퓨터 보안입니다.

그렇고 보면 서버를 운영하는 사람들은 대단한 면이 있는 사람들입니다. 생판 모르는 위험한 세상의 사람들을 대하는데 internet port도 열어놨고 인터넷 서버를 운영한다는 자체가 세상사람들과 소통한다는 얘기도 되지만 최소히 읽는 권한도 주어서 위험을 부담한다는 의미도 되지 않겠습니까? 그만큼 컴퓨터서버 프로그램을 잘알아 보안에 자신있다는 얘기일지도 모르겠습니다.

jick의 이미지

리눅스/유닉스 계열에서 유저에게 권한을 주는 방식이란 게, 몇십 년 전에 비싼 컴퓨터 한 대 전산실에 갖다 놓고 수십 명의 사용자가 돌려가며 쓰던 시절에 만들어진 거라, 요즘 개인용 컴퓨터에 적용하려면 잘 안 맞는 부분들이 있지요.

요즘 개인용 컴퓨터는 대부분 주인 혼자 쓰는 건데 권한이 600이든 644든 무슨 차이가 있겠습니까, 어차피 그 안에서 돌아가는 프로세스는 주인과 같은 uid 아니면 루트일 텐데 말이죠. 사용자의 실수를 방지해 주는 정도의 효과가 있을 뿐이죠.

https://xkcd.com/1200/

* 그리고 뚤리는(X) 뚫리는(O)

Stephen Kyoungwon Kim@Google의 이미지

수정합니다.

다시 읽어 보니 패키지가 설치 중에 etc의 권한을 마음대로 변경했다는 얘기 같습니다. etc는 많은 패키지들이 공유하는 건데, 일개 패키지가 그렇게 권한 변경을 해도 되는 건지 잘 모르겠습니다. 혹시 무슨 패키지인가요?

"Is it expected?" 냐고 물어보시고 버그 리포트를 할 만한 것 같습니다.

babbab의 이미지

슬랙빌드는 패키지를 제공하는게 아니라 소스를 컴파일하고 패키지를 만들어 주는 스크립트를 제공합니다. 소스는 따로 다운 받아야 하지요. umask 077을 .bashrc에 넣는데 아마도 컴파일 하고 패키지 하면서 스크립가 권한을 변경한거 같습니다. 스크립트에서 install할때 권한을 지정하는 스크립도 있고 제가 실행 했던건 아마도 없었나 봅니다.

>etc는 많은 패키지들이 공유하는 건데, 일개 패키지가 그렇게 권한 변경을 해도 되는 건지 잘 모르겠습니다. 혹시 무슨 패키지인가요?

일개 패키지라 하셨지만 제품도 일개 볼트나 넛이 없어져 망가집니다. 프로그램 소스도 일개 글자 하나 틀리거나 작은 오류로 에러 나 망가집니다. 수도꼭지도 일개 고무바킹이 없어서 못씁니다. 그렇게 크고 자랑스러운 리눅스 서버지만 일개 작은 보안 설정 하나로 무너집니다. 작은게 작은게 아닙니다. 프로그램잉 하시면서 작은걸 작게 보는 걸 고치셔야 겠습니다.

Stephen Kyoungwon Kim@Google의 이미지

여기서는 그 바이너리냐 업스트림 소스 + 패치의 빌드냐가 차이를 만들지 않는 걸로 이해됩니다. 바이너리를 인스톨할 때, pre나 post installation으로 이런저런 설정을 해주는데, 그 과정에서 권한 설정이 문제니까요.

그리고 "일개"라고 한 건, etc를 공유하는 수많은 패키지가 있고 다들 독립적으로 만들어지다시피 하는데, 한 패키지가 그걸 건드리면 안 된다는 뜻이에요. 그걸 건드린다는 건 시스템의 전 패키지에 영향을 줄 의사결정을 할 수 있다는 뜻인데, 그런 걸 할 수 있는 패키지는 거의 없어야죠.

babbab의 이미지

> etc를 공유하는 수많은 패키지가 있고 다들 독립적으로 만들어지다시피 하는데, 한 패키지가 그걸 건드리면 안 된다는 뜻이에요. 그걸 건드린다는 건 시스템의 전 패키지에 영향을 줄 의사결정을 할 수 있다는 뜻인데, 그런 걸 할 수 있는 패키지는 거의 없어야죠.

저도 무엇이 etc의 권한을 건드렸는지 모르겠습니다. 전역설정파일을 설치하면서 그렇게 되지 않았을까.. 아마도 만든사람이 유저가 기본 umask 권한을 건들걸 예상 못하고 만든거 같습니다.

Stephen Kyoungwon Kim@Google의 이미지

혹시 최근 설치된 패키지들이 많지 않거나 히스토리 트랙이 가능하다면, 설치된 패키지들 중에 바이너리 서치를 해보시면 알 수 있을 것 같기는 합니다. 그렇지 않고 누가 어떤 파일을 설치했는가도 아니고 누가 디렉토리 퍼미션을 바꿨느냐를 알만한 팬시한 방법은 별로 없을 것 같구요. 이게 만약 모종의 패키지--예컨대 보안 관련 업데이트가 들어 있는--가 의도한 게 아니라면 버그일 텐데, 버그라면 아마 우선 순위가 높은 버그일 것 같습니다.

문제는 버그가 있는 버전을 설치함으로써 이미 시스템을 mess up 해놨는데, 이걸 다음 마이너 패치를 설치함으로써 100% 완벽하게 부드럽게 처리되지 않을 수도 있다는 건데, 버그라면 이 패키지 유지/보수 하는 분은 며칠 고생 좀 하겠네요.

babbab의 이미지

>혹시 최근 설치된 패키지들이 많지 않거나 히스토리 트랙이 가능하다면, 설치된 패키지들 중에 바이너리 서치를 해보시면 알 수 있을 것 같기는 합니다.

슬렉웨어에는 특별히 패키지 시스템같은게 없고 압축한걸 풀어 설치 합니다. 의존성 검사도 없지요. 스크립트를 봐야 알수 있을 것입니다.

> 버그라면 아마 우선 순위가 높은 버그일 것 같습니다.
제 생각엔 아시다시피 소프트웨어가 완성도는 높일수 있어도 오류는 항상 발견됩니다. umask로 기본 권한을 바꾼 제가 잘모르고 한거라 치죠. 그리고 이게 소프트웨어에 버그가 있는게 아니라 스크립트 버그 일것 입니다. 이런건 제가 주의를 해야죠. 단지 어디엔가 파일생성 기본권한을 바꾸면 슬렉웨어가 잘 작동하지 않을수 있다라는 글귀라도 슬렉 지침서에 있었으면 피해갔죠. 다른 배포판에서도 이렇게 파일생성권한을 바꾸면 패키지가 제대로 설치되지 않을수 있는지 알고 싶기도 합니다... 그리고 생각엔 개인 유저는 umask를 써도 영향을 그렇게 안주는데 루트권한을 바꾸면 소프트웨어를 설치할때 이렇게 탈이 나는거라 생각됩니다. 루트의 설정은 조심해야 겠네요.