Mật khẩu sudo quan trọng như thế nào?


25

Tôi biết rằng mật khẩu sudo bảo vệ máy tính của tôi khỏi bị tấn công cục bộ bởi ai đó có quyền truy cập vật lý vào nó ( chỉnh sửa: thực tế, nó không ). Mật khẩu của tôi đủ mạnh cho mục đích đó, nhưng tôi biết rằng nó không đủ mạnh nếu ai đó có thể vũ phu từ xa.

Bất cứ ai cũng có thể truy cập máy tính của tôi ở chế độ root bằng mật khẩu sudo của tôi mà không có quyền truy cập vật lý vào máy tính, trên bản cài đặt máy tính để bàn Ubuntu tiêu chuẩn?

  1. Nếu bạn có quyền truy cập mạng, chắc chắn là (Câu trả lời ngắn)
  2. Nếu bạn không chú ý đầy đủ đến bảo mật, (Câu trả lời dài)
  3. Nếu bạn có "ssh" đang chạy và không có 2FA , ( nhận xét và câu trả lời)
  4. Người ta có thể truy cập máy tính của bạn dưới quyền root mà không cần mật khẩu sudo / user

nghĩa đen là "bất cứ ai", bao gồm cả tôi, hoặc ví dụ, một số người duy trì ppa mà tôi tin tưởng, bất kỳ ai khác.
mxdsp

1
họ có thể truy cập thông qua SSH và sudo để root.
Aizuddin Zali

1
chính xác. để làm cứng điều này, bạn có thể sử dụng 2FA. Thực hiện theo hướng dẫn
Aizuddin Zali

1
sau đó bạn được lưu từ cuộc tấn công SSH. Có rất nhiều kỹ thuật hack mọi người có thể sử dụng.
Aizuddin Zali

1
Đơn giản là không có thứ gọi là "mật khẩu sudo".
hobbs

Câu trả lời:


34

Tôi biết rằng mật khẩu sudo bảo vệ máy tính của tôi khỏi bị tấn công cục bộ bởi ai đó có quyền truy cập vật lý vào nó.

Tôi không muốn làm bạn sợ quá nhiều, nhưng nếu ai đó có quyền truy cập vật lý, bạn đã trao quyền truy cập cho họ bất kể mật khẩu của bạn mạnh đến mức nào. Sẽ phải mất 1 lần khởi động lại bởi ai đó để ai đó có thể thay đổi mật khẩu gốc của bạn (có thể được thực hiện từ "giải cứu grub" mà không cần phải cung cấp mật khẩu hiện tại của bạn). Nhân tiện: phương pháp này được coi là hợp lệ và là một tính năng và rủi ro bảo mật được chấp nhận (nếu không bạn sẽ không bao giờ có thể sửa hệ thống của mình trong trường hợp mật khẩu bị xâm phạm).

nhưng tôi biết rằng nó không đủ mạnh nếu ai đó có thể vũ phu từ xa.

Ở đây có một thứ khác đang diễn ra: ROUTER phải đủ thông minh để khóa truy cập từ bên ngoài nếu đó là một yêu cầu lặp đi lặp lại yêu cầu thông tin tương tự trong một khoảng thời gian ngắn. Về cơ bản những gì bạn có ở đây là một cuộc tấn công DOS (hoặc DDOS nếu hơn 2 máy tính tấn công bạn). Một bộ định tuyến sẽ hủy kết nối đó và thực thi một khoảng thời gian chờ đợi trước khi chấp nhận các yêu cầu mới từ kết nối đó.

Bất cứ ai cũng có thể truy cập máy tính của tôi ở chế độ root bằng mật khẩu sudo của tôi mà không có quyền truy cập vật lý vào máy tính, trên bản cài đặt máy tính để bàn Ubuntu tiêu chuẩn?

Đầu tiên họ cần kết nối, sau đó cung cấp mật khẩu sudo. Chế độ "root" bị vô hiệu hóa và bạn không thể đăng nhập trực tiếp vào dấu nhắc "#".

