Tại sao quyền của tệp cho / etc / bóng được đặt thành 600?


25

Các quyền của /etc/shadow600, có nghĩa là nó không thể đọc được cho bất kỳ ai ngoại trừ root.

Tuy nhiên, vì tất cả mật khẩu bên trong nó không được lưu trữ dưới dạng văn bản rõ ràng mà là băm (có nghĩa là không thể tính mật khẩu gốc từ hàm băm), tại sao mọi người không thể đọc nó?


Bạn có chắc các điều khoản cho /etc/shadow600?
edwinksl

4
Nếu mật khẩu của tài khoản Stackoverflow của bạn bị băm, bạn có sẵn sàng hiển thị mật khẩu băm của mình cho người khác không?
Jeon

5
@ByteCommander. Đôi khi tôi muốn một cách để nâng cấp các chỉnh sửa.
TRiG

Câu trả lời:


60

Để ngăn chặn các cuộc tấn công vũ phu ngoại tuyến.

Mặc dù bạn không thể đảo ngược hàm băm, bạn vẫn có thể thử băm mọi mật khẩu có thể cho đến khi bạn tìm thấy kết quả khớp và bạn có thể thực hiện hàng triệu lần thử mỗi giây với phần cứng tốt và quyền truy cập vào tệp.

Nếu tệp có 644quyền, thì bất kỳ ai đăng nhập vào hệ thống của bạn, ngay cả trong phiên khách, đều có thể sao chép tệp này khỏi máy tính của bạn (cho dù là một thanh USB hoặc từ xa thông qua scp) và thực hiện một cuộc tấn công vũ phu ngoại tuyến , mà không để lại bất kỳ bằng chứng nào về điều này trên máy tính của bạn .


Lưu ý rằng các quyền trên Ubuntu thực sự 640, không phải 600:

$ ls -l /etc/shadow
-rw-r----- 1 root shadow 1239 Jun 25 04:35 /etc/shadow

Mặc dù vậy, điều này không quan trọng lắm, vì vẫn không có quyền cho người khác và theo mặc định, không có ai trong shadownhóm.


Ban đầu, băm được lưu trữ trong /etc/passwd(đó là lý do tại sao nó được gọi là passwd), như khi Linux được tạo ra, việc bẻ khóa, ngay cả các loại yếu được sử dụng trước đó, thực tế là không thể. Cuối cùng, mặc dù, sức mạnh xử lý đã tiến đến mức bẻ khóa một hàm băm, ít nhất là mật khẩu tương đối yếu, trở nên khả thi.

Thay đổi các điều khoản của /etc/passwdđể 640hoặc 600sẽ không làm việc, vì có nhiều lý do chính đáng để có thể đọc /etc/passwdnhư một người dùng bình thường (chuyển đổi UID để tên người dùng, nhận được tên, số điện thoại đầy đủ của người dùng, vv), do đó băm đã được chuyển đến /etc/shadow, đã được cấp 640quyền. Một xở vị trí của lĩnh vực băm mật khẩu cho người dùng trong /etc/passwdđược sử dụng để chỉ ra rằng băm cho người dùng đó được lưu trữ trong /etc/shadowđể thay thế.


1
Cuộc gọi tốt về việc sao chép các tập tin!
Rinzwind

1
và tôi không cần đại diện ;-) chỉnh sửa: hmm anh ấy đặt nó trên máy của tôi: P xin lỗi: D edit2 và bây giờ nó lại hoạt động trở lại. eh: D
Rinzwind

6
Lần cuối tôi kiểm tra, bạn có thể đặt lại mật khẩu đã băm vào / etc / passwd và xóa dòng khỏi / etc / bóng và hy vọng có thể đăng nhập. / Etc / bóng tồn tại để có thể đặt thành 600 vì lý do đã cho trong câu trả lời này
Joshua

8
Điều đáng chú ý là các quyền cho / etc / passwd là 644. Tôi tin rằng trong lịch sử, các băm mật khẩu được sử dụng để lưu trữ ở đây. Tuy nhiên, việc thay đổi tệp này thành 640 sẽ gây ra tất cả các loại sự cố tương thích, vì vậy thay vào đó, băm mật khẩu được chuyển sang bóng và bị xóa khỏi passwd - điều này cho phép các thông tin khác trong mật khẩu có thể đọc được trên thế giới trong khi băm mật khẩu được giữ bí mật tập tin khác nhau.
Rodney

4
@Rodney là một người lớn lên trên BSD 4.3, bạn đã đúng. Băm được lưu trữ trong / etc / passwd. Quay trở lại khi Vax 11/780 là một công nghệ tiên tiến, một cuộc tấn công vũ phu vào mật khẩu trong tệp được coi là không thể. Có lẽ quan trọng hơn, Internet [Arpanet] là một dòng nước nhỏ buồn ngủ và những thứ như vậy hầu như không được xem xét; không có ssh- chỉ rlogin / telnet. Giữ tệp mật khẩu 644 có nghĩa là các tiện ích như lskhông cần phải được thiết lập gốc để dịch từ uid sang tên.
Mike S

13

