Tại sao nó là xấu khi có một mật khẩu người dùng mysql yếu?


23

Tôi đã đưa ra một lập luận cho giai điệu "bạn không cần mật khẩu người dùng mysql mạnh bởi vì để sử dụng nó, họ đã có quyền truy cập vào máy chủ của bạn." Chúng ta đang nói về một mật khẩu gồm 4 chữ số là một từ điển tiếng Anh tiêu chuẩn trên một trang web kinh doanh trực tiếp.

Không ảnh hưởng đến câu trả lời bằng kiến ​​thức và kinh nghiệm của riêng tôi, tôi muốn cho họ thấy một số câu trả lời từ nguồn bên thứ 3 không quan tâm. Bất cứ ai quan tâm để kêu vang trong này? Lập trình / câu trả lời thực tế sẽ được đánh giá cao.


7
Âm thanh như một trong những root:rootlần đăng nhập này .

3
Mật khẩu bốn chữ số? Thích 1337?
Gumbo

Câu trả lời:


39

Bất cứ ai đang đưa ra lập luận này dường như đang nói "Một khi ai đó đặt chân vào cửa, bạn cũng có thể cung cấp cho họ quyền truy cập đầy đủ". Theo logic đó, một tường lửa phủ nhận sự cần thiết của tất cả mật khẩu trên mạng nội bộ của bạn.

Mật khẩu mạnh là một bước để hạn chế thiệt hại do xâm nhập mạng. Không có lý do gì để giơ tay lên trong thất bại chỉ vì một phần nhỏ trong mạng của bạn bị xâm phạm.


13
"Phòng thủ trong chiều sâu" là phương châm trong ngày.
Scott Pack

3
Chỉ cần lưu ý rằng một khi họ có quyền truy cập vào hệ thống tệp của bạn, họ sẽ có quyền truy cập vào tệp PHP hoặc tệp cấu hình của bạn nơi mật khẩu của bạn được lưu trữ trừ khi bạn thiết lập một số bảo mật bổ sung cho việc này, điều này thường khó hoặc không thể trên các máy chủ được chia sẻ .
Lotus Notes

2
@Lotus Giả sử các máy chủ PHP và MySQL là cùng một máy.
meagar

2
@Lotus Ghi chú, Bạn không nên sử dụng người dùng root trong bất kỳ ứng dụng nào. Một ứng dụng được thiết kế tốt chỉ cho phép truy cập là cần thiết. Hầu hết thời gian, điều này bao gồm quyền truy cập vào dữ liệu, nhưng không phải lúc nào cũng là tất cả dữ liệu và trong một số trường hợp, nó thậm chí có thể chỉ đọc.
bradlis7

1
@Lotus Ghi chú: Nhiều máy chủ được chia sẻ sử dụng suPHP, liên kết với 660 tệp tin nhạy cảm.
webbiedave

14

Nó thực sự quay trở lại ý tưởng về ' Defense in Depth ' vì vậy ít nhất một mật khẩu mạnh có thể làm chậm chúng để bạn có thể khám phá và chặn chúng. Tôi thích sự tương tự của việc có một chìa khóa duy nhất cho một cộng đồng bị kiểm soát so với một chìa khóa trên cánh cửa của mọi nhà.


Tôi đã chờ đợi ai đó đưa ra một tương tự chìa khóa / cửa: |
meagar

Nhưng một chìa khóa khác nhau cho mỗi cánh cửa trong nhà bạn có lẽ là quá mức. Bạn ve con đương nay ở đâu vậy?
Dan

4
@Dan: nhưng trong một cơ sở an toàn, bạn sẽ mong đợi một chìa khóa khác nhau cho mỗi cánh cửa, phải không? Trong một gia đình đơn thân, không có người bạn nào mong muốn tất cả các khóa sử dụng cùng một khóa. Nhưng trong một ngôi nhà chung (như với bạn cùng phòng), điều đó phụ thuộc vào triết lý của hộ gia đình: hoặc là những cánh cửa không khóa (có thể tất cả các cửa đều sử dụng cùng một khóa) hoặc các khóa khác nhau cho mỗi bạn cùng phòng.
wallyk

