/ var / www에 chmod 777이 없어야하는 이유


67

로컬 호스트에서 페이지를 개발할 때 때때로을 실행하여 해결할 수있는 "Permission denied"오류가 발생합니다 chmod -R 777 /var/www. 그러나 사람들은 이것이 보안상의 이유로 나쁜 생각이라고 나에게 말하고 있습니다.

/var/wwwchmod가 777 이 아닌 이유는 무엇 입니까?


@ serverfault.com보다이 스레드를 추천하고 싶습니다. apache2 및 권한에 대한 예제 설정을 제공하는 훌륭한 작업을 수행합니다. serverfault.com/q/6895/57036 PS 댓글을 달 수 없으므로 답변으로 추가해야합니다.
MystaMax

답변:


80

777은 일반적으로 나쁜 허가이며 그 이유를 보여 드리겠습니다.

카지노 또는 라스 베이거스에서 어떻게 보일지 모르지만 777은 잭팟을 의미하지 않습니다. 오히려 파일을 수정하려는 모든 사람을위한 잭팟입니다. 777 (및 그 추악한 사촌 666)은 읽기 및 쓰기 권한 (777의 경우 실행)을 other에 허용 합니다. 파일 권한의 작동 방식에 대해 자세히 알아볼 수 있지만 소유자, 그룹 및 기타 권한의 세 가지 권한 그룹이 있습니다. 다른 사용자에 대해 권한을 6 또는 7 ( rw-또는 rwx) 로 설정하면 모든 사용자가 해당 파일과 폴더를 편집하고 조작 할 수 있습니다. 일반적으로 알 수 있듯이 이것은 보안에 좋지 않습니다.

내 예는 다음과 같습니다.

marco@desktop:~/Projects/AskUbuntu/20105$ cd ..
marco@desktop:~/Projects/AskUbuntu$ chmod 0777 20105
marco@desktop:~/Projects/AskUbuntu$ cd 20105/
marco@desktop:~/Projects/AskUbuntu/20105$ ls -lah
total 8.0K
drwxrwxrwx 2 marco marco 4.0K 2011-01-04 20:32 .
drwxr-xr-x 3 marco marco 4.0K 2011-01-04 20:32 ..
marco@desktop:~/Projects/AskUbuntu/20105$ touch test
marco@desktop:~/Projects/AskUbuntu/20105$ chmod 0666 test 

지금까지 폴더를 만들고 "나쁜"권한 (777 및 666)을 가진 파일을 만들었습니다. 이제 다른 사용자로 전환하여 해당 파일을 조작하려고합니다.

marco@desktop:~/Projects/AskUbuntu/20105$ sudo su - malicious
malicious@desktop:~$ cd /home/marco/Projects/AskUbuntu/20105
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ ls
test
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ ls -lah
total 8.0K
drwxrwxrwx 2 marco marco 4.0K 2011-01-04 20:33 .
drwxr-xr-x 3 marco marco 4.0K 2011-01-04 20:32 ..
-rw-rw-rw- 1 marco marco    0 2011-01-04 20:33 test
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ touch bad
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ echo "OVERWRITE" > test 
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ cat test 
OVERWRITE

이 "악의적 인"사용자로서 파일을 디렉토리에 넣고 텍스트를 이미 존재하는 파일에 삽입 할 수있었습니다. 아래에서 755가있는 디렉토리와 644가있는 디렉토리에서 파일과 디렉토리 내부를 볼 수는 있지만 파일을 편집하거나 새 파일을 만들 수는 없습니다.

malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ cd /home/marco/Projects
malicious@desktop:/home/marco/Projects$ touch hey
touch: cannot touch `hey': Permission denied

Apache 권한의 경우 umask 022폴더와 파일 각각에 대해 0755 및 0644 (AKA ) 를 고수하려고합니다 . 이를 통해 파일 소유자는 파일을 편집하고 조작하면서 Apache에 최소한의 액세스 권한 만 부여 할 수 있습니다.


13
나는 언어에 대해 유감이지만 이것은 킥-답입니다. 마르코 감사합니다.
루이스 알바라도

/ var / www 폴더를 자유롭게 관리 할 수있는 사용자를위한 사용자 만 만들면 어떻게됩니까? 나는 내가 운영하는 각 웹 서버마다 전용 가상 머신을 사용하는데, 여전히 조심해야한다는 사실이 궁금합니다.
UrkoM

1
@UrkoM 너무 조심해서는 안됩니다. 사람들이 동일한 파일에 액세스하도록하려면 그룹 권한을 6/7 (0664/0775)로 높이고 각 사용자를 해당 그룹에 추가 할 수 있습니다. 이 설정 (및 내 대답에 설명 된 설정)이 모든 기준을 충족하지는 않지만 0755/0644 시간의 90 %가 사용하려는 권한이라고 말합니다. "한 명의 사용자"시스템 만있는 경우 다른 쓰기 권한이 있는 위험 그다지 위험 하지 않습니다 .
Marco Ceppi

4
@UrkoM 고려해야 할 또 다른 사항은 실제 사용자를 대표하지 않지만 존재하는 특정 "서비스"가 많기 때문에 특정 서비스가 감소 된 능력 (주로 보안상의 이유로 인해 발생할 수있는 피해를 줄이기 위해)으로 실행될 수 있다는 것입니다. 안정성 버그에서). 의 내용을보기 /etc/passwd와 같은 사용자를 볼 수 있습니다 mail, news그리고 nobody. 시스템의 모든 실제 사용자가 내용을 수정할 수 /var/www있다고해도 모든 "프로세스"사용자가 그렇게 할 수 있도록 모든 프로세스를 실행하려는 것은 아닙니다.
Eliah Kagan

1) 가능한 가장 간단한 대답. Apache 또는 Nginx가 폴더 또는 파일을 조작하는 방법에 대해서는 설명하지 않습니다. 애플리케이션 것을, 그들이 당신의 "악성"사용자가 아닌 있도록 Apache 또는 Nginx에가, 서버, 그들은 입력 할 수 없습니다 ls -lah, touch bad또는 다른 명령. 폴더와 파일을 어떻게 조작 할 수 있습니까? 2) 상속. 폴더와 폴더 내의 파일 간 상속은 다루지 않았습니다. 파일 전에 적어도 2 ~ 3 단계가 있습니다 /var, /var/www, /var/www/project. 어떤 사용자 / 그룹 권한이 /var있어야합니까? 어떤 사용자 / 그룹 권한이 /var/www있어야합니까? 등등. 그들은 어떻게 협력합니까?
녹색

15

기본적으로 777의 권한이 있다고해서 스스로 해킹 당할 수는 없지만 누군가가 어디에서나 소지품을 얻는 경우 권한을 에스컬레이션하고 컴퓨터를 완전히 제어하는 ​​데 사용될 수 있습니다. 최악의 부분은 권한이 "7"을 사용한다는 것입니다. 즉, 읽기, 쓰기 및 실행 권한을 의미합니다.

해커가 컴퓨터를 인수하려고한다고 가정 해 봅시다. 웹 브라우저를 사용하여 컴퓨터에 연결하고 http://yourcomputer.example.com:80/. 이미지를 업로드 할 수있는 페이지가 있으면 ".jpg"로 끝나도록 실행 파일의 이름을 바꾸고 서버에 업로드 할 수 있습니다. 이제 그는 웹 브라우저에서 해당 파일을 찾아서 실행합니다. 리눅스는 확장자에 신경 쓰지 않기 때문에 실행 파일이라는 것을 알 수 있습니다. 그것은 그를 많이 얻지 못할 수도 있지만, 전혀 실행되지 않았기 때문에 아파치 사용자로 실행되었음을 알고 있습니다. 그런 다음 아파치의 구성 파일을 편집하여 더 많은 액세스 권한을 부여하는 수정 된 버전을 업로드합니다. 아파치가 / etc / passwd의 내용을 출력하도록하겠습니다. 그런 다음 해당 정보를 사용하여 시스템에 어떤 사용자가 있는지 확인할 수 있습니다. 그런 다음 ssh를 사용하여 연결하고 해당 사용자로 로그인하기 위해 공통 비밀번호를 시도 할 수 있습니다. 그래도 작동하지 않으면 완전한 무차별 대입 공격을 시작합니다. 그가 sudo 액세스 권한을 가진 사용자로 들어 오면,

이제는 가능성이 낮거나 실제 해커가 작동하는 방식이 아니라고 말할 수 있습니다. 사실이지만, 요점은 파일을 chmod 777로 설정하면 해커가 사용할 수있는 보안 허점을 열었지만 적합하다고 생각합니다.

대신 최소 권한 원칙을 따르는 경우 그 구멍이 발생하지 않으며 시스템을 해킹하기가 훨씬 어렵습니다. 일을 제대로하는 것이 더 어려워도 그래도 모든 노력을 기울여야합니다.


"보유"및 "증가"에 +1 개념을 잘 설명합니다.
Kari Kääriäinen

3
jpg로 위장한 파일을 서버에서 어떻게 실행할 수 있는지 설명해 주시겠습니까?
Anurag Peshne
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.