Đặt toàn bộ máy chủ linux dưới sự kiểm soát nguồn (git)


17

Tôi đang suy nghĩ về việc đặt toàn bộ máy chủ linux của mình dưới sự kiểm soát phiên bản bằng git. Lý do đằng sau đó là cách dễ nhất để phát hiện các sửa đổi / rootkit độc hại. Tất cả những gì tôi nghĩ ngây thơ là cần thiết để kiểm tra tính toàn vẹn của hệ thống: Gắn kết phân vùng linux mỗi tuần bằng cách sử dụng hệ thống cứu hộ, kiểm tra xem kho git vẫn chưa được xử lý và sau đó đưa ra trạng thái git để phát hiện bất kỳ thay đổi nào được thực hiện cho hệ thống .

Ngoài sự lãng phí rõ ràng trong không gian đĩa, còn có tác dụng phụ tiêu cực nào khác không?

Đó có phải là một ý tưởng hoàn toàn điên rồ?

Đây có phải là một cách an toàn để kiểm tra rootkit vì rất có thể tôi sẽ phải loại trừ ít nhất / dev và / Proc?


5
Tôi sẽ bỏ phiếu cho "một ý tưởng hoàn toàn điên rồ", quá nhiều hàm ý. Thay đổi tập tin sẽ xảy ra mọi lúc và sẽ làm cho các thủ tục nâng cấp trở thành một cơn ác mộng.
Forcefsck 17/03/2016

@forcefsck - tại sao các thay đổi tập tin sẽ xảy ra mọi lúc? Không phải chúng chỉ xảy ra trong quá trình nâng cấp hệ thống sao?
Tobias Hertkorn 17/03/2016

1
Chỉ cần một suy nghĩ, tại sao không sử dụng một cái gì đó như dirvish hoặc rsync với --link-Dest ? Nếu bạn sử dụng dirvish để tạo bản sao lưu của mình, nó sẽ cung cấp cho bạn một báo cáo hay cho mỗi bản sao lưu hiển thị những gì đã thay đổi. Bạn có thể rsync trong chế độ --dry-run để so sánh trạng thái hiện tại với bản sao lưu của bạn. Nếu bạn sử dụng dirvish, bạn sẽ sử dụng một công cụ được kiểm tra tốt như một hệ thống dự phòng.
Zoredache

Câu trả lời:


16

Đó là một "Ý tưởng tồi" (tm). Ngoài ra, kho lưu trữ của bạn sẽ chạy chậm vì tất cả đều tệ, và trở nên tồi tệ hơn khi mọi sửa đổi được lưu giữ.

Hãy thử quản lý tập trung, như con rối / cengine / đầu bếp. Điều đó sẽ giữ mọi thứ như bạn mong đợi và hoàn nguyên những thay đổi bất ngờ.

Kết hợp điều đó với một cái gì đó như iwatch để nhận email về các thay đổi tệp trái phép.

Kết hợp thêm với các tập tin vòng / phút nếu cần để triển khai các ứng dụng tùy chỉnh.

Ném vào một cái gì đó như rkhunter hoặc chkrootkit ngay bây giờ và sau đó cho đá và bạn nên đi.

Công việc hoàn thành.


+1 cho ý tưởng tồi - Quản lý tập trung (con rối / cengine / đầu bếp / radmind / v.v.) sẽ cung cấp cho bạn khả năng đảm bảo rằng hệ thống của bạn được định cấu hình theo yêu cầu đã xác định của bạn và hầu hết cũng có thể được sử dụng làm "tripwire" gõ hệ thống để cho bạn biết khi nào những thứ thay đổi không nên có.
voretaq7

Tôi nghĩ rằng nó thực sự là một ý tưởng tồi. Ok bạn có thể xem tập tin nào mới và đã thay đổi. Nhưng nếu bạn chạy git, nó cần rất nhiều cpu để giải nén và tính toán các tập tin của bạn. Nếu bạn làm điều này trên toàn bộ mashine thì sẽ mất rất nhiều thời gian.
René Höhle 17/03/2016

1
Tôi sẽ ném một cái khác vào danh sách đó; etckeeper sẽ thực hiện repo git, ngoại trừ chỉ cho / etc.
Shane Madden

kho lưu trữ như git là nhanh chóng không thể tin được. Và tôi không lo lắng về CPU hay IO vì máy chủ tôi có trong thời gian ngừng hoạt động (do đó khả năng gắn kết nó bằng hệ thống cứu hộ)
Tobias Hertkorn 17/03/2016

Điều tôi không hiểu: làm thế nào để các hệ thống quản lý tập trung đảm bảo rằng không có dương tính giả - hệ thống bị xâm phạm + các công cụ được sử dụng để kiểm tra hệ thống bị xâm phạm = dương tính giả
Tobias Hertkorn 17/03/2016

5