5
Khóa và các thiết bị an toàn khác chủ yếu được sử dụng cho kẻ trộm nghiệp dư hoặc chỉ để răn đe chuyên nghiệp. Một biện pháp ngăn chặn khác là chiếu sáng đầy đủ xung quanh nhà và để tránh các thói quen thường xuyên làm cho nó rõ ràng ở đâu và những gì bạn làm trong suốt cả ngày. Không bao giờ trò chuyện với người lạ về kế hoạch nghỉ phép và cảnh báo cảnh sát địa phương nếu bạn đi trong một thời gian dài. Luôn cố gắng làm cho nó xuất hiện như thể có ai đó ở nhà. Ngoài ra, để ... chờ đợi, câu hỏi lại là gì?
Stephen Watkins

6

Nó phụ thuộc rất nhiều vào cách thiết lập máy chủ MySQL của bạn. Nếu nó chỉ chấp nhận các yêu cầu ngoài ip (127.0.0.1), điều đó làm cho nó an toàn hơn vừa phải.

Đưa ra một kịch bản trong đó bạn cho phép các IP từ xa, nó trở thành một thỏa thuận lớn hơn nhiều.

Thêm vào đó, thật tốt khi có bảo mật mạnh mẽ trong trường hợp bị xâm nhập - tốt hơn là họ bỏ đi càng ít càng tốt.


6

Có khóa trên hộp Petty Cash trong Kế toán không? Nếu vậy, tại sao? Tòa nhà không có an ninh vật lý?


5

bạn không cần mật khẩu người dùng mysql mạnh vì để sử dụng nó, họ đã có quyền truy cập vào máy chủ của bạn

Điều này không đúng, bởi vì mysql cũng có thể được sử dụng trong môi trường máy khách-máy chủ mạng chéo và theo mặc định, điều duy nhất bạn cần là người dùng / pass để có quyền truy cập vào cơ sở dữ liệu (ngoại tuyến, với cổng 3306 được mở và máy chủ hiển thị công khai ).


5

Thật vậy, nó có thể là một cách khác: nếu họ có quyền truy cập vào mysql, họ có thể truy cập hệ điều hành máy chủ.

  1. MySQL LOAD_FILE và CHỌN ... VÀO truy vấn OUTFILE cho phép người dùng mysql đọc và ghi tệp trên hệ thống tệp cơ bản. Bất kỳ tệp nào mà người dùng mysql cũng có quyền truy cập (MySQL của bạn có đang chạy bằng root không?). Nếu trong linux / UNIX, chỉ cần truy vấn CHỌN LOAD_FILE ('/ etc / passwd') và thấy họ cười toe toét. Nếu mysqld đang chạy với quyền root, bạn có thể thử CHỌN LOAD_FILE ('/ etc / bóng') và xem sysadmin của bạn khóc.
  2. Nhiều lần trong linux, người dùng mysql "root" có cùng mật khẩu với người dùng "mysql" của máy chủ (mật khẩu chạy mysqld). Sau đó, nếu mật khẩu này là tầm thường (hoặc có thể tìm thấy bằng các công cụ tự động như medusa / hydra) thì bạn có thể chỉ cần SSH / telnet trực tiếp đến máy chủ cơ sở dữ liệu và đánh lừa xung quanh.

4

Nếu ai đó có quyền truy cập root vào máy chủ của bạn, thì họ sẽ không cần bất kỳ mật khẩu MySQL nào. Nhưng nếu họ chỉ có thể thực thi các ứng dụng trên máy chủ của bạn với tư cách là người dùng không phải root và không phải web, thì mật khẩu MySQL mạnh vẫn có thể lưu dữ liệu của bạn. Nhưng vâng, hầu hết các vụ hack đến từ web, điều đó có nghĩa là tin tặc sẽ có quyền truy cập vào tài khoản web của bạn và do đó có thể trích xuất mật khẩu DB từ các tệp PHP.

Tất cả điều này giả sử máy chủ MySQL của bạn không chấp nhận kết nối từ bất cứ nơi nào ngoài localhost. Nếu có thì bạn cần một PW mạnh.


4

Một cái gì đó dường như đã bị bỏ qua ở đây là, bạn có tin tưởng người dùng của mình trên mạng đáng tin cậy không?

