Đảm bảo IPM BMM SuperMicro


16

Gần đây tôi đã mua một bo mạch chủ SuperMicro X8DTU-F, có BMC tích hợp, về cơ bản chạy hệ thống IPMI. Hóa ra đó là một hệ thống Linux nhỏ chạy trên bộ xử lý ARM.

Thật không may, nó đang chạy rất nhiều phần mềm, phần lớn tôi không cần và tôi không có khả năng đặt nó phía sau tường lửa. Tuy nhiên, tôi muốn chức năng IPMI. Có ai đã sử dụng một trong số này có một số gợi ý cụ thể về cách bảo mật thứ này không? Nó khởi động từ hệ thống tập tin ROM về cơ bản và thậm chí dường như không có bất kỳ móc nối nào để tắt bất kỳ máy chủ nào khác mà nó chạy ....

Tôi cũng quan tâm đến cách tôi có thể xác minh danh sách tên và mật khẩu có thể được sử dụng để truy cập hệ thống thông qua tất cả các dịch vụ khác nhau. Mặc định là ADMIN/ ADMIN, nhưng không có tệp nào trong / conf hoặc / etc có 'ADMIN' trong đó, điều này làm tôi lo lắng. Có /conf/shadow/conf/webshadowcác tệp, với ID 'thử nghiệm' bí ẩn trong đó, điều đó cũng không khiến tôi cảm thấy đặc biệt thoải mái.


Tôi vẫn chưa tìm thấy mối tương quan giữa nội dung của bóng tối, webshadow và những người dùng thực sự hợp lệ. Người dùng mới được thêm thông qua quản lý BMC không xuất hiện trong các tệp này. Hơn nữa, người dùng "ẩn danh", "test1", "test2" có vỏ không tồn tại trên hệ thống tệp.
Daniel Lawson

2
Đồng thời xem hướng dẫn của Dan Farmer tại Thực tiễn tốt nhất về bảo mật IPMI . Ông đã phát hành một bài báo gần đây chi tiết một số vấn đề bảo mật quan trọng với IPMI có tiêu đề ipmi: tàu chở hàng đến địa ngục .
Stefan Lasiewski

1
Cảm ơn vì liên kết tuyệt vời đó. Tóm tắt ngắn gọn về các vấn đề bảo mật là tại fish2.com/ipmi/itrain-gz.html và tóm tắt rất ngắn gọn là "bạn hoàn toàn sai lầm ." Thở dài.
Curt J. Sampson

Câu trả lời:


6

Lý tưởng nhất, mạng quản lý của bạn sẽ là một mạng khác với mạng khác của bạn hoặc ít nhất là một vlan khác với quyền truy cập được định tuyến hạn chế.

Các hệ thống này không thực sự chạy nhiều dịch vụ mặc dù:

PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
443/tcp  open  https
555/tcp  open  dsf
5120/tcp open  unknown
5900/tcp open  vnc
5988/tcp open  unknown
MAC Address: 00:30:48:D9:3A:71 (Supermicro Computer)

(và UDP / 623 cho chính IPMI)

Hầu hết trong số này là cần thiết nếu bạn muốn thực hiện bất kỳ loại quản lý từ xa. Nếu bạn không muốn thực hiện quản lý từ xa, thì bạn nên xem xét không kích hoạt bộ điều khiển IPMI hoặc mua bảng X9DTU thay thế (-F biểu thị "BMC tích hợp")

Nếu bạn muốn thực hiện quản lý từ xa đầy đủ, không thể chạy bộ điều khiển IPMI của bạn trên một mạng khác và vẫn muốn tắt một số quyền truy cập, thì bạn luôn có thể có bộ điều khiển IPMI để thực thi các lệnh iptables. Bạn có thể kịch bản đăng nhập ssh để thực thi các lệnh hoặc yêu cầu Supermicro cho devkit cho BMC và xây dựng hình ảnh mới với tập lệnh iptables tùy chỉnh.

CẬP NHẬT

Tôi đã có cái nhìn khác về các hệ thống của chúng tôi ở đây và hệ thống tập tin / conf được gắn rw. Không có đoạn script init nào gọi bất cứ thứ gì trực tiếp trong / conf (mà tôi có thể thấy), nhưng có một tệp crontab. Vì vậy, tôi đoán bạn có thể sao chép trong tập lệnh iptables và chỉnh sửa / conf / crontab để gọi nó ở một khoảng thời gian phù hợp. Bạn muốn nó được chạy càng sớm càng tốt trên BMC init, nhưng bạn không nhất thiết muốn nó chạy mỗi phút. Hoặc có thể bạn không quan tâm.