Một cách khác là thiết lập tripwire , đây là phần mềm GPL lướt qua tất cả các tệp quan trọng trên hệ thống của bạn và xác định những thay đổi theo cách bạn đã xác định là không thể chấp nhận được. Thay đổi có thể được định nghĩa đơn giản là mtime, thông qua số inode, tất cả các cách để kiểm tra tổng thể mã hóa mạnh.

Phải mất một số thiết lập và điều chỉnh nếu bạn không muốn nhận được nhiều báo cáo mỗi đêm về các tệp đã thay đổi trong /var/run , thay đổi trong tệp máy khách DHCP /etcvà tương tự, nhưng nếu bạn gặp rắc rối đó, thì đó có thể là thực sự rất hữu ích

Cơ sở dữ liệu thuộc tính tệp được ký bằng khóa mà máy không biết, điều này giúp bạn tự tin rằng không có công cụ nào thay đổi độc hại cơ sở dữ liệu hoặc các nhị phân tripwire. Để chắc chắn hoàn toàn, bạn có thể ghi một bản sao của các công cụ và cơ sở dữ liệu tripwire vào phương tiện chỉ đọc, có thể được gắn trên máy chủ và được sử dụng để xác minh tất cả các thay đổi kể từ khi đĩa được ghi, nếu cần phân tích pháp y hoàn chỉnh.

Nếu bạn sẽ làm điều này, điều quan trọng là phải thiết lập và chạy bộ ba dây trước khi máy được triển khai, hoặc bạn không bao giờ có thể hoàn toàn chắc chắn rằng một số người dùng độc hại không có cơ hội lây nhiễm máy trước đó đã vấp ngã.


3

Tôi không nghĩ rằng điều này có thể hoạt động, nhưng như một thử nghiệm tôi muốn xem điều gì sẽ xảy ra nếu bạn làm điều này chỉ với thư mục / etc. Đó là nơi lưu giữ hầu hết các thông tin cấu hình.


4
Chỉ cần / vv đang được thực hiện. Kiểm tra kitenet.net/~joey/code/etckeeper (etckeeper)
Tobias Hertkorn 17/03/2016

1
etckeeper hoạt động thực sự độc đáo, tôi thấy nó rất hữu ích.
Zoredache

2

@Sirex đã cung cấp một câu trả lời rất tốt rồi, nhưng nếu bạn muốn tiến thêm một bước với bảo mật, cách tốt nhất để đối phó với nó là phòng ngừa trước tiên sau đó phát hiện.

Hãy thử thiết lập một hệ thống với / hệ thống tập tin được gắn ở chế độ chỉ đọc. Tạo / tmp một ramfs riêng được gắn với tùy chọn noexec, gật đầu. Để hệ thống hoạt động, bạn thực sự chỉ cần / var để được gắn đọc-ghi. Vì vậy, / Đồng thời sử dụng bản vá bảo mật cho kernel của bạn để hạn chế hơn nữa quyền truy cập vào tài nguyên của người dùng, ví dụ thử grsec. Sử dụng tường lửa với các quy tắc hạn chế nhất có thể.

Một số bản phân phối cung cấp tài liệu mở rộng về việc làm cứng hệ thống. Ví dụ:


0

Tôi nghĩ rằng đó là một ý tưởng tốt để phân tích những thay đổi mà một công cụ thực hiện trong hệ thống của bạn:

  1. cài đặt Linux trần trong máy ảo
  2. khởi tạo git gốc
  3. cài đặt công cụ bạn muốn phân tích
  4. xem tất cả các thay đổi cuộn được thực hiện trong hệ thống của bạn

... Xóa VM

Bạn sẽ phải thêm rất nhiều thư mục vào .gitignore tập tin mặc dù như Proc, v.v.


0

Đối với các tình huống mà bạn chỉ muốn giữ các thư mục nhất định trên toàn bộ hệ thống tệp dưới sự kiểm soát phiên bản, cách tiếp cận sau có thể hoạt động:

Đầu tiên, tạo một kho lưu trữ Git ở /cấp độ:

$ cd /
# git init

Sau đó, tạo một /.gitignoredanh sách trắng chỉ một số thư mục nhất định, ví dụ như chỉ danh sách trắng /path/to/versioned/config/folder/(dựa trên /programming//a/11018557/320594 ):

/*
!/path/
/path/*
!/path/to/
/path/to/*
!/path/to/versioned/
/path/to/versioned/*
!/path/to/versioned/config/
/path/to/versioned/config/*
!/path/to/versioned/config/folder/
!/.gitignore

Sau đó tạo một cam kết đầu tiên:

# git add -A
# git commit -m "Initial commit"

Và sau đó thêm các thư mục bổ sung mà bạn muốn dưới sự kiểm soát phiên bản theo yêu cầu.

Tái bút

Ngoài phương pháp trước, nếu bạn cần giữ / etc / dưới kiểm soát phiên bản, bạn có thể thích sử dụng etckeeper( https://etckeeper.branchable.com/ ) để tạo phiên bản thư mục cụ thể đó vì nó chuyên dụng hơn cho mục đích đó ( ví dụ, nó tự động cam kết sau khi cài đặt các gói).

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.