2009-05-25 46 views

Trả lời

25

Bạn có thể sử dụng giống như Wireshark để xem các gói tại họ đang truyền qua mạng

+0

+1 Đây là một công cụ tuyệt vời cho điều đó. – BenAlabaster

+1

+1, tạm biệt với câu trả lời trễ của tôi. – karim79

+1

+1 khác cho Wireshark. Đây chính xác là những gì tôi sử dụng để chứng minh cho khách hàng khi họ hỏi liệu một cái gì đó có an toàn hay không. –

6

tôi sẽ thiết lập các Encryption Force Nghị định thư true and Trust Certificate Server để đúng trong chuỗi kết nối db. Máy chủ không thể thiết lập kết nối nếu máy chủ không thể cung cấp cho bạn kết nối được mã hóa theo yêu cầu. Có một article bao gồm mã hóa với máy chủ sql 2005 trở lên.

Thử nghiệm đơn giản là thử kết nối có và không có mã hóa và không thành công khi nó phát ra loại kết nối không mong muốn. sau đó nó lên đến DBA, CNTT hoặc bạn cấu hình máy chủ để phù hợp với yêu cầu của bạn.

+2

+1 cho câu trả lời của bạn. Trái ngược với tùy chọn Wireshark, đưa ra một thử nghiệm để chứng minh rằng kết nối không được mã hóa sẽ bị từ chối cũng giúp chứng minh rằng các yêu cầu bảo mật ứng dụng không thể bị suy giảm chỉ bằng cách thay đổi các thiết lập ở phía máy chủ cơ sở dữ liệu. –

+2

Bảo mật tích hợp nghĩa là bạn đang sử dụng xác thực NTLM hoặc Kerberos; nó không có nghĩa là lưu lượng truy cập của bạn được mã hóa. – Andomar

+0

@andomar là chính xác --- Đó là sự hiểu biết của tôi rằng các tín hiệu (bất kể chế độ tích hợp hoặc hỗn hợp) sẽ được mã hóa --- đó là phần còn lại của lưu lượng truy cập mà tôi đang nghĩ tới. –

11

Bạn kiểm tra cột encrypt_option của sys.dm_exec_connections DMV. Bằng cách này, bạn không chỉ có thể chứng minh được mã hóa, nhưng bạn cũng có thể xác thực trong ứng dụng của mình lúc khởi động. Để thực thi mã hóa, bạn thực hiện theo các phương pháp được mô tả trong số MSDN How To: Enable Encrypted Connections to the Database Engine này. Nếu máy khách hoặc máy chủ buộc mã hóa và chứng chỉ được cung cấp và máy khách chấp nhận chứng chỉ máy chủ thì kết nối sẽ được mã hóa. Để xác thực rằng lưu lượng được mã hóa, bạn có thể sử dụng công cụ netmon.exe tích hợp (phải được cài đặt từ các thành phần hệ thống quảng cáo/loại bỏ), tải xuống các cải tiến Microsoft Network Monitor 3.2 hoặc các công cụ của bên thứ ba khác.

Thay vào đó, trang web triển khai có thể thực thi mã hóa IPSec.

+1

+1 cho việc mã hóa_option dưới dạng kiểm tra nhanh đơn giản. Là một bản sao và dán một lớp lót, sử dụng: 'SELECT encrypt_option FROM sys.dm_exec_connections WHERE session_id = @@ SPID'. Không chứng minh ứng dụng được triển khai của bạn đang sử dụng mã hóa tất nhiên, nhưng xác nhận SQL Server _can_. – hlascelles

+0

@hlascelles: 'encrypt_option' là giá trị thực tế. Nếu nó được mã hóa, điều đó có nghĩa là ứng dụng * không * sử dụng lưu lượng được mã hóa. Vào phiên đó, ít nhất (thường là trên tất cả các quá khác). –

+0

Bạn đã chết ngay. Xin lỗi, tôi đã đến nó từ một quan điểm quản trị của xem: thử nghiệm một máy chủ SQL triển khai từ một máy trạm (ví dụ như kiểm tra giấy chứng nhận). Như @Remus nói, thêm dòng trên vào mã được triển khai của bạn để kiểm tra thời gian chạy (sử dụng mệnh đề WHERE để đảm bảo nó là kết nối thực tế của bạn). – hlascelles

