반응형

안녕하세요 유똥입니다.
오늘은 파워쉘 GUI 프로그래밍을 이용하여 나만의 윈도우 방화벽 설정에 대하여 포스팅 진행하겠습니다.

윈도우 방화벽 설정 도구를 만들기 전에 앞서, 윈도우 방화벽에 관련하여 말씀드리겠습니다.

 Windows 방화벽 이란?

Windows 방화벽은 Windows 시스템과의 네트워크 데이터 전송을 필터링하고 유해한 통신 및 또는 이유를 시작하는 프로그램을 차단하도록 설계된 Microsoft에서 작성하고 Windows에 내장 한 보안 응용프로그램입니다.

 

 Windows 방화벽 역할

Windows 방화벽 은 컴퓨터 나 장치에 로컬 네트워크 나 인터넷의 공격에 대한 보호 기능을 제공하면서도 네트워크와 인터넷에 대한 액세스를 제공합니다. Windows 방화벽 은 컴퓨터로 전송되는 트래픽을 필터링하기 때문에 트로이 목마 공격 및 웜과 같이 네트워크 트래픽을 사용하여 자신을 확산시키는 악성 소프트웨어 유형을 차단할 수도 있습니다. 또 다른 유용한 기능은 Windows 컴퓨터로 나가는 연결과 들어오는 연결을 모두 필터링하고 원하지 않는 연결을 차단할 수 있습니다.

 

그럼 Windows 방화벽 도구 설정 관련하여 아래의 내용 참고 부탁드리겠습니다.

 

 사용 방법

기본 UI


 방화벽 설정

저의 경우 룰 네임은 HI 차단포트는 3389 차단 아이피는 110.10.189.117로 설정 하였습니다.

해당 설정 후 OK 버튼을 클릭하게 되면

 

아래와 같이 설정되신것으로 확인되실 겁니다.


 소스코드

Add-Type -AssemblyName System.Windows.Forms # 필요한 .net 라이브러리로드 (출력을 억제하기 위해 void 사용)
Add-Type -AssemblyName System.Drawing


$window = New-Object System.Windows.Forms.Form
$window.Width = 1200
$window.Height = 700
$window.Text = '이벤트 뷰어 로그 확인'

$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Multiline = $true
$textBox.Width = 650
$textBox.Height = 450
$textBox.location = new-object system.drawing.point(10,10)
$textBox.Font = "Microsoft Sans Serif,8"
$TextBox.Scrollbars = "both"
$TextBox.WordWrap = $false 
$window.controls.Add($textBox)

$InputBox8 = New-Object System.Windows.Forms.TextBox #  텍스트 상자 만들기 
$InputBox8.Location = New-Object System.Drawing.Size (740,35 ) # 기본 에 대한 텍스트 상자의 위치 (px) 창 가장자리 (길이, 높이) 
$InputBox8.Size = New-Object System.Drawing.Size (80,30 ) # 텍스트 상자의 크기 (픽셀 단위 ) (길이, 높이 )
#$InputBox.text = ""
$window.Controls.Add($InputBox8) # 기본 창 내부의 텍스트 상자 활성화
$InputBox8.hide()

$InputBox9 = New-Object System.Windows.Forms.TextBox #  텍스트 상자 만들기 
$InputBox9.Location = New-Object System.Drawing.Size (950,35 ) # 기본 에 대한 텍스트 상자의 위치 (px) 창 가장자리 (길이, 높이) 
$InputBox9.Size = New-Object System.Drawing.Size (40,30 ) # 텍스트 상자의 크기 (픽셀 단위 ) (길이, 높이 )
#$InputBox.text = ""
$window.Controls.Add($InputBox9) # 기본 창 내부의 텍스트 상자 활성화
$InputBox9.hide()

$InputBox10 = New-Object System.Windows.Forms.TextBox #  텍스트 상자 만들기 
$InputBox10.Location = New-Object System.Drawing.Size (740,115 ) # 기본 에 대한 텍스트 상자의 위치 (px) 창 가장자리 (길이, 높이) 
$InputBox10.Size = New-Object System.Drawing.Size (80,30 ) # 텍스트 상자의 크기 (픽셀 단위 ) (길이, 높이 )
#$InputBox.text = ""
$window.Controls.Add($InputBox10) # 기본 창 내부의 텍스트 상자 활성화
$InputBox10.hide()

