Câu hỏi Nhận tường lửa của cửa sổ để bỏ qua các bản dựng thử nghiệm


Tôi có một hệ thống tích hợp liên tục chạy trên máy tính của mình  đó là đặt đầu ra xây dựng thử nghiệm vào các tệp tạm thời trên hệ thống.
Thật không may, điều này có nghĩa là Windows Firewall coi mỗi ứng dụng là một ứng dụng riêng biệt và xuất hiện một thông báo cho mỗi lần xây dựng, đó là một số trong quá trình chạy thử nghiệm.
Những xây dựng này giao tiếp độc quyền thông qua localhost, vì vậy hoàn toàn không có lý do gì để cho chúng thông qua tường lửa. Họ hiện đang sử dụng cổng 8081 nhưng có thể được đặt thành bất kỳ thứ gì.

Có cách nào để có được Windows Firewall chỉ đơn giản là để lại mọi chương trình theo %TEMP% bị chặn?

windows firewall has blocked some features of this app


2
2017-11-26 10:45


gốc




Các câu trả lời:


Bạn đang nhận được lời nhắc này vì không có quy tắc rõ ràng nào liên quan đến ứng dụng. Chính sách tường lửa mặc định cho phép các kết nối gửi đi không phù hợp với bất kỳ quy tắc nào, do đó hầu hết thời gian liên quan đến ứng dụng chấp nhận các kết nối gửi đến, bị chặn theo mặc định và do đó yêu cầu quy tắc tường lửa cụ thể tồn tại trước khi chúng được cho phép thông qua tường lửa.

Windows Firewall xem các bản dựng của bạn dưới dạng các chương trình riêng biệt vì chúng là các tệp thực thi khác nhau với các đường dẫn khác nhau.

Có một số cách có thể để giải quyết vấn đề này:

Có mỗi Build Set một Rule

Bạn có thể tạo một quy tắc tường lửa, hoặc là một phần của mã của ứng dụng, hoặc như là một bước sau xây dựng được thực hiện bởi công cụ CI của bạn.

Nếu bạn không muốn thêm mã cụ thể vào tệp thực thi (hoặc quá trình thiết lập) của bạn để thiết lập quy tắc, bạn có thể có công cụ CI của mình thực thi một kịch bản PowerShell tương tự như đoạn mã dưới đây

Kịch bản này loại bỏ bất kỳ quy tắc tường lửa xây dựng thử nghiệm hiện có nào và thêm quy tắc cho phép các kết nối gửi đến cho bản dựng hiện tại:

Param
(
    [Parameter(Mandatory=$true)]
    [string] $BuildPath
)
function Add-TestBuildFirewallRule
{
    Param
    (
        [Parameter(Mandatory=$true)]
        [string] $BuildPath
    )
    $existingRule = Get-NetFirewallRule -Name YourApp-LatestTestBuild -ErrorAction SilentlyContinue
    if($existingRule -ne $null)
    {
        Remove-NetFirewallRule -Name YourApp-LatestTestBuild
    }
    New-NetFirewallRule -Name "YourApp-TestBuild" -DisplayName "Latest Test Build" -Description "Allow the latest test build to accept incomming connections" -Enabled True -Direction Inbound -Program $BuildPath
}
Add-TestBuildFirewallRule -BuildPath $BuildPath

Để sử dụng tập lệnh được cung cấp, bạn cần phải:

  1. Cài đặt PowerShell v4.0 trên máy chủ CI. Đây là trường hợp của Windows 8x hoặc Server 2012
  2. Lưu tập lệnh trong thư mục mà công cụ CI của bạn đã đọc và thực thi quyền trong tệp với một .ps1 sự mở rộng
  3. Chạy kịch bản với tư cách Quản trị viên - điều này là bắt buộc vì việc thay đổi quy tắc tường lửa là một hoạt động đặc quyền
  4. Yêu cầu công cụ CI của bạn thực thi kịch bản bằng cách sử dụng lệnh tương tự như: powershell.exe -ExecutionPolicy Bypass Add-BuildFirewallRule.ps1 -BuildPath %FULL_BUILD_PATH Bạn cần phải thay thế %FULL_BUILD_PATH% trong lệnh trên với đường dẫn đầy đủ đến tệp thi hành được xây dựng - công cụ CI của bạn sẽ có thể thực hiện điều này khá dễ dàng.

Bỏ chặn Cổng mục tiêu

Bạn có thể có tường lửa Windows cho phép tất cả lưu lượng truy cập (hoặc tất cả lưu lượng truy cập của một giao thức nhất định) trên (các) cổng cụ thể. Điều này sẽ cho phép các bản dựng của bạn (và bất kỳ ứng dụng nào khác sử dụng cổng đó) để giao tiếp. Bạn có thể chỉ định rằng giao tiếp nên được giới hạn cho máy địa phương bằng cách sử dụng tường lửa của Windows với giao diện người dùng bảo mật nâng cao để tạo quy tắc, nhưng tôi vẫn sẽ tránh điều này nếu có thể.


1
2017-11-26 12:09





Thông qua nghiên cứu, tôi nhận ra rằng tôi đã gắn kết với tất cả các địa chỉ trên máy tính bao gồm cả các địa chỉ bên ngoài - đó là những gì đã kích hoạt tường lửa. Tôi đã thay đổi các bài kiểm tra để ràng buộc rõ ràng với 127.0.0.1và tường lửa đã không phàn nàn kể từ đó.


0
2017-11-28 16:20