Làm cách nào để biết máy chủ Linux của tôi đã bị hack?


36

Các dấu hiệu nhận biết rằng máy chủ Linux đã bị hack là gì? Có công cụ nào có thể tạo và gửi email báo cáo kiểm toán theo lịch trình không?


1
Nếu nhà nước không biết, thực sự không có cách nào. Đó là lý do tại sao việc sử dụng các nguồn cài đặt đáng tin cậy và thiết lập các công cụ như Tripwire trước khi tiếp xúc với bất kỳ thứ gì khác ngoài chính nó là rất quan trọng.
Oskar Duveborn


10
Bạn có nghĩa là "nứt". Hacking là cách chúng tôi có linux ở nơi đầu tiên.
gbarry

Một người bạn của tôi, máy chủ của tôi đã được lưu trữ với chúng tôi đã từng đề nghị tôi xem xét máy chủ của anh ta vì dường như có gì đó kỳ lạ với nó. Ngay khi nhìn thấy nhật ký, tôi biết có gì đó đã xảy ra. Họ đã cố gắng che dấu vết của họ và tôi nghĩ rằng đã cài đặt một bộ root nhưng đã tạo ra một chút hỗn độn của nó. Dù sao, để cắt ngắn một câu chuyện dài, chúng tôi phải xây dựng lại toàn bộ máy chủ từ đầu. Phải mất cả đêm và sau đó chúng tôi cấu hình một số công cụ kiểm toán bảo mật.
Matt

@Matt Mind cho chúng tôi biết công cụ nào? Vẫn như ngày hôm nay?
Rodrigo

Câu trả lời:


34
  1. Giữ một bản sao nguyên sơ của các tệp hệ thống quan trọng (như ls, ps, netstat, md5sum) ở đâu đó, với md5sum của chúng và so sánh chúng với các phiên bản trực tiếp thường xuyên. Rootkit sẽ luôn luôn sửa đổi các tập tin này. Sử dụng các bản sao này nếu bạn nghi ngờ bản gốc đã bị xâm phạm.
  2. trợ lý hoặc tripwire sẽ cho bạn biết bất kỳ tệp nào đã được sửa đổi - giả sử cơ sở dữ liệu của họ không bị giả mạo.
  3. Định cấu hình nhật ký hệ thống để gửi tệp nhật ký của bạn đến máy chủ nhật ký từ xa nơi chúng không thể bị giả mạo bởi kẻ xâm nhập. Xem các logfiles từ xa này để biết hoạt động đáng ngờ
  4. đọc nhật ký của bạn thường xuyên - sử dụng logwatch hoặc logcheck để tổng hợp các thông tin quan trọng.
  5. Biết máy chủ của bạn . Biết những loại hoạt động và nhật ký là bình thường.

8
md5 đã bị suy yếu nghiêm trọng nếu không được ném ra ngoài. Bạn có thể muốn chuyển đến sha512.
Broam

12

Bạn không.

Tôi biết, tôi biết - nhưng đó là sự thật hoang tưởng, đáng buồn, thực sự;) Có rất nhiều gợi ý tất nhiên, nhưng nếu hệ thống được nhắm mục tiêu cụ thể - có thể không thể nói được. Thật tốt khi hiểu rằng không có gì là hoàn toàn an toàn. Nhưng chúng ta cần phải làm việc để an toàn hơn, vì vậy tôi sẽ chỉ vào tất cả các câu trả lời khác thay thế;)

Nếu hệ thống của bạn bị xâm phạm, không có công cụ hệ thống nào của bạn có thể được tin cậy để tiết lộ sự thật.


5
Bạn đang giả định rằng kẻ tấn công của bạn có một số kỹ năng, muốn tàng hình dưới bất kỳ hình thức nào và không hoàn toàn quan tâm đến việc làm nổ thư rác và thêm OC3 của bạn vào mạng botnet. Ngày nay, bạn thường phát hiện ra rằng thực tế là một lượng lớn thư rác sẽ ra khỏi máy chủ của bạn, thường là trên một hệ thống quá tải không nên có. Hầu hết các "tin tặc" được thúc đẩy bởi tiền trong những ngày này.
Ernie

