Trong /etc/passwd
tệp của tôi , tôi có thể thấy rằng www-data
người dùng được sử dụng bởi Apache, cũng như tất cả các loại người dùng hệ thống, có /usr/sbin/nologin
hoặc /bin/false
là vỏ đăng nhập của họ. Ví dụ, đây là một lựa chọn các dòng:
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin games:x:5:60:games:/usr/games:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin syslog:x:101:104::/home/syslog:/bin/false whoopsie:x:109:116::/nonexistent:/bin/false mark:x:1000:1000:mark,,,:/home/mark:/bin/bash
Do đó, nếu tôi cố gắng trao đổi với bất kỳ người dùng nào trong số này (điều mà đôi khi tôi muốn làm để kiểm tra sự hiểu biết của tôi về quyền của họ và có lẽ có ít nhất các lý do khác nửa chừng), tôi đã thất bại:
mark@lunchbox:~$ sudo su www-data
This account is currently not available.
mark@lunchbox:~$ sudo su syslog
mark@lunchbox:~$
Tất nhiên, nó không có nhiều bất tiện, bởi vì tôi vẫn có thể khởi chạy một vỏ cho chúng thông qua một phương pháp như thế này:
mark@lunchbox:~$ sudo -u www-data /bin/bash
www-data@lunchbox:~$
Nhưng điều đó chỉ khiến tôi tự hỏi mục đích nào được phục vụ bằng cách từ chối những người dùng này một vỏ đăng nhập. Nhìn quanh internet để tìm lời giải thích, nhiều người cho rằng điều này có liên quan đến bảo mật và mọi người dường như đồng ý rằng việc thay đổi vỏ đăng nhập của những người dùng này theo một cách nào đó là một ý tưởng tồi. Đây là một bộ sưu tập các trích dẫn:
Đặt shell của người dùng Apache thành một thứ gì đó không tương tác thường là cách thực hành bảo mật tốt (thực sự tất cả người dùng dịch vụ không phải đăng nhập tương tác nên đặt vỏ của họ thành thứ gì đó không tương tác).
- https://serverfault.com/a/559315/147556
Shell cho dữ liệu www của người dùng được đặt thành / usr / sbin / nologin và nó được đặt vì một lý do rất chính đáng.
- https://askubfox.com/a/486661/119754
[tài khoản hệ thống] có thể là lỗ hổng bảo mật , đặc biệt nếu chúng có vỏ được kích hoạt:
Xấu
bin:x:1:1:bin:/bin:/bin/sh
Tốt
bin:x:1:1:bin:/bin:/sbin/nologin
- https://unix.stackexchange.com/a/78996/29001
Vì lý do bảo mật, tôi đã tạo một tài khoản người dùng không có vỏ đăng nhập để chạy máy chủ Tomcat:
# groupadd tomcat # useradd -g tomcat -s /usr/sbin/nologin -m -d /home/tomcat tomcat
- http://www.puschitz.com/InstallingTomcat.html
Mặc dù các bài đăng này nằm trong thỏa thuận nhất trí rằng việc không cung cấp cho người dùng hệ thống các vỏ đăng nhập thực sự là tốt cho bảo mật, nhưng không ai trong số họ biện minh cho khiếu nại này và tôi không thể tìm thấy lời giải thích về nó ở bất cứ đâu.
Cuộc tấn công nào chúng ta đang cố gắng tự bảo vệ mình bằng cách không cho những người dùng này đăng nhập thực sự?