it-swarm-vi.com

Bảo vệ máy chủ Linux

Chúng tôi đã có câu hỏi ở đây về Hardening Apache , Hardening PHPBảo mật SSH .

Để tiếp tục xu hướng này, tôi quan tâm đến những bước mà mọi người thực hiện để làm cứng máy chủ Linux. Như những bước mà mọi người luôn thực hiện khi thiết lập một máy chủ mới, đó không phải là ứng dụng cụ thể. Chẳng hạn như đặt phân vùng tmp thành noexec, gỡ cài đặt/vô hiệu hóa một số dịch vụ nhất định, e.t.c.

88
Mark Davidson

Xác định các ứng dụng và quy trình cần thiết và áp dụng danh sách kiểm tra để tránh cài đặt chúng hoặc trường hợp xấu nhất là gỡ cài đặt chúng sau khi xây dựng ban đầu.

Ở đây tôi đang nghĩ rằng những thủ phạm phổ biến mà dường như vẫn còn đi đến quá nhiều bản phát hành theo mặc định!

  • Các dịch vụ NFS: nfsd, lockd, mountd, statd, portmapper
  • máy chủ telnet và máy chủ ftp
  • Dịch vụ R: rlogin, rsh, RCp, rexec
  • Máy chủ BIND và DNS trừ khi cần
  • máy chủ mail như sendmail
  • X11 (trừ khi cần máy tính để bàn)
  • daemon ngón tay, vv

