Làm thế nào để loại bỏ hoàn toàn hệ thống con người dùng khỏi Linux?


7

Có thể loại bỏ hoàn toàn hệ thống con người dùng khỏi Linux.

Tôi KHÔNG nói về việc ngăn chặn mọi người đăng nhập. Tôi đang nói về việc loại bỏ các phần của hệ thống thậm chí có thể đăng nhập.

Kết quả là một hệ điều hành một khi đã khởi động không bao giờ có thể được truy cập vì không có cách nào để truy cập nó, ngoài các ứng dụng đã chạy trên nó (tức là máy chủ web).

Mục tiêu là hệ thống không thể bị tấn công thông qua bất kỳ cơ chế nào yêu cầu truy cập dòng lệnh cấp độ người dùng, bởi vì không có hệ thống dòng lệnh cấp độ người dùng nào hiện diện.


1
Điều đó có khiến mọi thứ chạy như root, theo ngụ ý của câu trả lời của @ Gravy không?
Andrew Henle

@andrewhenle mục tiêu chính là tạo ra một hệ thống đơn giản là không có cơ chế nào để người dùng chạy các lệnh trên hệ thống và do đó không thể có được quyền truy cập dòng lệnh. Nếu điều này có thể được thực hiện trong khi vẫn duy trì khái niệm người dùng trong hệ thống thì tốt, nhưng điều quan trọng là tôi không nói về việc vô hiệu hóa mọi thứ, nhưng xóa hoàn toàn các phần của hệ thống cho phép đăng nhập, khiến nó không thể bị xóa đăng nhập.
Công tước Dougal

Tôi không chắc làm thế nào bạn có thể loại bỏ hiệu quả các shell như thế nào bash, vì nhiều chức năng phụ thuộc vào chúng. Điều đó làm cho việc ngăn chặn "truy cập dòng lệnh" khá khó khăn.
Andrew Henle

@drewbenn mục tiêu là một hệ thống linux không thể đăng nhập, không phải vì nó được cấu hình đúng để ngăn đăng nhập, thay vào đó không thể đăng nhập vì hoàn toàn không thể đăng nhập vì phần mềm hỗ trợ đăng nhập (và thực thi lệnh) không hiện diện. Vì vậy, tôi tự hỏi những gì cần phải xóa: sshd, shells, đăng nhập, pam, getty? Điều này có đúng không, có gì khác không?
Công tước Dougal

@drew Tôi không thực sự hiểu lý do tại sao bạn cần phải chấp nhận những gì tôi đang cố gắng làm. Yêu cầu của tôi là một hệ thống không có mã để đăng nhập. Với tất cả sự tôn trọng, đó là yêu cầu của tôi là gì, tại sao nó cần sự chấp thuận của bạn để hợp lệ? Điều gì không hợp lệ về yêu cầu của tôi? Bạn không thể đăng nhập vào một hệ thống mà không có mã để làm điều đó - các hệ thống cho phép bạn đăng nhập nhưng không được cấu hình, dễ bị tấn công bởi một số hack không xác định có thể kích hoạt cấu hình đó. Tôi muốn loại bỏ khả năng đó. Cần giải thích gì thêm?
Công tước Dougal

Câu trả lời:


2

Đây là một sự khác biệt thú vị:

Tôi KHÔNG nói về việc ngăn chặn mọi người đăng nhập. Tôi đang nói về việc loại bỏ các phần của hệ thống thậm chí có thể đăng nhập.

Tôi không hoàn toàn chắc chắn có gì khác ngoài sự khác biệt về ngữ nghĩa. Nếu tôi gỡ bỏ /bin/loginthì bạn sẽ không thể đăng nhập (trên thiết bị đầu cuối vật lý) vì tôi đã không thể đăng nhập. Nhưng tôi sẽ không xóa toàn bộ hệ thống con đăng nhập.

