로컬 호스트에서 페이지를 개발할 때 때때로을 실행하여 해결할 수있는 "Permission denied"오류가 발생합니다 chmod -R 777 /var/www
. 그러나 사람들은 이것이 보안상의 이유로 나쁜 생각이라고 나에게 말하고 있습니다.
/var/www
chmod가 777 이 아닌 이유는 무엇 입니까?
로컬 호스트에서 페이지를 개발할 때 때때로을 실행하여 해결할 수있는 "Permission denied"오류가 발생합니다 chmod -R 777 /var/www
. 그러나 사람들은 이것이 보안상의 이유로 나쁜 생각이라고 나에게 말하고 있습니다.
/var/www
chmod가 777 이 아닌 이유는 무엇 입니까?
답변:
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에 최소한의 액세스 권한 만 부여 할 수 있습니다.
/etc/passwd
와 같은 사용자를 볼 수 있습니다 mail
, news
그리고 nobody
. 시스템의 모든 실제 사용자가 내용을 수정할 수 /var/www
있다고해도 모든 "프로세스"사용자가 그렇게 할 수 있도록 모든 프로세스를 실행하려는 것은 아닙니다.
ls -lah
, touch bad
또는 다른 명령. 폴더와 파일을 어떻게 조작 할 수 있습니까? 2) 상속. 폴더와 폴더 내의 파일 간 상속은 다루지 않았습니다. 파일 전에 적어도 2 ~ 3 단계가 있습니다 /var
, /var/www
, /var/www/project
. 어떤 사용자 / 그룹 권한이 /var
있어야합니까? 어떤 사용자 / 그룹 권한이 /var/www
있어야합니까? 등등. 그들은 어떻게 협력합니까?
기본적으로 777의 권한이 있다고해서 스스로 해킹 당할 수는 없지만 누군가가 어디에서나 소지품을 얻는 경우 권한을 에스컬레이션하고 컴퓨터를 완전히 제어하는 데 사용될 수 있습니다. 최악의 부분은 권한이 "7"을 사용한다는 것입니다. 즉, 읽기, 쓰기 및 실행 권한을 의미합니다.
해커가 컴퓨터를 인수하려고한다고 가정 해 봅시다. 웹 브라우저를 사용하여 컴퓨터에 연결하고 http://yourcomputer.example.com:80/. 이미지를 업로드 할 수있는 페이지가 있으면 ".jpg"로 끝나도록 실행 파일의 이름을 바꾸고 서버에 업로드 할 수 있습니다. 이제 그는 웹 브라우저에서 해당 파일을 찾아서 실행합니다. 리눅스는 확장자에 신경 쓰지 않기 때문에 실행 파일이라는 것을 알 수 있습니다. 그것은 그를 많이 얻지 못할 수도 있지만, 전혀 실행되지 않았기 때문에 아파치 사용자로 실행되었음을 알고 있습니다. 그런 다음 아파치의 구성 파일을 편집하여 더 많은 액세스 권한을 부여하는 수정 된 버전을 업로드합니다. 아파치가 / etc / passwd의 내용을 출력하도록하겠습니다. 그런 다음 해당 정보를 사용하여 시스템에 어떤 사용자가 있는지 확인할 수 있습니다. 그런 다음 ssh를 사용하여 연결하고 해당 사용자로 로그인하기 위해 공통 비밀번호를 시도 할 수 있습니다. 그래도 작동하지 않으면 완전한 무차별 대입 공격을 시작합니다. 그가 sudo 액세스 권한을 가진 사용자로 들어 오면,
이제는 가능성이 낮거나 실제 해커가 작동하는 방식이 아니라고 말할 수 있습니다. 사실이지만, 요점은 파일을 chmod 777로 설정하면 해커가 사용할 수있는 보안 허점을 열었지만 적합하다고 생각합니다.
대신 최소 권한 원칙을 따르는 경우 그 구멍이 발생하지 않으며 시스템을 해킹하기가 훨씬 어렵습니다. 일을 제대로하는 것이 더 어려워도 그래도 모든 노력을 기울여야합니다.