it-swarm-vi.com

Làm thế nào để bạn biết máy chủ của bạn đã bị xâm nhập?

Gần đây tôi đã giúp một khách hàng bị hack máy chủ của họ. Các tin tặc đã thêm một số PHP mã vào tiêu đề của trang chủ chuyển hướng người dùng đến một trang web khiêu dâm - nhưng chỉ khi chúng đến từ Google. Điều này khiến khách hàng khó phát hiện hơn một chút. sẽ thấy trang web tốt. Chỉ những khách truy cập trang web mới từ Google mới được chuyển đến trang web khiêu dâm.

Đêm qua, một điều tương tự đã xảy ra với một khách hàng khác. Tôi cho rằng đó là một vụ hack tương tự, nhưng khi tôi kiểm tra cơ sở mã, tôi không thể tìm thấy bất kỳ mã độc nào. Trình duyệt chrome của anh ấy đang chuyển hướng từ trang web của khách hàng sang www(dot)pc-site(dot)com. Tôi không thể sao chép hành vi này. Tôi đoán có thể mã độc đang được thêm và xóa. Vì vậy, tôi cần một cách toàn diện hơn để biết máy chủ đã bị hack hay chưa.

Chỉ có 2 nhà phát triển có quyền truy cập vào máy chủ chuyên dụng này (và công ty lưu trữ Rackspace). Máy chủ là Red Hat Linux.

Các bước tôi trải qua để tìm hiểu xem máy chủ có bị hack không?

45
Boz