$InputBox11 = New-Object System.Windows.Forms.TextBox #  텍스트 상자 만들기 
$InputBox11.Location = New-Object System.Drawing.Size (950,115 ) # 기본 에 대한 텍스트 상자의 위치 (px) 창 가장자리 (길이, 높이) 
$InputBox11.Size = New-Object System.Drawing.Size (40,30 ) # 텍스트 상자의 크기 (픽셀 단위 ) (길이, 높이 )
#$InputBox.text = ""
$window.Controls.Add($InputBox11) # 기본 창 내부의 텍스트 상자 활성화
$InputBox11.hide()

$InputBox12 = New-Object System.Windows.Forms.TextBox #  텍스트 상자 만들기 
$InputBox12.Location = New-Object System.Drawing.Size (740,195 ) # 기본 에 대한 텍스트 상자의 위치 (px) 창 가장자리 (길이, 높이) 
$InputBox12.Size = New-Object System.Drawing.Size (80,30 ) # 텍스트 상자의 크기 (픽셀 단위 ) (길이, 높이 )
#$InputBox.text = ""
$window.Controls.Add($InputBox12) # 기본 창 내부의 텍스트 상자 활성화
$InputBox12.hide()

$InputBox13 = New-Object System.Windows.Forms.TextBox #  텍스트 상자 만들기 
$InputBox13.Location = New-Object System.Drawing.Size (950,195 ) # 기본 에 대한 텍스트 상자의 위치 (px) 창 가장자리 (길이, 높이) 
$InputBox13.Size = New-Object System.Drawing.Size (130,30 ) # 텍스트 상자의 크기 (픽셀 단위 ) (길이, 높이 )
#$InputBox.text = ""
$window.Controls.Add($InputBox13) # 기본 창 내부의 텍스트 상자 활성화
$InputBox13.hide()

$InputBox14 = New-Object System.Windows.Forms.TextBox #  텍스트 상자 만들기 
$InputBox14.Location = New-Object System.Drawing.Size (740,275 ) # 기본 에 대한 텍스트 상자의 위치 (px) 창 가장자리 (길이, 높이) 
$InputBox14.Size = New-Object System.Drawing.Size (80,30 ) # 텍스트 상자의 크기 (픽셀 단위 ) (길이, 높이 )
#$InputBox.text = ""
$window.Controls.Add($InputBox14) # 기본 창 내부의 텍스트 상자 활성화
$InputBox14.hide()

$InputBox15 = New-Object System.Windows.Forms.TextBox #  텍스트 상자 만들기 
$InputBox15.Location = New-Object System.Drawing.Size (950,275 ) # 기본 에 대한 텍스트 상자의 위치 (px) 창 가장자리 (길이, 높이) 
$InputBox15.Size = New-Object System.Drawing.Size (130,30 ) # 텍스트 상자의 크기 (픽셀 단위 ) (길이, 높이 )
#$InputBox.text = ""
$window.Controls.Add($InputBox15) # 기본 창 내부의 텍스트 상자 활성화
$InputBox15.hide()

$InputBox16 = New-Object System.Windows.Forms.TextBox #  텍스트 상자 만들기 
$InputBox16.Location = New-Object System.Drawing.Size (740,355) # 기본 에 대한 텍스트 상자의 위치 (px) 창 가장자리 (길이, 높이) 
$InputBox16.Size = New-Object System.Drawing.Size (80,30 ) # 텍스트 상자의 크기 (픽셀 단위 ) (길이, 높이 )
#$InputBox.text = ""
$window.Controls.Add($InputBox16) # 기본 창 내부의 텍스트 상자 활성화
$InputBox16.hide()

$InputBox17 = New-Object System.Windows.Forms.TextBox #  텍스트 상자 만들기 
$InputBox17.Location = New-Object System.Drawing.Size (950,355 ) # 기본 에 대한 텍스트 상자의 위치 (px) 창 가장자리 (길이, 높이) 
$InputBox17.Size = New-Object System.Drawing.Size (40,30 ) # 텍스트 상자의 크기 (픽셀 단위 ) (길이, 높이 )
#$InputBox.text = ""
$window.Controls.Add($InputBox17) # 기본 창 내부의 텍스트 상자 활성화
$InputBox17.hide()

$InputBox18 = New-Object System.Windows.Forms.TextBox #  텍스트 상자 만들기 
$InputBox18.Location = New-Object System.Drawing.Size (760,395) # 기본 에 대한 텍스트 상자의 위치 (px) 창 가장자리 (길이, 높이) 
$InputBox18.Size = New-Object System.Drawing.Size (130,30 ) # 텍스트 상자의 크기 (픽셀 단위 ) (길이, 높이 )
#$InputBox.text = ""
$window.Controls.Add($InputBox18) # 기본 창 내부의 텍스트 상자 활성화
$InputBox18.hide()