Thành thật mà nói, tôi không, bởi vì tôi biết những gì tôi đã như thế nào khi tôi bắt đầu trong CNTT. Tôi sẽ chọc và prod ở những khu vực mà tôi không có quyền, và thật lòng mà nói, một mật khẩu MySQL yếu sẽ rất vui cho tôi vì tôi đã có cơ hội may mắn và tham gia và tôi có thể phá hỏng (một cách tình cờ, tất nhiên).

Điều gì xảy ra nếu ai đó sử dụng kỹ thuật xã hội để truy cập mạng đáng tin cậy của bạn? Sau đó, bạn sẽ làm gì? Nếu chúng ở trên một máy phía sau tường lửa, chúng sẽ bị phá hủy, bảo mật tường lửa cứng như đá của bạn sẽ bị hủy hoại và chúng được đưa thẳng vào máy.

Mật khẩu mạnh rất đơn giản để thực hiện và có rất nhiều công cụ quản lý mật khẩu để giúp bảo mật mật khẩu dễ dàng, vì vậy thực sự không có lý do gì để không thực hiện.


Vấn đề là, bạn không nên cho phép các kết nối từ xa trong MySQL hoặc nếu bạn cần, sau đó chỉ định localhost/ 127.0.0.1làm máy chủ lưu trữ. Bằng cách này, không ai có thể truy cập cơ sở dữ liệu bên ngoài (ngay cả những cơ sở trong cùng một mạng).
Chazy Chaz

2

Ơ. Nếu máy chủ của bạn bị khóa IP và người dùng của bạn bị hạn chế CHỌN trên một tập hợp các bảng mà bạn không quan tâm đến thông tin, thì đó không phải là vấn đề lớn.

Mặt khác, tôi đặt mật khẩu MySQL của mình bằng cách gõ bàn phím trong một phút và sao chép dán kết quả vô nghĩa vào một tệp được bảo vệ, mà tôi tham chiếu trong mã của mình bất cứ khi nào tôi cần đăng nhập. Đây là cách nó hoạt động.

Tại sao làm cho nó dễ dàng? Nếu mật khẩu được gắn vào một tài khoản cục bộ hạn chế (như tất cả chúng phải như vậy), thì tại sao bạn lại gõ nó vào? Nếu không, mật khẩu sẽ có mật khẩu tương ứng với giá trị của dữ liệu bạn đang bảo vệ.


2

thông tin tài khoản / truy cập của myQuery được lưu trữ trong một tệp riêng biệt từ cơ sở dữ liệu thực tế. Do đó, bạn có thể chỉ cần kéo và thả một tệp khác vào vị trí của nó. Với myQuery nếu họ có quyền ghi vào phần có liên quan của hệ thống tệp của bạn thì trò chơi kết thúc.


2

Bởi vì yêu cầu thay đổi ...

Vì vậy, máy chủ ngày nay bị giới hạn chỉ chấp nhận kết nối MySQL với máy cục bộ, ngày mai có thể được mở ra để có thể sử dụng một công cụ bên ngoài để quản lý cơ sở dữ liệu. Người thực hiện thiết lập này có thể không biết rằng có những mật khẩu cực kỳ yếu đang sử dụng.

Nếu người dùng của bạn bất tiện vì phải nhớ mật khẩu tốt, mạnh (ví dụ: dài, ngẫu nhiên), hãy cân nhắc làm cho nó rất mạnh và sau đó lưu trữ nó trong .my.cnf- thậm chí thuận tiện hơn so với việc có mật khẩu yếu mà họ phải nhập. Tất nhiên, cũng có những tác động bảo mật cho vấn đề này, nhưng bạn sẽ phải lưu mật khẩu của mình ở đâu đó, ví dụ như các ứng dụng truy cập nó, vì vậy bạn đã bảo mật các bản sao của mật khẩu.

Nhưng cũng đọc những gì @meagar nói.


1

Tiền đề rằng họ đã có quyền truy cập là không đúng sự thật. Tuy nhiên, nếu họ có quyền truy cập và họ có tài khoản không có đặc quyền, họ vẫn có thể dễ dàng hack mật khẩu mysql.

Ngoài ra, nếu máy chủ là máy chủ sản xuất trực tiếp, hơn là bạn đang tự quảng cáo trên internet. điều đó có nghĩa là đến một lúc nào đó, ai đó S try thử tấn công vũ phu vào máy chủ đó, bao gồm cả mysql, cả cổng và tài khoản người dùng.