Lưu ý rằng có thể lạm dụng một dịch vụ. Nếu bạn có "ssh" đang chạy trên máy đó và họ có thể "ssh" vào hệ thống của bạn và lấy tên người dùng và mật khẩu của bạn cho người dùng đó (và vì đó là người dùng quản trị viên, mật khẩu sudo của bạn cũng vậy), họ có thể truy cập vào máy của bạn và làm hỏng nó Nhân tiện: nếu họ làm như vậy thì họ phải có kiến ​​thức về hệ thống của bạn trước (như mật khẩu của bạn).

Nhưng sau đó, có một vấn đề với điều đó (và bất kỳ phương pháp nào khác): làm thế nào họ lấy được mật khẩu của bạn? Họ KHÔNG thể lấy nó từ chính hệ thống của bạn. Và nói chung đoán không đáng để gặp rắc rối. Nếu nó được thiết kế xã hội ... thì vấn đề của bạn là ở đó, không phải với mô hình bảo mật của hệ thống của bạn, Ubuntu hay Linux nói chung.

Miễn là mật khẩu sudo của bạn là của bạn, bạn sẽ / sẽ ổn. Và bạn sẽ còn tuyệt vời hơn nếu đó là một mật khẩu mạnh (có thể dễ nhớ cho bạn nhưng không thể đoán được bởi người khác). Một ví dụ tôi đã sử dụng trước đây khi thảo luận về điều này: Nếu con chó của bạn có tên là "Abwegwfkwefkwe" sử dụng "Abwegwfkwefkwe" làm mật khẩu là BAD mặc dù nó có vẻ tốt (vì ai đó có thể hỏi bạn: 'tên con chó của bạn là gì' và chúng thử đoán miễn phí). Nếu bạn không có liên quan đến "Abwegwfkwefkwe" thì đó là một mật khẩu tốt.

Lời khuyên tốt nhất tôi có thể đưa ra:

  • không nhập mật khẩu quản trị viên của bạn khi được yêu cầu trừ khi bạn biết rằng nó sẽ được yêu cầu. Nếu bạn mở trình duyệt và được cung cấp một cửa sổ bật lên trông giống như "yêu cầu mật khẩu tài khoản quản trị viên" của chúng tôi ... hãy dừng lại ... và suy nghĩ trước.

  • không để hệ thống của bạn không giám sát khi thời gian ân hạn "sudo" được kích hoạt. sudo --reset-timestampxóa thời gian gia hạn hiện tại và sẽ yêu cầu nhập lại mật khẩu khi bạn sử dụng "sudo" tiếp theo. Khóa màn hình của bạn khi bạn đi AFK.

  • không cài đặt dịch vụ hoặc phần mềm cho niềm vui của nó. Nếu bạn không cần sshkhông cài đặt ssh, nếu bạn không sử dụng máy chủ web thì không cài đặt máy chủ web. Và có một cái nhìn vào các dịch vụ hiện đang chạy. Nếu bạn không sử dụng BT trên máy tính xách tay, hãy tắt nó. Nếu bạn không sử dụng webcam, hãy tắt nó (nếu hoạt động). Xóa phần mềm bạn không sử dụng nữa.

  • và đối với người hoang tưởng thực sự (và vâng, Paranoid Panda tôi đang nhìn bạn): thay đổi mật khẩu thường xuyên. Bạn thậm chí có thể cài đặt các trình săn rootkit để kiểm tra truy cập không phù hợp.

  • sao lưu dữ liệu quan trọng của bạn vào một cái gì đó mà bạn giữ ngoại tuyến. Vì vậy, ngay cả khi bạn tìm thấy ai đó trên hệ thống của mình, bạn có thể định dạng nó và bắt đầu lại với bản cài đặt mới và dữ liệu của bạn được khôi phục.


2
Bạn có thể viết tắt sudo --reset-timestampđể sudo -k, hoặc sudo -Kcho sự hoang tưởng (chỉ cần thiết nếu kẻ tấn công có thể thiết lập thời gian hệ thống các giá trị tùy ý, lúc này bạn đã có thể đã bị mất).
Kevin