Tôi muốn có một mạng riêng để quản lý, nhưng thật không may, điều này sẽ xâm nhập vào trung tâm dữ liệu của người khác và tôi không thể có điều đó. Về phần quản lý, tất cả những gì tôi thực sự muốn là https và ssh.
Curt J. Sampson

Bạn sẽ không bao giờ, bao giờ muốn KVM qua lan?
Daniel Lawson

Bạn có thể có một đơn vị tường lửa riêng trước máy chủ của mình tại DC. Điều đó sẽ phần nào giải quyết vấn đề. Bạn đã yêu cầu hỗ trợ Supermicro để được hỗ trợ về điều này? Tôi thấy họ khá nhanh nhạy
Daniel Lawson

Không. Tôi không cần KVM qua LAN vì BIOS, Grub và nhân Linux đều hỗ trợ bảng điều khiển nối tiếp.
Curt J. Sampson

5

Sử dụng /conf/crontab, như dlawson chỉ ra, nghe có vẻ là một ý tưởng tuyệt vời đối với tôi. Điều này cho phép tôi chạy tập lệnh một lần một phút để đảm bảo mọi thứ trừ http và ssh bị tắt:

/etc/init.d/cdserver stop
/etc/init.d/fdserver stop
/etc/init.d/cim_sfcb stop
/etc/init.d/webgo stop

Điều đó vẫn để lại cho tôi một máy chủ web có kiểm soát truy cập dựa trên mật khẩu (tôi có thể thấy không có cách nào để xác thực chứng chỉ ứng dụng khách) và ai biết lỗ hổng từ xa là gì. Tắt nó đi khi tôi không sử dụng nó (phần lớn thời gian) có vẻ như là một giải pháp hợp lý; thêm một mục crontab để tắt nó cứ sau năm hoặc mười phút sẽ bắt được những trường hợp mà ai đó quên tắt nó khi anh ta hoàn thành.

Trình nền ssh là một phiên bản của dropbear dường như được sửa đổi khá nhiều. Nó đọc tên người dùng và mật khẩu văn bản gốc từ /conf/PMConfig.dat(cũng được sử dụng bởi máy chủ web), đăng nhập bất kỳ tên và mật khẩu hợp lệ nào với tư cách là người dùng root và bỏ qua ~/.ssh/authorized_keystệp. Vấn đề cuối cùng này là gây phiền nhiễu; nó buộc bạn phải cho phép đăng nhập mật khẩu và mở khả năng backtime tùy thuộc vào nơi - tất cả những gì nó nhận được tên và mật khẩu của nó.

Vì vậy, đó là vấn đề nan giải mà bạn phải đối mặt: bạn thực sự tin tưởng bao nhiêu semon daemon đã sửa đổi này được cài đặt trên một hệ thống được thiết kế khá rõ ràng bởi các nhà phát triển chưa được bảo mật? Không có gì nhiều, với số lượng bit bị hỏng của cruft tôi đã thấy trong các tập lệnh shell của họ. Có các quy ước đặt tên bất thường (/etc/rc?.d/sshd là một liên kết tượng trưng đến /etc/init.d/ssh), một lượng lớn mã dường như không được sử dụng và chỉ có trong tập lệnh khởi động ssh, chẳng hạn như các /conf/portcfg_sshtập tin và thậm chí các restartlệnh hoàn toàn bị hỏng. (Đừng thử sử dụng những thứ này; sshd sẽ không khởi động lại và bạn sẽ bị lừa trừ khi bạn có thông tin đăng nhập hiện có. Chúng tôi đã khởi động lại BMC và cuối cùng phải làm lại nó.)

Tùy chọn tốt nhất mà tôi có thể nghĩ đến, nếu ai đó sẽ sử dụng thứ đó, là bắt đầu ssh trên một cổng thay thế bằng cách sử dụng công việc định kỳ, vì vậy ít nhất nó sẽ ít xuất hiện trong một portscan.

Thành phần cuối cùng là các cổng quản lý mạng IPMI; Tôi không thể thấy cách tắt chúng đi.


Hầu hết các mối quan tâm của bạn về sửa đổi có lẽ không phải là một vấn đề. Dropbear sử dụng pam, sử dụng libpamipmi cho auth - Tôi chưa thấy bằng chứng nào cho thấy nó thực sự đọc mật khẩu Cleartext trực tiếp. Libpamipmi sẽ thực hiện một cuộc gọi ipmi đến ngăn xếp ipmi và đó có thể là đọc mật khẩu Cleartext, nhưng quan điểm của tôi là nó không giống như daemon dropbear đã bị vặn. Tuy nhiên, tôi rất muốn nghe trong bất kỳ bằng chứng dứt khoát nào mà bạn phải làm ngược lại.
Daniel Lawson