$InputBox19 = New-Object System.Windows.Forms.TextBox #  텍스트 상자 만들기 
$InputBox19.Location = New-Object System.Drawing.Size (740,475) # 기본 에 대한 텍스트 상자의 위치 (px) 창 가장자리 (길이, 높이) 
$InputBox19.Size = New-Object System.Drawing.Size (80,30 ) # 텍스트 상자의 크기 (픽셀 단위 ) (길이, 높이 )
#$InputBox.text = ""
$window.Controls.Add($InputBox19) # 기본 창 내부의 텍스트 상자 활성화
$InputBox19.hide()

$InputBox20 = New-Object System.Windows.Forms.TextBox #  텍스트 상자 만들기 
$InputBox20.Location = New-Object System.Drawing.Size (950,475 ) # 기본 에 대한 텍스트 상자의 위치 (px) 창 가장자리 (길이, 높이) 
$InputBox20.Size = New-Object System.Drawing.Size (40,30 ) # 텍스트 상자의 크기 (픽셀 단위 ) (길이, 높이 )
#$InputBox.text = ""
$window.Controls.Add($InputBox20) # 기본 창 내부의 텍스트 상자 활성화
$InputBox20.hide()

$InputBox21 = New-Object System.Windows.Forms.TextBox #  텍스트 상자 만들기 
$InputBox21.Location = New-Object System.Drawing.Size (760,515) # 기본 에 대한 텍스트 상자의 위치 (px) 창 가장자리 (길이, 높이) 
$InputBox21.Size = New-Object System.Drawing.Size (130,30 ) # 텍스트 상자의 크기 (픽셀 단위 ) (길이, 높이 )
#$InputBox.text = ""
$window.Controls.Add($InputBox21) # 기본 창 내부의 텍스트 상자 활성화
$InputBox21.hide()

$label7 = new-object system.windows.forms.label
$label7.text = "포트 허용"
$label7.Location = New-Object System.Drawing.Size 680,10
$label7.Size = New-Object Drawing.Point 300,30
$label7.hide()
$window.controls.add($label7)

$label8 = new-object system.windows.forms.label
$label8.text = "룰 네임 : "
$label8.Location = New-Object System.Drawing.Size 680,40
$label8.Size = New-Object Drawing.Point 70,30
$label8.hide()
$window.controls.add($label8)

$label9 = new-object system.windows.forms.label
$label9.text = "허용 포트 번호 :"
$label9.Location = New-Object System.Drawing.Size 850,40
$label9.Size = New-Object Drawing.Point 120,30
$label9.hide()
$window.controls.add($label9)

$label10 = new-object system.windows.forms.label
$label10.text = "포트 차단"
$label10.Location = New-Object System.Drawing.Size 680,90
$label10.Size = New-Object Drawing.Point 70,30
$label10.hide()
$window.controls.add($label10)

$label11 = new-object system.windows.forms.label
$label11.text = "룰 네임 : "
$label11.Location = New-Object System.Drawing.Size 680,120
$label11.Size = New-Object Drawing.Point 70,30
$label11.hide()
$window.controls.add($label11)

$label12 = new-object system.windows.forms.label
$label12.text = "차단 포트 번호 :"
$label12.Location = New-Object System.Drawing.Size 850,120
$label12.Size = New-Object Drawing.Point 120,30
$label12.hide()
$window.controls.add($label12)

$label13 = new-object system.windows.forms.label
$label13.text = "IP 허용"
$label13.Location = New-Object System.Drawing.Size 680,170
$label13.Size = New-Object Drawing.Point 70,30
$label13.hide()
$window.controls.add($label13)

$label14 = new-object system.windows.forms.label
$label14.text = "룰 네임 : "
$label14.Location = New-Object System.Drawing.Size 680,200
$label14.Size = New-Object Drawing.Point 70,30
$label14.hide()
$window.controls.add($label14)

$label15 = new-object system.windows.forms.label
$label15.text = "허용 아이피 : "
$label15.Location = New-Object System.Drawing.Size 850,200
$label15.Size = New-Object Drawing.Point 120,30
$label15.hide()
$window.controls.add($label15)