Jups. Tôi đã sử dụng phiên bản dài để rõ ràng những gì nó làm. "-K" thực sự làm như vậy.
Rinzwind

1
@mxdsp: Mã hóa có thể ngăn mọi người đọc nội dung của các phân vùng được mã hóa, nếu cụm mật khẩu đủ mạnh, nhưng có thể lấy khóa mã hóa ra khỏi máy tính đang chạy hoặc tắt gần đây. Crypto cũng là một lĩnh vực chuyển động rất nhanh và bạn sẽ cần theo kịp những phát triển mới, kẻo tiền mã hóa của bạn trở nên lỗi thời và dễ bị phá vỡ.
Kevin

1
@mxdsp có. Đối với một: bạn có thể định dạng một đĩa và khi dữ liệu không còn nữa ... bạn là người gặp vấn đề.
Rinzwind

1
Phần đầu tiên mặc nhiên cho rằng không có mã hóa toàn bộ đĩa.
otus

6

Vâng, họ có thể.

Có nhiều cách để làm như vậy, và brute-buộc sudomật khẩu có lẽ không phải là cách đầu tiên.

Trước hết, sudomật khẩu là mật khẩu người dùng của bạn; Vì vậy, thực sự những gì họ cần nhận là mật khẩu của bạn .

Thứ hai, bẻ khóa mật khẩu của người dùng bằng cách sử dụng vũ lực để truy cập hệ thống có lẽ là biện pháp cuối cùng.

Có nhiều cách thanh lịch hơn (nhưng chủ yếu là hiệu quả hơn) để xâm nhập vào hệ thống khác.

Thông thường, kẻ tấn công sẽ vừa đi vừa cố gắng khai thác các lỗ hổng phổ biến nhất (được biết đến nhiều nhất có thể là lấy vỏ người dùng bằng bất kỳ phương tiện nào và khai thác ShellShock để lấy vỏ gốc) hoặc thực hiện công việc tốt nhất theo các dòng:

  • Quét các cổng mở trên hệ thống để lấy thông tin, chẳng hạn như:
    • Phiên bản hệ điều hành
    • Chạy phiên bản dịch vụ
  • Khai thác lỗi hệ điều hành đã biết hoặc chạy các dịch vụ (lỗi tràn bộ đệm, ...) để có được ít nhất một vỏ người dùng và sau đó thử lấy một vỏ gốc (một lần nữa, có thể khai thác ShellShock)

Brute-buộc sudomật khẩu / người dùng có thể là một nỗ lực trong trường hợp không thể lấy được vỏ gốc, nhưng ví dụ, việc khai thác một dịch vụ chạy như root sẽ không yêu cầu kẻ tấn công buộc sudomật khẩu / người dùng.


1
Cảm ơn bạn. Tóm lại, điều đó có nghĩa là kẻ tấn công không cần mật khẩu sudo để có quyền truy cập root?
mxdsp

2
@mxdsp Chính xác. Nói như vậy: nếu kẻ tấn công quản lý để có được vỏ người dùng sudoer bằng bất kỳ phương tiện nào (ví dụ: khám phá chương trình chạy của người dùng sudoer), anh ta có thể sử dụng các khai thác đã biết (trong câu trả lời của tôi, tôi đã đề cập đến một kẻ khét tiếng nhất) để lấy vỏ gốc, bỏ qua sự cần thiết của người dùng / sudomật khẩu. Thậm chí tốt hơn, nếu anh ta quản lý để khai thác một dịch vụ chạy bằng root, anh ta sẽ trực tiếp root.
kos

1
@mxdsp Bây giờ chúng tôi khá khái quát, nhưng hãy xem video này để hiểu ví dụ như cách người dùng không có sudoquyền (= ~ người dùng mà kẻ tấn công đã đăng nhập nhưng kẻ tấn công không biết mật khẩu) có thể lấy quyền root shell chỉ bằng cách khai thác các lỗi đã biết (trong trường hợp này là ShellShock khét tiếng).
kos

1
@mxdsp Ở một khía cạnh không phải tôi không có nghĩa là người dùng sudoers, chỉ là người dùng. Điều đó không cần thiết, tôi chỉ nghĩ quá nhiều thứ cùng một lúc.
kos