nếu bạn quan tâm đến dữ liệu, hơn các bước cơ bản là phải có mật khẩu gốc khác cho cơ sở dữ liệu so với người dùng root. những người khác đã tuyên bố rằng bạn cũng nên có quyền thấp nhất có thể cho người dùng và chương trình.

mật khẩu 4 ký tự có thể bị hack trong vài phút, trên một máy tính khá rẻ.

Tôi chỉ có thể nhắc lại những gì người khác đã nói, nhưng bạn càng có nhiều đạn cho người quản lý của mình thì càng tốt.


1

Nhiều lý do kịch bản thực tế đã được đề cập trong các bài viết trước đây vì vậy tôi sẽ thêm "lý thuyết". Sử dụng mật khẩu mạnh và thực hiện các biện pháp phòng ngừa để thắt chặt bảo mật là một triết lý công việc. Một cách nghĩ.

Hiện tại, bạn đang sử dụng mật khẩu yếu vì mysql chỉ chạy trên 127.0.0.1 và chỉ người dùng root mới có quyền truy cập cho thấy bạn không nghĩ trước. Điều gì xảy ra nếu một ngày nào đó bạn sẽ cần cấp quyền truy cập qua mạng cho mysql của bạn. Bạn sẽ nhớ để bao gồm tất cả các wholes an ninh mà bạn để lại?

Một quản trị viên giỏi đặt kịch bản tồi tệ nhất lên hàng đầu đến mức hoang tưởng.


1

Nó phụ thuộc vào quyền mà người dùng có, bạn phải luôn khóa mọi thứ ở nhiều cấp độ. Ngoài ra, nó phụ thuộc vào dữ liệu lưu trữ trong cơ sở dữ liệu của bạn. Cũng giả sử có một lỗ hổng trong MySQL cho phép họ chiếm toàn bộ cơ sở dữ liệu nhưng họ chỉ cần đăng nhập vào bất kỳ tài khoản người dùng nào. Nếu mật khẩu của bạn mạnh, điều này sẽ làm cho lỗ hổng này bị tắt tiếng. Nhưng điều này thực sự chỉ phụ thuộc vào trường hợp cụ thể của bạn.


Nếu máy chủ MySQL bị xâm phạm, người dùng và mật khẩu sẽ vô dụng. Các tập tin cơ sở dữ liệu không được mã hóa. Người dùng MySQL cho các ứng dụng nên có localhost / 127.0.0.1 làm máy chủ để không thể sử dụng chúng từ xa hoặc vô hiệu hóa các kết nối từ xa.
Chazy Chaz

1

Nó rất dễ dàng để mạo danh người khác trong mysql. Cho một id người dùng không có mật khẩu (bảo mật yếu nhất) chỉ cần sử dụng mysql -u userid. Nếu nó có mật khẩu thì khó hơn một chút, nhưng mật khẩu yếu thì dễ. Nếu root không có mật khẩu, tôi có thể truy cập root như mysql -u root. Sau đó tôi có thể làm bất cứ điều gì trong cơ sở dữ liệu mà root có thể.

Sử dụng các thông số kỹ thuật của máy chủ trong bảo mật cũng là một ý tưởng tốt, đặc biệt nếu truy cập từ xa hoặc có thể có sẵn.

Mật khẩu trong các tệp có thể và nên được bảo mật phần nào bởi các quyền. Truy cập bằng root hoặc chủ sở hữu của tệp mật khẩu là không đáng kể. Nếu có thể mã hóa mật khẩu trên đĩa nên được sử dụng. Điều này làm cho nó hơi khó truy cập hơn, nhưng vẫn dễ bị tổn thương.


0

Chà, nếu bạn không tự lưu trữ MySQL db, nhưng đó là trên dịch vụ lưu trữ và ai đó có quyền truy cập vào địa chỉ IP của Máy chủ của bạn, tên người dùng và mật khẩu là hàng phòng thủ cuối cùng của bạn. Luôn luôn tốt để có một tên người dùng / mật khẩu an toàn.


Meh! Nếu ai đó có quyền truy cập vào máy chủ thì họ có thể đọc người dùng / mật khẩu từ các tệp PHP ... Xin vui lòng, cập nhật hoặc xóa câu trả lời này.
Chazy Chaz
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.