$label16 = new-object system.windows.forms.label
$label16.text = "IP 차단"
$label16.Location = New-Object System.Drawing.Size 680,250
$label16.Size = New-Object Drawing.Point 70,30
$label16.hide()
$window.controls.add($label16)

$label17 = new-object system.windows.forms.label
$label17.text = "룰 네임 :"
$label17.Location = New-Object System.Drawing.Size 680,280
$label17.Size = New-Object Drawing.Point 70,30
$label17.hide()
$window.controls.add($label17)

$label18 = new-object system.windows.forms.label
$label18.text = "차단 아이피 : "
$label18.Location = New-Object System.Drawing.Size 850,280
$label18.Size = New-Object Drawing.Point 120,30
$label18.hide()
$window.controls.add($label18)

$label19 = new-object system.windows.forms.label
$label19.text = "포트 / IP 허용"
$label19.Location = New-Object System.Drawing.Size 680,330
$label19.Size = New-Object Drawing.Point 130,20
$label19.hide()
$window.controls.add($label19)

$label20 = new-object system.windows.forms.label
$label20.text = "룰 네임 :"
$label20.Location = New-Object System.Drawing.Size 680,360
$label20.Size = New-Object Drawing.Point 70,30
$label20.hide()
$window.controls.add($label20)

$label21 = new-object system.windows.forms.label
$label21.text = "허용 포트 번호 : "
$label21.Location = New-Object System.Drawing.Size 850,360
$label21.Size = New-Object Drawing.Point 120,30
$label21.hide()
$window.controls.add($label21)

$label22 = new-object system.windows.forms.label
$label22.text = "허용 아이피 : "
$label22.Location = New-Object System.Drawing.Size 680,400
$label22.Size = New-Object Drawing.Point 120,30
$label22.hide()
$window.controls.add($label22)

$label23 = new-object system.windows.forms.label
$label23.text = "포트 / IP 차단"
$label23.Location = New-Object System.Drawing.Size 680,450
$label23.Size = New-Object Drawing.Point 130,30
$label23.hide()
$window.controls.add($label23)

$label24 = new-object system.windows.forms.label
$label24.text = "룰 네임 :"
$label24.Location = New-Object System.Drawing.Size 680,480
$label24.Size = New-Object Drawing.Point 70,30
$label24.hide()
$window.controls.add($label24)

$label25 = new-object system.windows.forms.label
$label25.text = "차단 포트 번호 : "
$label25.Location = New-Object System.Drawing.Size 850,480
$label25.Size = New-Object Drawing.Point 120,30
$label25.hide()
$window.controls.add($label25)

$label26 = new-object system.windows.forms.label
$label26.text = "차단 아이피 : "
$label26.Location = New-Object System.Drawing.Size 680,520
$label26.Size = New-Object Drawing.Point 120,30
$label26.hide()
$window.controls.add($label26)

$button_click15 = {
  
}

$windowButton15 = New-Object System.Windows.Forms.Button
$windowButton15.Location = New-Object System.Drawing.Point(240,570)
$windowButton15.size = New-Object System.Drawing.Size(180,50)
$windowButton15.BackColor ="White"
$windowButton15.ForeColor ="Black"

$windowButton15.Text = "방화벽 설정"
$windowButton15.Add_Click($button_click15)

$button_click16 = {
  $rulename = $InputBox8.text
  $port = $InputBox9.text
  netsh advfirewall firewall add rule name=$rulename protocol=TCP dir=in localport=$port action=allow  edge=yes
}

$windowButton16 = New-Object System.Windows.Forms.Button
$windowButton16.Location = New-Object System.Drawing.Point(1010,25)
$windowButton16.size = New-Object System.Drawing.Size(30,30)
$windowButton16.BackColor ="White"
$windowButton16.ForeColor ="Black"
$windowButton16.hide()

$windowButton16.Text = "OK"
$windowButton16.Add_Click($button_click16)

$button_click17 = {
  $rulename1 = $InputBox10.text
  $port1 = $InputBox11.text
  netsh advfirewall firewall add rule name=$rulename1 protocol=TCP dir=in localport=$port1 action=block  edge=yes
}

$windowButton17 = New-Object System.Windows.Forms.Button
$windowButton17.Location = New-Object System.Drawing.Point(1010,105)
$windowButton17.size = New-Object System.Drawing.Size(30,30)
$windowButton17.BackColor ="White"
$windowButton17.ForeColor ="Black"
$windowButton17.hide()

$windowButton17.Text = "OK"
$windowButton17.Add_Click($button_click17)