3
  1. Nếu tôi đã học được bất cứ điều gì trong vài năm qua về bảo mật, thì có một điều: Không có gì là không thể .

  2. Miễn là bạn có quyền truy cập vào một mạng, chắc chắn. Mỗi dịch vụ chạy trên hệ thống của bạn có thể được truy cập qua mạng đều dễ bị tổn thương về mặt lý thuyết và do đó là một điểm yếu tiềm ẩn.

Và do đó, đối với một kẻ tấn công có đủ ý tưởng thì có thể. Bạn có thể làm cho hệ thống của mình an toàn nhất có thể, nhưng bạn không thể an toàn 100% bao giờ.

Do đó, điều quan trọng là phải đánh giá những gì có thể với nỗ lực kỹ thuật chính đáng và những gì bảo vệ bạn tốt đến mức chính bạn không thể làm việc nữa.


Tôi có quyền truy cập mạng. Có thể cụ thể hơn về khả năng loại tấn công đó có thể xảy ra như thế nào?
mxdsp

1
sử dụng xác thực hai yếu tố. Bạn cần chỉnh sửa PAM.D, v.v.
Aizuddin Zali

@Arronical liên kết là từ diễn đàn này là tốt và hướng dẫn rất tốt là tốt.
Aizuddin Zali

@Arronical tôi đã đặt nó trong bình luận câu hỏi. Hướng dẫn này
Aizuddin Zali

Xin lỗi @AizuddinZali Tôi đã không làm mới trang!
Arronical

2

Tôi biết rằng mật khẩu sudo bảo vệ máy tính của tôi khỏi bị tấn công cục bộ bởi ai đó có quyền truy cập vật lý vào nó (chỉnh sửa: thực tế, nó không). Mật khẩu của tôi đủ mạnh cho mục đích đó, nhưng tôi biết rằng nó không đủ mạnh nếu ai đó có thể vũ phu từ xa. Bất cứ ai cũng có thể truy cập máy tính của tôi ở chế độ root bằng mật khẩu sudo của tôi mà không có quyền truy cập vật lý vào máy tính, trên bản cài đặt máy tính để bàn Ubuntu tiêu chuẩn?

mật khẩu sudo không chỉ để bảo vệ cục bộ, mục đích của nó là thêm một lớp bảo mật bổ sung cho việc sử dụng đặc quyền gốc. Thảo luận tốt có thể được tìm thấy ở đây /superuser//a/771523/467316

Mật khẩu của bạn có thể không mạnh như bạn nghĩ. Ngay bây giờ tôi đang bẻ khóa 20-40% số băm Active Directory của khách hàng của tôi cho những người tôi đã thấy trước đây, những người có quy tắc mật khẩu xấu đang bị bẻ khóa 70%. Tôi đề nghị 16 ký tự, mật khẩu phức tạp. card đồ họa oclHashcat và Radeon có thể gây sát thương rất lớn. Thêm vào tất cả các bãi bỏ mật khẩu từ mọi vi phạm trong 5 năm qua và bạn có xu hướng lấy một từ điển tốt để làm việc.

Nếu bạn đang sử dụng SSH, hãy thực hiện một số điều chỉnh trong sshd_config

sudo nano /etc/ssh/sshd_config

PHẢI ra khỏi cổng (cái cuối cùng để vô hiệu hóa máy chủ ftp nếu bạn không sử dụng nó).

Protocol 2
X11Forwarding no
PermitEmptyPasswords no
MaxAuthTries 5
#Subsystem sftp /usr/lib/openssh/sftp-server

Lưu nó, khởi động lại ssh

sudo service ssh restart

Sử dụng mã hóa khóa công khai Bắt đầu bằng cách tạo cho mình một khóa tại máy từ xa của bạn (sử dụng puttygen hoặc bất kỳ hương vị nào mà hệ điều hành của bạn có sẵn). Sao chép khóa chung vào máy Ubuntu của bạn dưới người dùng mà bạn muốn đăng nhập dưới dạng tệp ủy quyền (có thể bạn sẽ phải tạo nó)