0

Để đảm bảo rằng mã hóa đang được sử dụng, bạn cần phải enable the force encryption option trên máy chủ.

Mã hóa phía máy khách không bắt buộc. Phía máy chủ là bắt buộc.

Khi dịch vụ SQL Server bắt đầu, nó sẽ dừng nếu nó không thể đọc chứng chỉ hoặc có những trở ngại khác. Nó sẽ không chấp nhận các kết nối không được mã hóa.

Để trả lời, tôi đã sử dụng gói sniffer đầu tiên tôi sử dụng mã hóa để kiểm tra, sau đó tôi chỉ dựa vào thực tế là mã hóa phía máy chủ là bắt buộc và SQL sẽ không bắt đầu.

For SQL 2000, KB 276553

Hãy nhớ rằng có một SQL Server giới hạn hiện tại nếu bạn kích hoạt mã hóa trên máy chủ. Mã hóa sẽ là cho tất cả các kết nối đến. Nếu bạn bật mã hóa trên máy khách máy tính, tất cả các kết nối gửi đi từ máy khách đó thử để thực hiện kết nối được mã hóa với bất kỳ SQL Máy chủ nào.

A KB search for SQL 2005

Cuối chỉnh sửa:

Sử dụng một phiên bản cũ của khách hàng MS JDBC: nó không thể xử lý mã hóa phía máy chủ ...

+0

Bởi "bạn cần phải kích hoạt mã hóa trên máy chủ," bạn có nghĩa là "bạn cần phải kích hoạt các thiết lập kết nối mã hóa yêu cầu trên máy chủ"? Nếu cài đặt đó không được đặt thành true, máy chủ sẽ cho phép cả các kết nối được mã hóa và không được mã hóa đầu tiên. –

+0

@BenGribaudo Khi hộp kiểm được bật trong Cấu hình máy chủ SQL, thì máy chủ chỉ chấp nhận các kết nối được mã hóa. Mã hóa phía máy chủ là bắt buộc khi được chọn. Tất cả các máy chủ của tôi đều có. – gbn

1

Có một công cụ được đánh giá thấp khác từ chính Microsoft: 'Microsoft Network Monitor'. Về cơ bản điều này là rất giống với wireshark với ngoại lệ là một số giao thức MS cụ thể có phân tích cú pháp tốt hơn và hỗ trợ trực quan hơn wireshark chính nó và rõ ràng nó sẽ chỉ chạy dưới cửa sổ ;-).

Công cụ này khá cũ và trông bị bỏ hoang (không thấy một bản phát hành mới hơn) nhưng vẫn thực hiện tốt công việc và ngữ pháp để xác định giao thức mới khá gọn gàng/thú vị - vì vậy điều này vẫn có rất nhiều quyền lực cho tương lai. mnm 3.4 about dialog

Ví dụ Phân tích - Recording được lọc cho TDS - vì vậy các gói khác được discared chủ yếu:

Example Session for TDS (MSSQL)

Điều này cũng đúng cho các kết nối sql server. Các MNM thậm chí có thể hình dung các resultsets đi qua dây - khá gọn gàng. Tuy nhiên wireshark như đã đề cập ở trên sẽ là đủ để xác nhận mã hóa và giấy chứng nhận áp dụng trên dây chính nó. Có nghĩa là nó có thể hiểu được TDS-Protocoll đầy đủ.

Xử lý TLS

Ngoài ra với một phần mở rộng (được gọi là chuyên gia) 'NmDecrypt' và giấy chứng nhận quyền (bao gồm các phím riêng) - nó có thể giải mã protocolls - khá tốt đẹp cho TDS trong đó sử dụng TLS INSIDE của TDS - không có thắc mắc - không ai đã thực sự thực hiện điều đó được nêu như một protocoll hỗ trợ đầy đủ cho Wireshark;)

Liên kết cho các công cụ:

Các vấn đề liên quan