2010. 9. 15. 18:10
안녕하세요. 엉스데브 입니다.
이번에는 PowerShell 로 윈도우 내장 방화벽을 다루는 방법에 대해 알아보겠습니다.
0. PowerShell 에서 내장 방화벽을 다루기 위한 방법.
PowerShell 에 내장 된 관련 명령어는 없지만, "HNetCfg.FwMgr" Com 개체를 이용해서 다룰 수 있습니다.
아래 명령어를 통해 Com 객체를 만들 수 있습니다.
$FireWallMgr = New-Object -ComObject HNetCfg.FwMgr
1. 현재 방화벽이 켜져 있는지 꺼져 있는지 확인 및 켜기/끄기.
아래 명령어로 현재 방화벽이 켜저 있는지 꺼져 있는지를 확인 할 수 있습니다.
$FireWallMgr.LocalPolicy.CurrentProfile.FirewallEnabled
리턴 값이 True 이면 켜져있는 상티이고, False 이면 꺼져있는 상태입니다.
방화벽이 켜거나 끄려면 아래와 같이 하면 됩니다.
$FireWallMgr.LocalPolicy.CurrentProfile.FirewallEnabled = $True # 방화벽 켜기
$FireWallMgr.LocalPolicy.CurrentProfile.FirewallEnabled = $False # 방화벽 끄기
2. 현재 방화벽 설정 조회하기
현재 열려있는 포트(룰)을 조회 하려면 다음과 같이 입력하면 됩니다.
$FireWallMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts
3. 특정 룰이 있는지 확인 및 선택하기.
만약, 21번 포트가 방화벽에서 열려있는지(여는 룰이 존재하는지) 확인 해 보려면 아래와 같이 하면 됩니다.
$FireWallMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts | Where-Object {$_.Port -eq "21"}
만약, 이름에 SNMP 라는 키워드가 포함되는 이름을 가진 룰을 찾아보려면, 아래와 같이 하면 됩니다.
$FireWallMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts | Where-Object {$_.Name -Like "*SNMP*"}
4. 룰 추가 하기.
$FireWallRule = New-Object -ComObject HNetCfg.FwOpenPort;
$FireWallRule.Name = "룰 이름"
$FireWallRule.Port = "열 포트(0-65535))"
$FireWallRule.Enabled = "활성화 여부($True or $False)"
$FireWallRule.Protocol = "프로토콜 지정. TCP 일 경우 6, UDP 일 경우 17)"
$FireWallMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts.Add($FireWallRule)
5. 룰 삭제하기.
만약, 이름이 Test 인 룰을 삭제하고자 한다면, 아래와 같이 하면 됩니다.
$toDeleteFireWallRule = $FireWallMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts | Where-Object {$_.Name -Like "Test"} # 룰을 선택하고,
$toDeleteFireWallRule | %{$FireWallMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts.Remove($_.Port, $_.Protocol)} #파이프로 넘겨서 삭제 메소드 호출.
6. 룰 활성화/비활성화 하기
만약, 이름에 SNMP 라는 키워드가 포함되는 이름을 가진 룰을 비활성화 하려면, 아래와 같이 하면 됩니다.
($FireWallMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts | Where-Object {$_.Name -Like "*SNMP*"}).Enabled = $False
활성화 하려면, 아래와 같이 실행 하면 됩니다.
($FireWallMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts | Where-Object {$_.Name -Like "*SNMP*"}).Enabled = $True
오늘은 여기까지 입니다.
감사합니다.
이번에는 PowerShell 로 윈도우 내장 방화벽을 다루는 방법에 대해 알아보겠습니다.
0. PowerShell 에서 내장 방화벽을 다루기 위한 방법.
PowerShell 에 내장 된 관련 명령어는 없지만, "HNetCfg.FwMgr" Com 개체를 이용해서 다룰 수 있습니다.
아래 명령어를 통해 Com 객체를 만들 수 있습니다.
$FireWallMgr = New-Object -ComObject HNetCfg.FwMgr
1. 현재 방화벽이 켜져 있는지 꺼져 있는지 확인 및 켜기/끄기.
아래 명령어로 현재 방화벽이 켜저 있는지 꺼져 있는지를 확인 할 수 있습니다.
$FireWallMgr.LocalPolicy.CurrentProfile.FirewallEnabled
리턴 값이 True 이면 켜져있는 상티이고, False 이면 꺼져있는 상태입니다.
방화벽이 켜거나 끄려면 아래와 같이 하면 됩니다.
$FireWallMgr.LocalPolicy.CurrentProfile.FirewallEnabled = $True # 방화벽 켜기
$FireWallMgr.LocalPolicy.CurrentProfile.FirewallEnabled = $False # 방화벽 끄기
2. 현재 방화벽 설정 조회하기
현재 열려있는 포트(룰)을 조회 하려면 다음과 같이 입력하면 됩니다.
$FireWallMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts
3. 특정 룰이 있는지 확인 및 선택하기.
만약, 21번 포트가 방화벽에서 열려있는지(여는 룰이 존재하는지) 확인 해 보려면 아래와 같이 하면 됩니다.
$FireWallMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts | Where-Object {$_.Port -eq "21"}
만약, 이름에 SNMP 라는 키워드가 포함되는 이름을 가진 룰을 찾아보려면, 아래와 같이 하면 됩니다.
$FireWallMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts | Where-Object {$_.Name -Like "*SNMP*"}
4. 룰 추가 하기.
$FireWallRule = New-Object -ComObject HNetCfg.FwOpenPort;
$FireWallRule.Name = "룰 이름"
$FireWallRule.Port = "열 포트(0-65535))"
$FireWallRule.Enabled = "활성화 여부($True or $False)"
$FireWallRule.Protocol = "프로토콜 지정. TCP 일 경우 6, UDP 일 경우 17)"
$FireWallMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts.Add($FireWallRule)
5. 룰 삭제하기.
만약, 이름이 Test 인 룰을 삭제하고자 한다면, 아래와 같이 하면 됩니다.
$toDeleteFireWallRule = $FireWallMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts | Where-Object {$_.Name -Like "Test"} # 룰을 선택하고,
$toDeleteFireWallRule | %{$FireWallMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts.Remove($_.Port, $_.Protocol)} #파이프로 넘겨서 삭제 메소드 호출.
6. 룰 활성화/비활성화 하기
만약, 이름에 SNMP 라는 키워드가 포함되는 이름을 가진 룰을 비활성화 하려면, 아래와 같이 하면 됩니다.
($FireWallMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts | Where-Object {$_.Name -Like "*SNMP*"}).Enabled = $False
활성화 하려면, 아래와 같이 실행 하면 됩니다.
($FireWallMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts | Where-Object {$_.Name -Like "*SNMP*"}).Enabled = $True
오늘은 여기까지 입니다.
감사합니다.
'Powershell > 엉스데브' 카테고리의 다른 글
PowerShell 에서 작업 한 모든 내용을 기록하기(Start-Transcript) (0) | 2010.09.28 |
---|---|
PowerShell 로 이벤트 로그 저장 설정 변경하기(+ wevtutil) (0) | 2010.09.27 |
PowerShell 을 통해 IIS 관리하기2 (FTP 사이트 만들기) (0) | 2010.08.25 |
PowerShell 로 zip 파일 압축해제 및 압축 하기. (1) | 2010.08.25 |
PowerShell 로 IIS 설치 하기(Windows 2008 R2, ServerManager 모듈 사용) (5) | 2010.08.24 |