sudo nano /home/yourdumbusername/.ssh/authorized_keys

sao chép khóa công khai ở định dạng này

ssh-rsa 23r0jfjlawjf342rffjfa89pwfj8ewfew98pfrfj8428pfwa9fupfwfcajwfpawf8rfapfj9pf892jpfjpwafj8a where-ever-you-have-your-private-key-for-your-own-notes

lưu nó và thiết lập sshd_config của bạn để cho phép đăng nhập khóa công khai

sudo nano /etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys

lưu và khởi động lại ssh

sudo service ssh restart

Hãy thử SSH đến máy chủ Ubuntu của bạn từ máy tính có khóa riêng bằng mã hóa khóa chung. Nếu mọi việc suôn sẻ, hãy quay lại máy chủ Ubuntu và vô hiệu hóa xác thực mật khẩu.

sudo nano /etc/ssh/sshd_config

PasswordAuthentication no

Lưu và khởi động lại ssh

sudo service ssh restart

Hãy thử sshing từ máy tính khóa riêng một lần nữa để xác nhận.

Bạn muốn thêm nhiều hơn? thiết lập tài khoản không có đặc quyền, biến PermitRootLogin no, khởi động lại ssh, thêm khóa công khai của bạn vào ủy quyền của tài khoản mới, đăng nhập như tài khoản không có đặc quyền, su vào tài khoản gốc hoặc tài khoản đặc quyền của bạn khi bạn cần root hoặc đặc quyền theo cách của bạn.


2

Mục đích của sudo không liên quan đến mật khẩu mà thay vào đó để cung cấp cho người dùng một số khả năng root-ish trong khi hạn chế người khác qua máy mà không yêu cầu họ xuất trình thông tin đăng nhập gốc (mật khẩu / khóa / mã thông báo bảo mật / vv). Ví dụ, tại nơi làm việc của tôi, công nhân hàng ngày chỉ có thể bắt đầu / tắt / cài đặt và nâng cấp các trạm của họ (từ kho lưu trữ phủ quyết của công ty) thông qua sudo. Chúng không được cung cấp các quyền tự do gốc khác như xóa có chủ đích /, định dạng thiết bị, thêm và xóa người dùng, quyết định mô-đun hạt nhân nào sẽ được đưa vào danh sách đen hoặc những gì chạy trong crontab (vv, v.v.). Trong khi tại nhà của bạn, sudo của bạn cho phép truy cập đầy đủ vào máy. Liên quan đến mật khẩu, trong thực tế, đó là mật khẩu tài khoản người dùng của bạn mà sudo yêu cầu (chính là mật khẩu bạn sẽ sử dụng để đăng nhập, nếu autologin không được bật.

Mẹo xấu : Nếu bạn muốn tạo tài khoản root thông thường trên unix kích hoạt sudo (linux / apple osx), hãy chạy như sau

sudo -s
passwd
Enter your unix password:

Tại thời điểm này, root có mật khẩu thông thường và bạn chỉ cần đăng xuất và đăng nhập bằng root với mật khẩu được đề cập theo "cách thức cũ".

Liên quan đến bảo mật, nếu một chương trình (giả sử máy chủ web, mysql, php daemon, sshd) chạy như một tài khoản nâng cao .. nói root và có một khai thác đã biết ngoài đó, thì kẻ tấn công có thể không cần bất kỳ thông tin bảo mật nào để có quyền truy cập. Họ có thể sử dụng lỗ hổng của chương trình và chỉ sinh ra một lớp vỏ mới từ chương trình này chạy bằng root. Tuy nhiên, điều này là khá hiếm vì các nhà quản lý phân phối nhận thức được các vấn đề tương tự và thực hiện một công việc xuất sắc về xây dựng một môi trường mặc định được suy nghĩ tốt và thường an toàn.

Trong hệ điều hành khác, một thao tác tương tự như sudo sẽ là nhấp chuột phải và chạy với tư cách Quản trị viên hệ thống (hoặc đặc quyền UAC cằn nhằn).

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.