Chà, chúng tôi biết rằng nó đã bị phá vỡ ở chỗ không có cách nào để a) sử dụng các khóa, thay vì mật khẩu và b) vô hiệu hóa xác thực mật khẩu.
Curt J. Sampson

4

Một điều cần xem xét khi bảo mật Supermicro IPMI là máy chủ ssh. Các phiên bản cũ hơn của mã IP8 X8SIL-F được chấp nhận kết nối ssh bất kể mật khẩu nào được cung cấp. Phần mềm sau đó sẽ kiểm tra mật khẩu và từ chối hoặc chấp nhận kết nối, nhưng có một cửa sổ ngắn để tạo cổng ssh về phía trước. Mọi người đã nhận được thư rác / lạm dụng khiếu nại cho IPMI IP của họ vì điều này . Đối với bo mạch chủ X8SIL-F, phiên bản phần mềm 2.60 IPMI đã khắc phục sự cố (có thể đã được khắc phục trước đó, mục nhập thay đổi của 2.54 có vẻ như có thể xảy ra).

Vấn đề thứ hai là một người dùng ẩn danh với mật khẩu mặc định. Người dùng ẩn danh dường như được sửa trong phiên bản phần mềm 2.22.


2

Có một mẹo nhỏ để kích hoạt HTTPS cho giao diện web của IPMI.

Nếu phần sụn IPMI của bạn hỗ trợ điều đó (phần sụn 2.04 của tôi cho X8DTH-iF hỗ trợ), trước tiên, bạn có thể bật quyền truy cập HTTPS bằng cách đi tới Cấu hình -> SSL, tải lên hai tệp PEM (chứng chỉ và khóa riêng) khởi động lại mô-đun IPMI của bạn.

Cuối cùng, bạn có thể truy cập giao diện web của IPMI bằng https: // bmc-ip-hoặc-hostname / . Tôi không thể nói rằng HTTPS hoạt động chậm hơn HTTP.


0

Có ai trong số các bạn đã cố gắng bảo mật mọi thứ với iptables không? Có vẻ như iptables đã được cài đặt và tôi muốn tạo một quy tắc từ chối mọi thứ được chấp nhận từ một số IP đáng tin cậy để đảm bảo an toàn hơn một chút ... Nhưng khi tôi đọc ở trên, không có đoạn script nào được đọc từ / config. Là crontab là lựa chọn duy nhất? Và nếu bạn làm hỏng iptables thì sao?


1
Như tôi đã nói trước đó, tốt hơn hết là bảo mật bộ điều khiển IPMI của bạn ra bên ngoài: bằng cách đặt nó trên một mạng vlan hoặc mạng vật lý hoàn toàn riêng biệt hoặc được bảo vệ bởi tường lửa biên. Mô hình đặc biệt này của bộ điều khiển IPMI / BMC xảy ra để chạy linux, sau đó sẽ nhắc bạn với khái niệm rằng bạn có thể bảo mật nó bằng iptables. Tuy nhiên, thực tế là phần lớn BMC / IPMI / whateveryoucall mà họ không có nhiều, hoặc bất cứ điều gì, theo cách tường lửa, và vì vậy bạn không nên dựa vào nó. Hãy tiết kiệm cho mình những rắc rối và coi mạng IPMI của bạn là riêng tư, bảo mật và không bị chặn.
Daniel Lawson

1
Tôi không đồng ý rằng bảo mật bên ngoài bộ điều khiển IPMI của bạn là "tốt hơn"; tường lửa và những thứ tương tự dễ bị lỗi bảo mật hơn là máy chủ được bảo mật đúng cách ngay từ đầu. Tuy nhiên, nếu bạn có khả năng sử dụng một mạng riêng, đó là một điều tốt, và trong trường hợp các thiết bị IPMI như thế này, nó có vẻ gần như là điều cần thiết.
Curt J. Sampson

0

Làm thế nào bạn xem hệ thống tập tin? Nếu tôi telnet đến cổng 22, tôi có thể thấy dropbear đang chạy, nhưng nếu tôi cố gắng SSH với nhiều tên người dùng khác nhau thì nó không nhắc mật khẩu. Tôi đã thêm một người dùng mới với các đặc quyền của Quản trị viên, nhưng SSH sẽ không phản hồi cho người dùng đó. Tôi đang sử dụng bo mạch chủ Supermicro X7SPA-HF có chip Winbond Hermon IPMI 2.0, sửa đổi phần sụn 01,29, thời gian xây dựng 2009-12-31.


2
Tôi đã làm ssh -v, để xem những gì đang diễn ra, đã thấy rằng nó đang cố gắng Xác thực khóa công khai. Tôi đã làm cho nó hoạt động bằng cách vô hiệu hóa điều đó.

Tôi hiện đang ở ATEN SMASH-CLP System Management Shell, phiên bản 1.00
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.