2
Các công cụ tấn công tiên tiến nhất đòi hỏi không có kỹ năng ngày nay và dễ dàng có sẵn và một số cực kỳ lén lút theo mặc định và theo thiết kế. Botnet / zombie có thể nhàn rỗi một thời gian dài trước khi được sử dụng để gây hại nhưng lỗi trong các công cụ tấn công có thể gây ra sự cố không mong muốn và hành vi kỳ lạ, v.v.
Oskar Duveborn

11

Tripwire là một công cụ thường được sử dụng - nó thông báo cho bạn khi các tệp hệ thống đã thay đổi, mặc dù rõ ràng bạn cần phải cài đặt nó trước. Mặt khác, các mục như tài khoản người dùng mới mà bạn không biết, các quy trình và tệp lạ mà bạn không nhận ra hoặc tăng mức sử dụng băng thông mà không có lý do rõ ràng là những dấu hiệu thông thường.

Các hệ thống giám sát khác như Zabbix có thể được cấu hình để cảnh báo bạn khi các tệp như / etc / passwd bị thay đổi.


11

Một số điều đã cho tôi biết trong quá khứ:

  • Tải cao trên hệ thống không hoạt động
  • Segfaults kỳ lạ, ví dụ. từ các tiện ích tiêu chuẩn như ls(điều này có thể xảy ra với bộ root bị hỏng)
  • Các thư mục ẩn trong /hoặc /var/(hầu hết các kiddies script quá ngu ngốc hoặc lười biếng để che dấu vết của chúng)
  • netstat hiển thị các cổng mở không nên ở đó
  • Daemon trong danh sách quy trình mà bạn thường sử dụng các hương vị khác nhau (ví dụ: bindnhưng bạn luôn sử dụng djbdns)

Ngoài ra, tôi đã tìm thấy một dấu hiệu đáng tin cậy cho thấy một hộp bị xâm phạm: nếu bạn có cảm giác xấu về sự siêng năng (với các bản cập nhật, v.v.) của quản trị viên mà bạn đã kế thừa một hệ thống, hãy theo dõi chặt chẽ!


10

Có một phương pháp kiểm tra máy chủ bị hack thông qua kill-

Về cơ bản, khi bạn chạy "kill -0 $ PID", bạn đang gửi tín hiệu nop để xử lý mã định danh $ PID. Nếu quá trình đang chạy, lệnh kill sẽ thoát bình thường. (FWIW, vì bạn đang truyền tín hiệu tiêu diệt nop, sẽ không có gì xảy ra với quy trình). Nếu một quá trình không chạy, lệnh kill sẽ thất bại (trạng thái thoát nhỏ hơn 0).

Khi máy chủ của bạn bị hack / rootkit được cài đặt, một trong những điều đầu tiên nó làm là bảo kernel ẩn các tiến trình bị ảnh hưởng khỏi các bảng quy trình, v.v. Tuy nhiên, nó có thể thực hiện tất cả các thứ hay ho trong không gian kernel để xử lý các quá trình. Và điều này có nghĩa là

a) Kiểm tra này không phải là kiểm tra mở rộng, vì các rootkit thông minh / được mã hóa tốt sẽ đảm bảo rằng kernel sẽ trả lời với câu trả lời "quá trình không tồn tại" làm cho kiểm tra này trở nên dư thừa. b) Dù bằng cách nào, khi một máy chủ bị tấn công có quá trình "xấu" đang chạy, thì nó thường không hiển thị dưới / Proc.

Vì vậy , nếu bạn ở đây cho đến bây giờ, phương pháp là giết -0 mọi quy trình có sẵn trong hệ thống (mọi thứ từ 1 -> / Proc / sys / kernel / pid_max) và xem liệu có các quy trình đang chạy nhưng không được báo cáo trong / Proc.

Nếu một số quy trình xuất hiện dưới dạng đang chạy, nhưng không được báo cáo trong / Proc, có lẽ bạn có vấn đề với bất kỳ cách nào bạn nhìn vào nó.