$button_click18 = {
  $rulename2 = $InputBox12.text
  $remoteip = $InputBox13.text
  netsh advfirewall firewall add rule name=$rulename2 dir=in action=allow remoteip=$remoteip 
}

$windowButton18 = New-Object System.Windows.Forms.Button
$windowButton18.Location = New-Object System.Drawing.Point(1100,195)
$windowButton18.size = New-Object System.Drawing.Size(30,30)
$windowButton18.BackColor ="White"
$windowButton18.ForeColor ="Black"
$windowButton18.hide()

$windowButton18.Text = "OK"
$windowButton18.Add_Click($button_click18)

$button_click19 = {
  $rulename3 = $InputBox14.text
  $remoteip1  = $InputBox15.text
  netsh advfirewall firewall add rule name=$rulename3 dir=in action=block remoteip=$remoteip1 
}

$windowButton19 = New-Object System.Windows.Forms.Button
$windowButton19.Location = New-Object System.Drawing.Point(1100,275)
$windowButton19.size = New-Object System.Drawing.Size(30,30)
$windowButton19.BackColor ="White"
$windowButton19.ForeColor ="Black"
$windowButton19.hide()

$windowButton19.Text = "OK"
$windowButton19.Add_Click($button_click19)

$button_click20 = {
  $rulename4 = $InputBox16.text
  $port4 = $InputBox17.text
  $remoteip4  = $InputBox18.text
  
  netsh advfirewall firewall add rule name=$rulename4 protocol=TCP dir=in localport=$port4 action=allow  edge=yes remoteip=$remoteip4
}

$windowButton20 = New-Object System.Windows.Forms.Button
$windowButton20.Location = New-Object System.Drawing.Point(900,395)
$windowButton20.size = New-Object System.Drawing.Size(30,30)
$windowButton20.BackColor ="White"
$windowButton20.ForeColor ="Black"
$windowButton20.hide()

$windowButton20.Text = "OK"
$windowButton20.Add_Click($button_click20)

$button_click21 = {
  $rulename5 = $InputBox19.text
  $port5 = $InputBox20.text
  $remoteip5  = $InputBox21.text
  
  netsh advfirewall firewall add rule name=$rulename5 protocol=TCP dir=in localport=$port5 action=block  edge=yes remoteip=$remoteip5
}

$windowButton21 = New-Object System.Windows.Forms.Button
$windowButton21.Location = New-Object System.Drawing.Point(900,515)
$windowButton21.size = New-Object System.Drawing.Size(30,30)
$windowButton21.BackColor ="White"
$windowButton21.ForeColor ="Black"
$windowButton21.hide()

$windowButton21.Text = "OK"
$windowButton21.Add_Click($button_click21)

$windowButton15.Add_Click({show1_button})
Function show1_button(){
 $label7.show()
 $label8.show()
 $InputBox8.show()
 $label9.show()
 $InputBox9.show()
 $windowButton16.show()
 $label10.show()
 $label11.show()
 $InputBox10.show()
 $label12.show()
 $InputBox11.show()
 $windowButton17.show()
 $label13.show()
 $label14.show()
 $InputBox12.show()
 $label15.show()
 $InputBox13.show()
 $windowButton18.show()
 $label16.show()
 $label17.show()
 $InputBox14.show()
 $label18.show()
 $InputBox15.show()
 $windowButton19.show()
 $label19.show()
 $label20.show()
 $InputBox16.show()
 $label20.show()
 $label21.show()
 $InputBox17.show()
 $label22.show()
 $InputBox18.show()
 $windowButton20.show()
 $label23.show()
 $label24.show()
 $InputBox19.show()
 $label25.show()
 $InputBox20.show()
 $label26.show()
 $InputBox21.show()
 $windowButton21.show()
}


$window.Controls.Add($windowButton15)
$window.Controls.Add($windowButton16)
$window.Controls.Add($windowButton17)
$window.Controls.Add($windowButton18)
$window.Controls.Add($windowButton19)
$window.Controls.Add($windowButton20)
$window.Controls.Add($windowButton21)

[void]$window.ShowDialog() # 폼 활성화

여기까지 완료되었으면, 윈도우 방화벽 설정 도구 관련하여 알아보았습니다.

 

도움이 되셨다면 구독 좋아요

궁금하신 내용이 있으시면 댓글 부탁드리겠습니다.

 

윈도우 방화벽 설정.ps1
0.02MB

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
});