Trên thực tế, / etc / bóng được tạo để cho phép di chuyển khỏi danh sách tên người dùng và mật khẩu có thể đọc được.

Đợi ở đó, đây sẽ là một chút của một bài học lịch sử, trước khi chúng ta đi đến câu trả lời thực tế. Nếu bạn không quan tâm đến lịch sử, chỉ cần cuộn xuống một chút.

Ngày xưa, các HĐH giống Unix, bao gồm cả Linux, nói chung tất cả đều giữ mật khẩu trong / etc / passwd. Tập tin đó có thể đọc được trên thế giới và vẫn còn, bởi vì nó chứa thông tin cho phép ánh xạ, ví dụ giữa ID người dùng số và tên người dùng. Thông tin đó rất hữu ích ngay cả với người dùng thông thường cho các mục đích hoàn toàn hợp pháp, do đó, có thể đọc được thế giới tệp có ích cho khả năng sử dụng.

Ngay cả trước đó, mọi người nhận ra rằng có mật khẩu bằng văn bản đơn giản trong một tệp ở một vị trí nổi tiếng mà bất kỳ ai có thể đăng nhập đều có thể đọc tự do là một ý tưởng tồi. Vì vậy, mật khẩu đã được băm, theo một nghĩa nào đó. Đó là cơ chế băm mật khẩu "mật mã" cũ, gần như không bao giờ được sử dụng trên các hệ thống hiện đại, nhưng thường được hỗ trợ cho các mục đích cũ.

Hãy xem / etc / passwd trên hệ thống của bạn. Xem lĩnh vực thứ hai, mà nói xở khắp mọi nơi? Nó được sử dụng để giữ mật khẩu băm cho tài khoản được đề cập.

Vấn đề là mọi người có thể tải xuống / etc / passwd hoặc thậm chí không tải xuống và làm việc để phá mật khẩu. Đây không phải là một vấn đề lớn trong khi máy tính không mạnh lắm (Clifford Stoll, trong The Cuckoo's Egg , như tôi nhớ, đã đến lúc băm một mật khẩu trên hệ thống lớp PC của IBM vào giữa những năm 1980 khoảng một giây ), nhưng nó đã trở thành một vấn đề khi sức mạnh xử lý tăng lên. Tại một số điểm, với một danh sách từ tốt, việc bẻ khóa những mật khẩu đó trở nên quá dễ dàng. Vì lý do kỹ thuật, lược đồ này cũng không thể hỗ trợ mật khẩu dài hơn tám byte.

Hai điều đã được thực hiện để giải quyết điều này:

  • Di chuyển đến các hàm băm mạnh hơn. Các loại tiền điện tử cũ () đã tồn tại lâu hơn cuộc sống hữu ích của nó, và các phương án hiện đại hơn đã được nghĩ ra, cả hai đều được chứng minh trong tương lai và mạnh mẽ hơn về mặt tính toán.
  • Di chuyển mật khẩu băm vào một tệp mà không ai có thể đọc được. Bằng cách này, ngay cả khi chức năng băm mật khẩu hóa ra yếu hơn mong đợi hoặc nếu ai đó có mật khẩu yếu để bắt đầu, có một trở ngại khác cho kẻ tấn công để có quyền truy cập vào các giá trị băm bắt đầu. Nó không còn miễn phí cho tất cả.

Tập tin đó là / etc / bóng.

Phần mềm hoạt động với / etc / Shadow thường rất nhỏ, tập trung cao độ và có xu hướng nhận được sự xem xét kỹ lưỡng hơn trong các đánh giá vì có khả năng xảy ra sự cố. Nó cũng chạy với các quyền đặc biệt, cho phép nó đọc và sửa đổi / etc / bóng, trong khi vẫn khiến người dùng bình thường không thể xem tệp đó.

Vì vậy, bạn có nó: Các quyền trên / etc / bóng là hạn chế (mặc dù, như đã chỉ ra, không hoàn toàn hạn chế như bạn nêu) vì toàn bộ mục đích của tệp đó là để hạn chế quyền truy cập vào dữ liệu nhạy cảm.

Băm mật khẩu được cho là mạnh, nhưng nếu mật khẩu của bạn nằm trong Top 500 Mật khẩu trên danh sách Internet , bất kỳ ai có quyền truy cập vào hàm băm vẫn có thể tìm thấy mật khẩu một cách nhanh chóng. Bảo vệ hàm băm ngăn chặn cuộc tấn công đơn giản đó và nâng cao khả năng tấn công thành công từ việc nhìn trộm đơn giản đến yêu cầu một người phải là quản trị viên hệ thống trên máy chủ hoặc trước tiên phải trải qua một cuộc tấn công leo thang đặc quyền. Đặc biệt trên một hệ thống đa người dùng quản lý một cách chính xác, cả hai cách đó đáng kể khó khăn hơn chỉ nhìn vào một tập tin trên thế giới có thể đọc được.


tôi thực sự thích cách bạn mô tả mọi thứ :) (y)
Shubhanshu Vishwakarma