Đây là một tập lệnh bash thực hiện tất cả những điều đó - https://gist.github.com/1032229 . Lưu nó trong một số tập tin và thực hiện nó, nếu bạn tìm thấy một quá trình xuất hiện không được báo cáo trong Proc, bạn nên có một số khách hàng tiềm năng để bắt đầu đào sâu.

HTH.


Đó thực sự là hữu ích cho máy chủ nhà của tôi, nơi tôi không có thời gian để duy trì hệ thống như một hệ thống làm việc hiệu quả. Nhưng dù sao, tôi có thể sử dụng điều này trong một môi trường chuyên nghiệp và chắc chắn "tương đối" về kết quả không? Và cho câu trả lời là 3 tuổi: Đây có phải là một phương pháp hợp lệ để kiểm tra nhiễm trùng phổ biến hiện nay trong năm 2014 không?
trung tâm

7

Tôi sẽ thứ hai các câu trả lời được đưa ra ở đây và thêm một trong những câu trả lời của riêng tôi.

find /etc /var -mtime -2

Điều này sẽ cung cấp cho bạn một dấu hiệu nhanh nếu bất kỳ tệp máy chủ chính nào của bạn thay đổi trong 2 ngày qua.

Đây là từ một bài viết về phát hiện hack Làm thế nào để phát hiện nếu máy chủ của bạn đã bị hack.


1
Tôi nghĩ -ctime thay vì -mtime. Không thể giả mạo với -ctime
Tillebeck

5

Từ Làm cách nào tôi có thể phát hiện các xâm nhập không mong muốn trên máy chủ của mình?

  • Sử dụng IDS

    SNORT® là một hệ thống phát hiện và ngăn chặn xâm nhập mạng nguồn mở sử dụng ngôn ngữ dựa trên quy tắc, kết hợp các lợi ích của chữ ký, giao thức và phương pháp kiểm tra dựa trên bất thường. Với hàng triệu lượt tải xuống cho đến nay, Snort là công nghệ phát hiện và ngăn chặn xâm nhập được triển khai rộng rãi nhất trên toàn thế giới và đã trở thành tiêu chuẩn thực tế cho ngành công nghiệp.

    Snort đọc lưu lượng truy cập mạng và có thể tìm kiếm những thứ như "lái xe bằng cách kiểm tra bút" trong đó ai đó chỉ thực hiện quét toàn bộ metasploit đối với máy chủ của bạn. Tốt để biết những thứ này, theo ý kiến ​​của tôi.

  • Sử dụng nhật ký ...

    Tùy thuộc vào cách sử dụng của bạn, bạn có thể thiết lập nó để bạn biết bất cứ khi nào người dùng đăng nhập hoặc đăng nhập từ một IP lẻ hoặc bất cứ khi nào root đăng nhập hoặc bất cứ khi nào ai đó cố gắng đăng nhập. Tôi thực sự có máy chủ gửi email cho tôi mỗi thông điệp tường trình cao hơn Debug. Có, thậm chí Thông báo. Tôi lọc một số trong số họ tất nhiên, nhưng mỗi sáng khi tôi nhận được 10 email về những thứ nó khiến tôi muốn sửa nó để nó ngừng xảy ra.

  • Theo dõi cấu hình của bạn - Tôi thực sự giữ toàn bộ / etc của mình trong lật đổ để tôi có thể theo dõi các phiên bản.

  • Chạy quét. Các công cụ như LynisRootkit Hunter có thể cung cấp cho bạn thông báo về các lỗ hổng bảo mật có thể có trong các ứng dụng của bạn. Có những chương trình duy trì cây băm hoặc cây băm của tất cả các thùng của bạn và có thể cảnh báo bạn về những thay đổi.

  • Giám sát máy chủ của bạn - Giống như bạn đã đề cập đến không gian đĩa - biểu đồ có thể cho bạn một gợi ý nếu có gì đó bất thường. Tôi sử dụng xương rồng để giữ một mắt trên CPU, lưu lượng mạng, không gian đĩa, nhiệt độ, vv Nếu một cái gì đó trông lẻ nó lẻ và bạn nên tìm hiểu lý do tại sao nó là lẻ.


2

