เมื่อมีการพัฒนาหน้าใน localhost ผมบางครั้งได้รับ "ไม่อนุญาต" chmod -R 777 /var/www
ข้อผิดพลาดที่ฉันสามารถแก้ปัญหาโดยการทำงาน อย่างไรก็ตามผู้คนกำลังบอกฉันว่านี่เป็นความคิดที่ไม่ดีสำหรับเหตุผลด้านความปลอดภัย
ทำไมไม่ควร/var/www
มี chmod 777
เมื่อมีการพัฒนาหน้าใน localhost ผมบางครั้งได้รับ "ไม่อนุญาต" chmod -R 777 /var/www
ข้อผิดพลาดที่ฉันสามารถแก้ปัญหาโดยการทำงาน อย่างไรก็ตามผู้คนกำลังบอกฉันว่านี่เป็นความคิดที่ไม่ดีสำหรับเหตุผลด้านความปลอดภัย
ทำไมไม่ควร/var/www
มี chmod 777
คำตอบ:
777 เป็นการอนุญาตที่ไม่ดีโดยทั่วไปและฉันจะแสดงให้คุณเห็นว่าทำไม
แม้จะมีลักษณะอย่างไรในคาสิโนหรือลาสเวกัส 777 ไม่ได้หมายความว่าแจ็คพอตสำหรับคุณ ค่อนข้างแจ็คพอตสำหรับผู้ที่ต้องการแก้ไขไฟล์ของคุณ 777 (และญาติน่าเกลียด 666) อนุญาตให้สิทธิ์อ่านและเขียน (และในกรณีของ 777 ที่ดำเนินการ) เพื่ออื่น ๆ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการที่สิทธิ์ของแฟ้มทำงานแต่ในระยะสั้นมีสามกลุ่มของสิทธิ์: เจ้าของกลุ่มและอื่น ๆ ด้วยการตั้งค่าการอนุญาตเป็น 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 คุณจะต้องติดกับ 0755 และ 0644 (AKA umask 022
) สำหรับโฟลเดอร์และไฟล์ตามลำดับ สิ่งนี้ช่วยให้คุณในฐานะเจ้าของไฟล์สามารถแก้ไขและจัดการกับไฟล์เหล่านั้นในขณะที่ให้ 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" และอัปโหลดไปยังเซิร์ฟเวอร์ของคุณ ตอนนี้เขาเรียกดูไฟล์ในเว็บเบราว์เซอร์ของเขาและเรียกใช้เพราะลินุกซ์ไม่สนใจเกี่ยวกับส่วนขยายมันเห็นแค่ว่าเป็นไฟล์ปฏิบัติการ ที่อาจไม่ได้รับเขามาก แต่เพราะมันวิ่งเลยเขารู้ว่ามันวิ่งในฐานะผู้ใช้ apache จากนั้นเขาจะอัปโหลดเวอร์ชันที่แก้ไขซึ่งจะแก้ไขไฟล์กำหนดค่าของ Apache ให้เขาเข้าถึงได้มากขึ้น - สมมุติว่า apache จะส่งออกเนื้อหาของ / etc / passwd จากนั้นเขาสามารถใช้ข้อมูลนั้นเพื่อดูว่าผู้ใช้มีอยู่ในระบบ จากนั้นเขาสามารถเชื่อมต่อโดยใช้ ssh และลองใช้รหัสผ่านทั่วไปเพื่อเข้าสู่ระบบในฐานะผู้ใช้เหล่านั้น - หากไม่ได้ผลเขาจะก้าวเข้าสู่การโจมตีแบบเต็มกำลัง หากเขาเข้ามาในฐานะผู้ใช้ที่มีสิทธิ์เข้าถึง sudo
ตอนนี้คุณอาจบอกว่าไม่น่าจะเป็นไปได้หรือว่าไม่ใช่วิธีที่แฮ็กเกอร์ตัวจริงจะทำงาน นั่นเป็นเรื่องจริง แต่ประเด็นก็คือโดยการตั้งค่าไฟล์ให้เป็น chmod 777 คุณได้เปิดช่องโหว่ที่แฮ็กเกอร์สามารถใช้งานได้ แต่เขาก็เห็นว่าเหมาะสม
หากคุณทำตามหลักการของสิทธิพิเศษอย่างน้อยที่สุดแล้วรูนั้นจะไม่เกิดขึ้นและระบบของคุณก็ยากที่จะแฮ็ก แม้ว่ามันจะยากกว่าในการทำสิ่งต่าง ๆ อย่างถูกต้อง แต่คุณก็ควรทำทุกวิถีทาง