概要
社内LANに不正接続してくるPCを検知、通知するスクリプトを書いてみた。
自作スクリプトでLAN内に不正接続する端末がないか監視するではLinuxマシン上からARPを監視したが、今回はWindows Server上でDHCPを監視するものを作ってみた。
環境
- Active DirectoryのドメインコントローラがDHCPサーバを兼ねる
- DHCPサーバ2台は、2008R2 + 2012R2で、フェールオーバー機能は使っていない
- DHCPのリース領域は
192.168.10.0/24
スクリプト
以下のPowerShellスクリプトをタスクスケジューラで5分毎に実行する。
環境に応じてADドメイン名、DHCPサーバ名、DHCPスコープ、メールアドレス等を変更。
$dhcpservers = @("(DHCPサーバ1)", "(DHCPサーバ2)")
foreach($s in $dhcpservers){
$illegals = Get-DhcpServerv4Lease 192.168.10.0 -ComputerName $s | Where-Object { $_.HostName -inotlike "*.(ADドメイン名)" }
if(($illegals | Measure-Object).Count -gt 0){
$message = $illegals | Format-List | Out-String
Send-MailMessage -From "(送信元メールアドレス)" -To "(送信先メールアドレス)" -Subject "Illegal DHCP Client Found" -SmtpServer "(SMTPサーバアドレス)" -Body $message
foreach($i in $illegals){
Remove-DhcpServerv4Lease -ComputerName $s -IPAddress $i.IPAddress
foreach($s2 in $dhcpservers){
try{
Add-DhcpServerv4Filter -ComputerName $s2 -List Deny -MacAddress $i.ClientId -Description $i.HostName
}catch{
}
}
}
}
}
自分のドメインでないホスト名を持つクライアントがDHCPでIPアドレスを取得すると、
- メールで通知
- アドレスのリースを削除
- 拒否フィルタに登録
という動作。
フェールオーバーを構成している環境の場合でも、
多分拒否フィルタの登録(Add-DhcpServerv4Filte
)は別個に行う必要がある。
最後に、DHCPの拒否フィルタを有効にすればOK。
1回目はDHCPでIPアドレスを正常に取得できて接続されてしまうものの、2回目以降はDHCPではIPを取得できず、社内ネットワークへの侵入を少し減らせる・・・はず。
参考
-
Windows ServerのDHCPフィルタリング
DHCPフィルタの構成方法。画像あり。