Tôi chỉ muốn thêm vào đây:

Kiểm tra lịch sử bash của bạn, nếu nó trống và bạn chưa đặt hoặc bỏ trống nó, có khả năng ai đó đã xâm phạm máy chủ của bạn.

Kiểm tra lần cuối. Hoặc bạn sẽ thấy IP không xác định hoặc nó sẽ trông rất trống rỗng.

Sau đó, như câu trả lời được chấp nhận đã nêu, các tệp hệ thống thường được thay đổi, kiểm tra ngày sửa đổi. Tuy nhiên, họ thường làm xáo trộn ngày sửa đổi.

Họ thường cài đặt một phiên bản khác của ssh chạy trên một cổng ngẫu nhiên. Điều này thường được ẩn ở một số nơi thực sự kỳ lạ. Lưu ý rằng thông thường nó sẽ được đổi tên thành một cái gì đó khác với ssh. Vì vậy, hãy kiểm tra netstat (có thể không hoạt động vì chúng thường thay thế nó) và sử dụng iptables để chặn bất kỳ cổng không xác định nào.

Trong mọi trường hợp, đây là một tình huống mà phòng bệnh hơn chữa bệnh. Nếu bạn đã bị xâm phạm, tốt nhất là chỉ định dạng và bắt đầu lại. Gần như không thể xác nhận bạn đã dọn dẹp thành công vụ hack.

Hãy lưu ý những điều sau để ngăn máy chủ của bạn bị xâm nhập.

  1. Thay đổi cổng ssh
  2. Ngăn chặn root không thể đăng nhập
  3. chỉ cho phép một số người dùng nhất định
  4. Ngăn chặn mật khẩu đăng nhập
  5. Sử dụng khóa ssh, khóa được bảo vệ bằng mật khẩu
  6. Trường hợp có thể danh sách đen tất cả các ip và danh sách trắng các ips cần thiết.
  7. Cài đặt và cấu hình fail2ban
  8. Sử dụng tripwire để phát hiện sự xâm nhập
  9. Theo dõi số lượng người dùng đăng nhập bằng Nagios hoặc zabbix. Ngay cả khi bạn nhận được thông báo mỗi khi bạn đăng nhập, ít nhất bạn sẽ biết khi nào một số người khác đang chơi.
  10. Nếu có thể hãy giữ máy chủ của bạn trên vpn và chỉ cho phép ssh qua vpn ip. Bảo mật vpn của bạn.

Thật đáng giá khi lưu ý rằng một khi họ vào một máy chủ, họ sẽ kiểm tra lịch sử bash của bạn và tìm kiếm các máy chủ khác mà bạn đã kết nối thông qua ssh từ máy chủ đó. Sau đó, họ sẽ cố gắng kết nối với các máy chủ đó. Vì vậy, nếu bạn bị ép buộc vì mật khẩu kém, rất có thể họ sẽ có thể kết nối với máy chủ khác và thỏa hiệp chúng.

Đó là một thế giới xấu xí ngoài kia, tôi nhắc lại phòng bệnh hơn chữa bệnh.



0

Bạn nên kiểm tra GuardRail. Nó có thể quét máy chủ của bạn hàng ngày và cho bạn biết những gì đã thay đổi theo cách trực quan tốt đẹp. Nó không yêu cầu một đại lý và có thể kết nối qua SSH, do đó bạn không cần phải dọn rác máy và tài nguyên của mình với một đại lý.

Trên hết, nó miễn phí cho tối đa 5 máy chủ.

Kiểm tra nó ở đây:

https://www.scriptrock.com/


Đây có phải là dịch vụ đám mây đăng nhập vào máy của bạn với quyền root không? Điều gì xảy ra nếu dịch vụ bị xâm phạm?
trung tâm

Bạn không cần phải cung cấp cho nó gốc. Bạn cũng có thể chọn sử dụng một tác nhân thay thế, điều đó có nghĩa là máy của bạn sẽ bỏ phiếu thay vì gọi SSH. Mật khẩu cho những thứ như DB luôn được lưu trữ trên máy của bạn chứ không phải trên đám mây.
Cheyne
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.