Đề nghị của tôi sẽ là để lại càng nhiều càng tốt vì có thể có những phụ thuộc không lường trước được. Để người dùng tại chỗ, để máy chủ web của bạn chạy như một tài khoản khác root. Ngăn chặn đăng nhập tương tác và không tương tác bằng cách sửa đổi hệ thống con PAM. Tùy chọn ngăn chặn sudotruy cập loại theo cách tương tự.

  1. Chuẩn bị một định nghĩa PAM "bị từ chối"

    Tạo /etc/pam.d/deniedchứa hai dòng sau:

    auth requisite pam_deny.so
    session requisite pam_deny.so
    
  2. Ngăn chặn đăng nhập từ thiết bị đầu cuối / màn hình

    Thay thế /etc/pam.d/loginbằng một bản sao của/etc/pam.d/denied

  3. Ngăn chặn đăng nhập mạng với ssh

    Thay thế /etc/pam.d/sshdbằng một bản sao của/etc/pam.d/denied

    Chỉnh sửa /etc/ssh/sshd_configvà đảm bảo rằng UsePam yesđược thiết lập.

  4. Tùy chọn, vô hiệu hóa tại lần thử tại sudo

    Thay thế /etc/pam.d/sudobằng một bản sao của/etc/pam.d/denied

Trên thực tế, thay vì từ chối tất cả các thông tin đăng nhập, có thể tốt hơn là cho phép đăng nhập gốc từ thiết bị đầu cuối / màn hình vật lý và từ chối mọi thứ khác. Điều này cũng có thể được thực hiện thông qua PAM nhưng nằm ngoài phạm vi cụ thể của câu hỏi.


Tôi đang tìm kiếm và loại bỏ hoàn toàn mã cho phép đăng nhập, trong khi vẫn cho phép các ứng dụng máy chủ (như máy chủ web) chạy. Tôi muốn tránh "cấu hình mọi thứ", thay vào đó tôi muốn "xóa mọi thứ". Nếu sshd tồn tại trên hệ thống và nếu người dùng root có thể chạy các lệnh thì mục tiêu đã không được đáp ứng là ngăn người dùng chạy các lệnh trên hệ thống. sshd sẽ cần phải được xóa hoàn toàn.
Công tước Dougal

@Duke, mmm, ok. Bạn có thời gian để kiểm tra tất cả các phụ thuộc lẫn nhau có thể? Tôi không. Do đó, đi cho jugular (PAM) và giết chết điều đó. (Tuy nhiên, đừng xóa các tệp PAM, vì có các bản sao lưu không an toàn.)
roaima

0

Vâng, về mặt lý thuyết bạn có thể Đổi tên / Xóa /bin/loginlệnh.

Không chắc chắn điều đó có ngăn cản single user modehay không. Cũng không chắc chắn nếu bạn đang tìm cách ngăn chặn single user modehay không.

Bạn cũng có thể thực hiện một số điều thú vị với pam.dđiều đó sẽ ngăn tất cả thông tin đăng nhập của người dùng, nhưng điều đó sẽ chỉ ngăn chặn thông tin đăng nhập của người dùng, không phá hủy ý tưởng đăng nhập.

Khi tôi về nhà, nếu tôi nhớ, tôi sẽ quay một máy ảo và cho nó hoạt động. Cũng có thể xóa các /etc/shadowtập tin nhưng điều đó cũng có thể lên tất cả mọi thứ khác.

Lưu ý bên lề: bạn không muốn loại bỏ hoàn toàn ý tưởng của người dùng. Không phải vì không có bất kỳ khả năng đăng nhập nào là một ý tưởng tồi (đó là, nhưng đó không phải là điểm của chủ đề này), mà vì quyền người dùng cần phải tồn tại. Nếu không có người dùng, bạn sẽ buộc phải cấp rwxcho tất cả các tệp trên hệ thống để dịch vụ của bạn chạy, điều này sẽ dẫn đến vấn đề không cần đăng nhập để hack mọi thứ, mọi người có thể truy cập bất cứ thứ gì họ muốn.


Như đã lưu ý trong nhận xét cho @andrewhenle, tôi chủ yếu quan tâm đến việc có một hệ thống không có phần mềm trên đó cho phép người dùng đăng nhập và chạy các lệnh. Tôi không quá quan tâm đến khái niệm người dùng và như bạn chỉ ra, khái niệm người dùng là cần thiết để hệ thống hoạt động. Câu hỏi là, mã nào cho phép người dùng đăng nhập và chạy các lệnh, và làm thế nào để xóa mọi phế liệu của nó.
Công tước Dougal
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.