Thuật ngữ / từ nguyên: /etc/shadowkhông giữ "mật khẩu bóng" (vì đó không phải là một thứ). Toàn bộ tập tin là một cái bóng của /etc/passwd. Xem cách thuật ngữ được sử dụng trong Linux Shadow Password HOWTO : Tại sao lại tạo bóng cho tệp passwd của bạn? . Không giống như một số cách sử dụng khác của thuật ngữ "Shadow" trong điện toán, tuy nhiên, đây không phải là bản sao bóng tối (như phủ bóng mã BIOS vào RAM thay vì chạy từ ROM). Trường trong / etc / passwd là một trình giữ chỗ, chứa một ký tự đặc biệt có nghĩa là "hàm băm mật khẩu thực nằm trong / etc / bóng".
Peter Cordes

Lịch sử tốt nhưng 1 giây. mỗi mật khẩu hầu như không giới hạn ngay cả trong những năm 1980, không phải khi mật khẩu hàng đầu được sử dụng bởi hơn 1% số người.
Warren Dew

1
@WarrenDew Không chắc chắn nếu bạn đang đưa ra một tuyên bố thực tế, hoặc ý kiến. crypt () có muối 12 bit và đầu ra 12 + 64 bit cho mật khẩu tám byte (sau đó thường được mã hóa base64). Đối với mật khẩu thông thường, vâng, bạn có thể có thể tấn công chúng bằng brute force, nhưng nó đã không mất rằng nhiều mật khẩu để làm nứt bởi brute force không khả thi nếu mỗi kiểm tra mật khẩu mất một giây. Việc tính toán trước một bảng muối cho một mật khẩu duy nhất sẽ mất theo thứ tự một giờ với tốc độ một mã hóa mỗi giây, cộng với việc bạn phải đối mặt với dung lượng lưu trữ hạn chế (40-80 MB là rất nhiều trong những ngày đó).
một CVn

@PeterCordes Điểm tốt. Tôi đang xóa đoạn văn đó vì nó thực sự không liên quan đến việc trả lời câu hỏi của OP.
một CVn

10

Tại sao quyền cho tập tin / etc / Shadow được đặt thành 600?

Ai nói với bạn rằng?

$ls -l /etc/shadow
-rw-r----- 1 root shadow 1407 mei 18 10:05 /etc/shadow
  • nó là 640

Câu trả lời đơn giản: quyền trong Linux được coi trọng. Không có lý do gì để "người khác" làm bất cứ điều gì với /etc/shadow. Và không có lý do gì để nhóm "cái bóng" viết cho nó. Và thực hiện là ra khỏi trật tự.

Tuy nhiên, vì tất cả mật khẩu bên trong nó không được lưu trữ dưới dạng văn bản rõ ràng mà là băm (có nghĩa là không thể tính mật khẩu gốc từ hàm băm), tại sao mọi người không thể đọc nó?

Bởi vì không có một lý do duy nhất để làm như vậy.

Băm là một chiều. Cho phép ai đó truy cập đọc giúp anh ta có thể sử dụng tập lệnh để lạm dụng cách này: chỉ liệt kê bất kỳ từ nào bạn có thể tưởng tượng và tạo ra hàm băm. Tại một số điểm, nó có thể khớp với mật khẩu. Có thể mất một lúc mặc dù quá.

Đây câu trả lời thú vị và có một số ước tính trên brute buộc.


640 dành cho người dùng bình thường ?? người dùng nhóm có thể đọc tập tin bóng ??
Shubhanshu Vishwakarma

Lấy làm tiếc? Tệp là 640. Vì vậy, đọc, viết cho người dùng "root" và đọc cho nhóm "bóng". "Bóng" là một nhóm đặc quyền được tạo cho mục đích cụ thể này.
Rinzwind

2

Bối cảnh quan trọng: /etc/shadowtồn tại chỉ với mục đích giữ băm mật khẩu. Trong những ngày đầu của Unix, băm mật khẩu đã được lưu trữ trong /etc/passwd. Khi máy tính trở nên mạnh hơn, các kết nối mạng bền bỉ hơn và bảo mật khai thác tinh vi hơn, mọi người nhận ra rằng việc giữ mật khẩu băm có thể đọc được là yêu cầu rắc rối. (Tôi sẽ không nêu chi tiết khai thác; đã có đủ câu trả lời tốt về điều đó rồi.)

Nhưng /etc/passwdkhông thể được bảo vệ đọc: Nó được sử dụng bởi tất cả các loại chương trình để ánh xạ id người dùng số sang tên người dùng và để tìm thư mục gốc, shell mặc định, tên đầy đủ của người dùng (và số văn phòng, v.v. - kiểm tra man finger) . Vì vậy, phần nhạy cảm, mật khẩu băm, đã được chuyển đến /etc/shadow, và phần còn lại vẫn như cũ. Đó là lý do tại sao /etc/passwd, bỏ qua tên, chứa mọi thứ trừ mật khẩu (băm).


cảm ơn bạn đã trả lời câu hỏi của tôi, bây giờ tôi đã có một ý tưởng hoàn chỉnh về tập tin / etc / passwd và / etc / Shadow.
Shubhanshu Vishwakarma
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.