[~ # ~] đã cập nhật [~ # ~]

Tôi sẽ kiểm tra như sau:

  1. Nhật ký. Nếu bạn có quyền truy cập root, bạn nên kiểm tra những thứ như history sẽ cung cấp cho bạn lịch sử lệnh và tệp nhật ký trong /var/logs.

  2. Đường cơ sở. Nếu bạn có một đường cơ sở như băm tập tin để làm việc với các tệp ứng dụng và hệ thống, điều này sẽ giúp ích rất nhiều. Bạn cũng có thể sử dụng các bản sao lưu để so sánh trạng thái trước đó. Nếu sử dụng bản sao lưu để so sánh các tệp, hãy sử dụng tệp cũ hơn một chút nếu bạn có thể. Trang web có thể đã bị xâm nhập một thời gian trước đây và chỉ đến bây giờ thì việc chuyển hướng đã được kích hoạt.

  3. Kiểm tra bất kỳ bao gồm. Các tập tin có thể không có trên máy chủ của bạn. Chúng có thể là tập lệnh bao gồm như <script src=”http://baddomain.com/s.js” /> hoặc iframe loại thẻ. Cũng không loại trừ hình ảnh, tệp PDF của Flash (SWF), tệp video. Đây là một mẹo khá phổ biến để nhúng các liên kết vào các tệp thuộc loại nội dung khác. Tôi sẽ đề nghị bạn kiểm tra chúng bằng tay đặc biệt là ở đầu và cuối của một tập tin. Tệp có thể hoàn toàn là một liên kết/html/javascript hoặc có thể là một tệp hình ảnh hợp pháp với một đường dẫn liên kết ở cuối tệp.

  4. Kiểm tra ngày, kích thước và quyền của tệp bất thường, ví dụ: 777.

  5. Kiểm tra cron việc làm cho công việc bất thường. Ai đó thỏa hiệp một hệ thống thường sẽ rời khỏi cửa sau để quay lại nhiều lần. Cron là một cách rất phổ biến để làm điều này nếu họ quản lý để đạt được điều đó.

  6. Kiểm tra sự vắng mặt của các tập tin, bạn có thể không có quyền truy cập vào nhật ký nhưng sự vắng mặt của chúng cũng là một dấu hiệu cho biết ai đó đã tự dọn dẹp sau khi chúng.

  7. Sử dụng các công cụ tìm kiếm. Không có công cụ tìm kiếm đáng ngạc nhiên là tuyệt vời trong việc tìm kiếm mọi thứ. Sử dụng các chỉ thị như site: ví dụ. site:yoursitehere.com baddomain.com xem nếu bạn nhận được bất kỳ lượt truy cập.

  8. Thường thì một liên kết hoặc chuyển hướng sẽ bị xáo trộn vì vậy mã javascript dài với các biến chữ cái đơn lẻ cần được phân tích cẩn thận.

  9. Thực hiện chụp gói với một công cụ như Wireshark hoặc tcpdump từ một máy trạm an toàn đến trang web. Lưu nó vào tệp và tìm kiếm tệp cho một phần của url.

  10. Kiểm tra hồ sơ cơ sở dữ liệu có thể được truy vấn hoặc cập nhật. Liên kết có thể được chèn vào cơ sở dữ liệu chứ không phải PHP.

  11. Đừng loại trừ máy trạm của khách hàng. Sử dụng một trình quét virus trực tuyến miễn phí nếu cần. Đồng thời kiểm tra nslookup và xem những gì giải quyết. Kiểm tra tiện ích mở rộng trình duyệt, xóa bộ nhớ cache và kiểm tra các tệp hosts.

Để làm sạch nó (nếu bạn bị xâm nhập), bạn thực sự cần phải quay lại kim loại trần và cài đặt lại. Thật đau đớn nhưng thực sự là cách duy nhất để chắc chắn rằng bạn đã có được toàn bộ.

Để ngăn chặn điều này trong tương lai, bạn nên thực hiện những điều sau (mặc dù bạn có thể đã thực hiện một số trong số này):

  1. Các máy chủ cứng, bao gồm sử dụng các đề xuất của nhà cung cấp về cấu hình an toàn, sử dụng phần mềm cập nhật. Áp dụng kiểm soát bảo mật chặt chẽ như quyền, chính sách mật khẩu. Đồng thời xem quyền thư mục và tệp được chia sẻ Lời khuyên máy chủ .

  2. Thực hiện các thủ tục kiểm soát chất lượng như thử nghiệm trên môi trường bảo mật thấp, xem xét và kiểm tra mã.

  3. Kiểm tra lỗ hổng ứng dụng/trang web của bạn được kiểm tra bởi một người kiểm tra được chứng nhận chuyên nghiệp ít nhất một lần. Hãy tìm những người kiểm tra EC-Hội đồng, ISO 27001 và PCI được chứng nhận. http://www.ecceree.org/certification/licensed_penetration_tester.aspx

  4. Hãy xem OWASP www.owasp.org và http://phpsec.org/projects/guide/2.html để biết tài nguyên bảo mật ứng dụng web.

  5. Sử dụng các công cụ Hệ thống ngăn chặn xâm nhập (IPS). Tuy nhiên tùy thuộc vào nhà cung cấp dịch vụ lưu trữ của bạn, bạn có thể có những hạn chế về những gì bạn có thể sử dụng. Máy chủ dựa trên IPS công cụ sẽ ổn nếu bạn có máy ảo chuyên dụng.

Mong rằng sẽ giúp. Nếu không, có lẽ bạn có thể cung cấp thêm thông tin về các hệ thống bạn đang chạy?

45
Bernie White

Như @Dgarcia đã nói, một phương pháp nhanh là sử dụng một cái gì đó như Tripwire hoặc công cụ khác để theo dõi các tệp hoặc băm của các tệp để kiểm tra các thay đổi. Điều này hoạt động để xác định các máy chủ bị xâm phạm bởi nhiều loại tấn công.

  1. Nó có thể không hoạt động đối với những người đã cài đặt rootkit chống lại quá trình này.
  2. Nó sẽ không hoạt động đối với các máy chủ đã trở thành con mồi cho sự thỏa hiệp chỉ có bộ nhớ hoặc một máy chủ không chạm vào các tệp bạn đang theo dõi.

Đối với 1, tùy chọn duy nhất của bạn là xây dựng lại từ đầu

Đối với 2, tùy chọn tốt nhất của bạn là xây dựng lại từ đầu, vì bất kỳ sự thỏa hiệp nào cũng có thể thực hiện các cửa hậu sẽ phá vỡ mọi thứ bạn cố gắng khắc phục, nhưng các bước khác có thể hữu ích:

  • kiểm tra máy chủ web và phiên bản php của bạn và sử dụng các phiên bản này để tìm kiếm trên danh sách Cố vấn cho các khai thác đã biết - điều này sẽ giúp bạn xác định các khu vực có thể đã bị xâm phạm. Sau đó
  • kiểm tra mã ứng dụng web của bạn
  • kiểm tra cấu hình máy chủ web của bạn
  • kiểm tra máy của khách hàng (đối với tệp máy chủ, DNS, v.v.) vì nó thực sự có thể là vấn đề
7
Rory Alsop

Đây là một câu hỏi khó trả lời vì nó rất rộng. Có hai loại "hack" trong cuốn sách của tôi - nhỏ và nghiêm trọng. Tôi sẽ phân loại một rootkit trong danh mục nghiêm trọng và tấn công tiêm mã script trung bình của bạn là nhỏ. Mặc dù với các cuộc tấn công nhỏ, bạn có thể dọn sạch chúng, bạn không thể chắc chắn 100% bạn đã xóa chúng hoặc đóng tất cả quyền truy cập để lặp lại cuộc tấn công nhưng bạn có thể chắc chắn 99% bằng cách phân tích cuộc tấn công cho các yếu tố chính như " Người này có phải là một lập trình viên giỏi không? " và "ý định của người đó là gì?" Rootkit là kinh doanh khó chịu. Loại bỏ một rootkit đòi hỏi phải xóa và khôi phục hoàn toàn. Việc phát hiện một điều khiển từ xa là gần như không thể - bạn phải có quyền truy cập vật lý vào máy và một đĩa khởi động trong tay để chắc chắn.

Quan trọng hơn là phòng ngừa. Câu ngạn ngữ "một ounce phòng ngừa đáng giá một pound chữa bệnh" là hoàn toàn đúng trong bối cảnh này. Cài đặt phần mềm cho phép bạn giám sát các khía cạnh khác nhau của hệ thống và gửi báo cáo hàng ngày hoặc thậm chí hàng giờ. Tripwire đã được đề cập, nhưng cũng có những công cụ khác. Tôi khuyên bạn nên sử dụng một vài công cụ khác nhau - những công cụ trong nhà khó định vị hơn và không khó để tác giả. Bạn muốn xây dựng một hệ thống phòng thủ vững chắc và hạn chế quyền truy cập vào hệ thống. Đừng để bất cứ ai trên thế giới có quyền truy cập vào cổng SSH (ít nhất là hạn chế nó bằng địa chỉ IP/phạm vi IP nhỏ). Dán một tường lửa chuyên dụng trước mỗi máy chủ để có thêm một lớp bảo vệ. Bạn không muốn để chiếc hộp là hàng phòng thủ duy nhất. Chỉ quản lý dữ liệu quan trọng với máy chủ qua SSH/SSL để mọi thứ được mã hóa và không có con mắt tò mò. Đừng bao giờ quản lý máy chủ của bạn từ các mạng WiFi mở.

Rất nhiều trang web sử dụng MySQL hoặc cơ sở dữ liệu tương tự. Việc phát hiện những thứ như các cuộc tấn công XSS hoặc dữ liệu giả mạo khác trong cơ sở dữ liệu là không dễ dàng vì có các vấn đề phụ thuộc vào lược đồ. Tôi chưa thấy giải pháp nào cho vấn đề này nhưng tôi không nghi ngờ chúng tồn tại.

6
Linders

Một phương pháp nhanh là có md5 của tất cả các tệp mà bạn biết là khỏe mạnh. Nếu bạn nghi ngờ trang web của mình hoạt động xấu hoặc là một kiểm tra thường xuyên, bạn có thể kiểm tra các tệp. Nếu bất kỳ md5 nào không khớp, bạn có thể tìm khác biệt các tệp và xem xét các thay đổi.

Rõ ràng điều này không hoạt động với các tệp dinamic: nhật ký, kết xuất cơ sở dữ liệu, v.v. Nếu bạn không thể theo dõi các thay đổi.

Tất nhiên, có nhiều phương pháp (kiểm tra nhật ký ...) và phòng ngừa, nhưng đây là một cách dễ dàng và nhanh chóng.

2
dgarcia