Bước tiếp theo là trải qua các dịch vụ yếu tiềm năng và hạn chế quyền truy cập vào chúng

  • sử dụng at.allow và cron.allow để hạn chế quyền truy cập vào crontab
  • Đảm bảo tất cả các thiết bị không thể đọc được và không thể nhận được bởi người dùng thông thường (ngoại trừ những thiết bị như/dev/tty và/dev/null, v.v.)
  • Các tệp chính - quyền trên những quyền này phải được sở hữu bởi root:/etc/fstab,/etc/password,/etc/Shadow
  • Kiểm tra cẩn thận hosts.equiv - một nguồn truy cập tuyệt vời tại đây :-)
  • Tương tự, cấu hình NFS bị khóa nếu được yêu cầu
  • Vô hiệu hóa các tài khoản hệ thống không cần thiết.
  • Nhìn vào hệ thống tập tin - bit dính cho tất cả các thư mục thực thi và thư mục công cộng.
  • Kiểm tra tất cả các yêu cầu gốc (biến môi trường PATH, không có quyền truy cập từ xa như root, thành viên nhóm, yêu cầu mật khẩu)
  • Kiểm tra tất cả các yêu cầu của người dùng (tư cách thành viên trong các nhóm đặc quyền, các yêu cầu hợp lệ, ô, SUID, SGID
  • và tất nhiên hướng dẫn Sans là một nguồn thực sự tốt!
57
Rory Alsop

Không gian "Máy chủ Linux" bao gồm một phạm vi phân phối , mỗi vùng có chiến lược cập nhật cấu hình mặc định riêng, chuỗi công cụ quản lý gói và cách tiếp cận với các dịch vụ mặc định và cổng mở. Ngoài ra còn có một loạt các kịch bản triển khai: làm cứng máy chủ web hoàn toàn khác với việc làm cứng bộ định tuyến dựa trên linux. Bạn có thể nhận được lời khuyên tốt hơn bằng cách hỏi về các bản phân phối và các trường hợp sử dụng mà bạn quan tâm nhất.

Theo đó, tôi sẽ chỉ giải quyết Bảo mật Ubuntu ở đây bằng cách chỉ vào một số nguồn có liên quan, mặc dù nhiều điều này sẽ hữu ích cho các tình huống khác.

Giới thiệu tốt ở đây: http://www.andrewault.net/2010/05/17/securing-an-ub Ubuntu-server /

Cộng đồng đã mô tả một số mặc định chặt chẽ hơn và các mẹo cứng ở đây nghiêng về bảo mật hơn ngay cả khi khả năng sử dụng bị ảnh hưởng: https://help.ub Ubuntu.com/community/StricterDefaults

Dưới đây là một ma trận và tóm tắt các tính năng bảo mật của Ubuntu, để giúp mọi người nghiên cứu danh sách kiểm tra mà bạn tìm thấy ở nơi khác: https://wiki.ub Ubuntu.com/Security/Features

Để xem cách bạn có thể tự thực hiện một số bài kiểm tra, hãy xem bản ghi trong http://people.canonical.com/~kees/demo/ec2-session.log được điều khiển bởi mã trình diễn trong http://people.canonical.com/~kees/demo/

Tóm tắt về những gì bạn cần để làm những gì tại: https://wiki.ubfox.com/Security/Priv đặc biệt

Nhóm bảo mật cho Ubuntu có một số nội dung hữu ích khác trên wiki của họ: https://wiki.ubfox.com/Security/

25
nealmcb

Việc làm cứng hệ thống theo thời gian là một kỳ công có lợi, nhưng điều thực sự xác định việc triển khai máy chủ một cách an toàn là những gì được thực hiện để duy trì trạng thái đó.

Chọn bất kỳ danh sách kiểm tra chất lượng nào (xem các liên kết bên dưới) nêu chi tiết các sửa đổi cấu hình được đề xuất để tăng cường bảo mật cho máy chủ của bạn và áp dụng những thay đổi có ý nghĩa cho thiết lập của bạn. Tốt hơn hết, hãy mã hóa các đề xuất qua Con rối ( http://www.puppetlabs.com/ ): đây là một chiến thắng, bạn sẽ triển khai an toàn hơn và bạn ' sẽ cho mình một cơ hội chiến đấu để duy trì các cấu hình cứng theo thời gian.

Phần thưởng : Thực hiện mô hình tấn công/mô hình hóa mối đe dọa ( http://taosecurity.blogspot.com/2007/06/threat-model-vs -attack-model.html ) để tập trung nỗ lực phòng thủ của bạn. Ví dụ, hãy tự hỏi mình những câu hỏi như:

Làm thế nào kẻ tấn công có thể truy cập vào các máy chủ này?
[.___.] Tôi có thể làm gì để giảm cơ hội thành công?

Dịch câu trả lời của bạn cho câu hỏi thứ hai để thay đổi cấu hình cụ thể (làm cứng) hoặc bằng cách thực hiện các điều khiển bổ sung. Trò chơi, tất nhiên, là để giảm thiểu khả năng thành công của bất kỳ ai đe dọa thành công. Điều này cần có thời gian, nhưng bạn sẽ cảm thấy tốt hơn về những thay đổi mà bạn đã thực hiện và tại sao lại thay đổi một cách ngớ ngẩn vì ai đó nói rằng điều đó là tốt để làm.

Tuyệt vời khi đăng nhập và xem xét . Phòng ngừa luôn thất bại - để chống lại thực tế này, bạn muốn tăng cường đăng nhập để bạn có thể xác định và phản ứng nhanh hơn với các sự cố và phục hồi nhanh hơn. Công cụ yêu thích của tôi để tăng cường phòng thủ và tăng cường đăng nhập vào Linux là OSSEC ( http://www.ossec.net/ ). Dành thêm thời gian để tùy chỉnh các quy tắc đi kèm với OSSEC để xem những thứ bạn quan tâm hơn là một hoạt động đáng giá (ví dụ: liệt kê các thư mục và tệp bổ sung cần được cảnh báo nếu chúng được sửa đổi, thêm quy tắc hoặc nâng cao mức độ nghiêm trọng của các quy tắc hiện có để cảnh báo bạn về việc xác thực dị thường, thêm quy tắc để theo dõi các thay đổi đối với bảng người dùng mysql ( http://blog.rootshell.be/2011/ 01/07/auditing-mysql-db-vẹn-with-ossec / ), ad infinitum). Richard Bejtlich vừa đăng một mục blog kịp thời có tiêu đề Bảy dự án nguồn mở tuyệt vời dành cho người bảo vệ ( http://taosecurity.blogspot.com/2011/01/seven-cool-open- nguồn-dự án-for.html )

Để hỗ trợ xác minh liên tục các phòng thủ máy chủ của bạn, bạn có thể chạy Nessus ( http://www.nessus.org/nessus/ ) trên cơ sở đang hoạt động với Trung tâm cho các mẫu kiểm toán Linux Security (CIS). Sử dụng các kết quả làm cơ sở, theo dõi các thay đổi và khắc phục các điểm yếu được phát hiện.

Để tóm tắt lại:

1) Dựa vào danh sách kiểm tra tăng cường bảo mật được tôn trọng hiện có để giúp bạn phác thảo một danh sách tùy chỉnh phù hợp với môi trường của bạn (hy vọng sau khi thực hiện các hoạt động mô hình hóa tấn công/đe dọa và chọn khung quản lý cấu hình)

2) Tăng khả năng quan sát: tăng cường ghi nhật ký (tức là điều chỉnh hệ thống để tạo đủ nhật ký cho các hoạt động bạn muốn quan sát), triển khai HIDS (ví dụ OSSEC ), triển khai các công cụ phân tích nhật ký (ví dụ logwatch - http://sourceforge.net/projects/logwatch/ ), có thể nắm bắt các luồng mạng (ví dụ: qua softflowd =)

3) Làm cho ai đó có trách nhiệm trở thành một người bảo vệ kiên quyết của các hệ thống

4) Liên tục kiểm tra và kiểm tra để xác minh những gì bạn nghĩ đang được thực hiện đang được thực hiện

điểm chuẩn/danh sách kiểm tra tài nguyên :.

http://cisecurity.org/ Trung tâm An ninh Internet (CIS) là một doanh nghiệp phi lợi nhuận có Bộ phận Đo lường và Đo lường chuẩn giúp các tổ chức giảm rủi ro kinh doanh và gián đoạn thương mại điện tử do thiếu kỹ thuật kiểm soát an ninh. Bộ phận cung cấp cho các doanh nghiệp các tiêu chuẩn thực hành tốt nhất về cấu hình bảo mật, cũng như các nguồn lực để đo lường trạng thái bảo mật thông tin và đưa ra các quyết định hợp lý về đầu tư bảo mật.

http://iase.disa.mil/stigs/checklist/ Cơ quan hệ thống thông tin quốc phòng (DISA)

http://web.nvd.nist.gov/view/ncp/reposeective
[.__.] http://csrc.nist.gov/fdcc/faq-common_security_configurations.html
[.__.] Chương trình Danh sách kiểm tra quốc gia (NCP), được xác định bởi NIST SP 800-70 Rev. 1, là kho lưu trữ danh sách kiểm tra bảo mật công khai (hoặc điểm chuẩn) của chính phủ Hoa Kỳ cung cấp hướng dẫn chi tiết cấp thấp về cài đặt cấu hình bảo mật của các hệ điều hành và ứng dụng.

21
Tate Hansen

Bạn có thể làm điều tồi tệ hơn nhiều so với bắt đầu với danh sách kiểm tra Sans .

Chỉ trích duy nhất của tôi về điều này là nó không chú trọng đủ vào việc quản lý bảo mật của một hệ thống được triển khai - đặc biệt đảm bảo các bản vá của nhà cung cấp được cập nhật, lên kế hoạch cho một mô hình cấp phép tốt, quản lý báo cáo ngoại lệ IDS, v.v.

17
symcbean

Đầu tiên, bạn phải tìm ra mục đích của máy chủ và mô hình mối đe dọa mà bạn đang cố gắng chống lại. Đây có phải là máy chủ sử dụng một lần không? Nhiều người dùng có quyền truy cập? Nếu nhiều người dùng có quyền truy cập, bạn có tin tưởng tất cả họ hay không?

Hãy để tôi cho rằng máy chủ này chỉ được sử dụng cho các dịch vụ mạng và bạn không phải đối phó với mối đe dọa tấn công từ ai đó có tài khoản trên máy của bạn. Dưới đây là các bước tôi thực hiện:

  • Kích hoạt tường lửa. Tôi sử dụng iptables để thiết lập tường lửa cục bộ. Tôi sử dụng chính sách default-deny: tất cả các kết nối đến đều bị chặn theo mặc định, trừ khi được cho phép rõ ràng trong chính sách tường lửa. Tôi cho phép các kết nối đến các dịch vụ dự định được xuất ra thế giới (ví dụ: cổng 25 nếu đây là máy chủ thư, cổng 80/443 nếu đây là máy chủ web, v.v.). iptables có hỗ trợ tuyệt vời cho việc lọc trạng thái, do đó, khi kết nối được thiết lập, tất cả các gói được liên kết với kết nối đó đều được cho phép.

  • Nâng cấp tất cả các gói và bật cập nhật tự động. Tôi cập nhật bản phân phối Linux của mình lên phiên bản mới nhất của tất cả các gói (yum upgrade trên Fedora, nhưng sử dụng bất cứ thứ gì phù hợp với cấu hình của bạn). Tôi cũng thiết lập một tập lệnh cron để tự động lấy và cài đặt các bản cập nhật mỗi ngày một lần (yum -y upgrade trên Fedora). Tôi nhận ra rằng một số hệ thống có kinh nghiệm có thể đề xuất chống lại các bản cập nhật tự động, bởi vì có nguy cơ bản cập nhật phá vỡ một số dịch vụ; bạn sẽ phải cân nhắc rủi ro đó với rủi ro vi phạm an ninh do gói lỗi thời. Cá nhân, tôi thấy sự dễ dàng và thuận tiện của các bản cập nhật tự động đáng để mạo hiểm với các dịch vụ bị hỏng, nhưng đây có thể không phải là câu trả lời đúng trong tất cả các cài đặt vận hành.

  • Kích hoạt SELinux. SELinux cung cấp lớp phòng thủ thứ hai chống lại các cuộc tấn công vào các dịch vụ bị lộ. Nó đôi khi có thể là một chút đau đớn (đôi khi nó gây ra vấn đề cho tôi, phá vỡ một dịch vụ theo cách khó gỡ lỗi), nhưng đối với một thiết lập quan trọng về bảo mật, tôi nghĩ rằng nó đáng giá.

  • Thiết lập SSH cho quản trị từ xa. Bạn nên thiết lập SSH, để bạn có thể quản trị máy từ xa. Tôi khuyên bạn nên tạo khóa riêng DSA ở phía máy khách, mã hóa nó bằng cụm mật khẩu, cài đặt khóa chung tương ứng trong tệp ủy quyền trên máy chủ và đăng nhập bằng khóa riêng. Bạn có thể muốn tùy chỉnh sshd_config tập tin cấu hình trên máy chủ, quá. Xem xét việc vô hiệu hóa Mật khẩu và yêu cầu mọi người đăng nhập bằng khóa chung. Xác thực mật khẩu có thể là một dự phòng hữu ích trong trường hợp có sự cố với khóa riêng của bạn, nhưng nó cũng có rủi ro lớn hơn, vì con người thường chọn mật khẩu có thể đoán được. Nếu bạn có những người dùng khác trên hệ thống của mình, những người bạn không thể tin tưởng để chọn mật khẩu chất lượng rất cao, bạn có thể vô hiệu hóa Mật khẩu. Nếu đó chỉ là bạn và bạn có độ tin cậy rất cao đối với tất cả mật khẩu của mình, bạn có thể để nó được bật. Tôi không ngăn chặn root đăng nhập thông qua SSH, nhưng bạn có thể cảm thấy khác.

  • Nếu bạn có nhiều sysadins, hãy thiết lập tài khoản cho chúng. Hoặc cung cấp cho mỗi người trong số họ Sudo quyền truy cập hoặc thiết lập một tài khoản root riêng cho mỗi sysadmin.

  • Kích hoạt DNSSEC. Tôi định cấu hình máy chủ của mình để chạy máy chủ DNS bộ đệm ẩn cục bộ xác thực tên máy chủ với DNSSEC bất cứ khi nào có thể, để giảm nguy cơ giả mạo DNS.

Sau đó, đối với mỗi dịch vụ được tiếp xúc với thế giới, tôi thực hiện các biện pháp phòng ngừa để bảo đảm dịch vụ đó. Chẳng hạn, tôi kích hoạt mật mã (ví dụ: STARTTLS cho máy chủ thư) và máy chủ chroot hoặc hộp cát bất cứ nơi nào có thể. Tuy nhiên, các chi tiết cụ thể sẽ thay đổi từ dịch vụ này sang dịch vụ khác. Do đó, tôi khuyên bạn nên gửi một câu hỏi riêng cho từng dịch vụ mà bạn dự định chạy, yêu cầu tư vấn về cách khóa dịch vụ đó.

Nếu bạn đang tìm kiếm một bản phân phối Linux đã được áp dụng rất nhiều phần cứng, tôi rất có thể khuyên bạn nên Openwall Linux .

(Nhận xét: Nếu bạn cung cấp cho người dùng không đáng tin cậy trên máy chủ của mình, thì việc thắt chặt bảo mật sẽ trở nên khó khăn hơn nhiều: bề mặt tấn công lớn hơn nhiều. Nếu đó là mối lo ngại cho bạn, tôi khuyên bạn nên hỏi một câu hỏi riêng về cách khóa máy của bạn máy chủ để bảo vệ chống lại các cuộc tấn công của người dùng cục bộ bằng tài khoản trên máy chủ của bạn, vì tập hợp các kỹ thuật để thực hiện điều đó khá khác nhau.)

13
D.W.

Và những gì về các bản vá kernel Grsecurity/PAX, chúng bao gồm các tính năng rất Đẹp để làm cứng máy chủ ở cấp kernel.

Tóm lược:

  • Bảo vệ đống và chồng tràn
  • Ẩn quy trình người dùng khác
  • Danh sách kiểm soát truy cập dựa trên vai trò
  • Chroot cứng
  • / Proc, FIFO và hạn chế dmesg
  • Khả năng ghi nhật ký nâng cao
6
Jerry Jacobs

Dành cho Red Hat , NSA có lời khuyên về việc làm cứng. Xem Hướng dẫn cấu hình cho Red Hat Enterprise Linux 5 - NSA/CSS .

Chúng cũng hữu ích cho CentOS và các dẫn xuất khác.

4
nealmcb

Đối với RHEL, Điểm chuẩn CIS Red Hat Enterprise Linux 5 từ Trung tâm bảo mật Internet trông giống như một tài nguyên tốt.

3
nealmcb

Nếu bạn đang cố gắng bảo mật hệ thống của mình bằng cách gỡ cài đặt các gói/dịch vụ không cần thiết thì bạn đã gặp vấn đề lớn hơn. Những gói này không nên được cài đặt ở nơi đầu tiên.

Bạn nên cài đặt một hệ thống tối giản và chỉ thêm các gói mà bạn thực sự cần. Điều tương tự áp dụng cho hạt nhân của bạn. Biên dịch kernel của riêng bạn chỉ với các tính năng bạn cần. Không sử dụng hạt nhân phân phối của bạn với sự hỗ trợ cho mọi thứ (dù sao bạn cũng sẽ không cần đến 95%)

2
Martin Vegter