คำถามโง่:
มีเทียบเท่า iptables บน Windows? ฉันสามารถติดตั้งผ่าน cygwin ได้หรือไม่
คำถามจริง: ฉันจะทำให้ Windows ประสบความสำเร็จได้อย่างไรฉันสามารถทำอะไรได้บ้างผ่าน iptables แค่มองหาฟังก์ชั่นไฟร์วอลล์ขั้นพื้นฐาน (เช่นการปิดกั้นที่อยู่ IP บางอย่าง)
คำถามโง่:
มีเทียบเท่า iptables บน Windows? ฉันสามารถติดตั้งผ่าน cygwin ได้หรือไม่
คำถามจริง: ฉันจะทำให้ Windows ประสบความสำเร็จได้อย่างไรฉันสามารถทำอะไรได้บ้างผ่าน iptables แค่มองหาฟังก์ชั่นไฟร์วอลล์ขั้นพื้นฐาน (เช่นการปิดกั้นที่อยู่ IP บางอย่าง)
คำตอบ:
วิธีหนึ่งจะอยู่กับnetsh
คำสั่ง:
netsh firewall
(เลิกใช้หลังจาก XP และ 2003)netsh advfirewall
(Vista, 7 และ 2008)netsh advfirewall
เป็นกฎจำเป็นอย่างยิ่งที่จะเรียนรู้สำหรับทุกคนที่เขียนสคริปต์ความปลอดภัยที่เกี่ยวข้องกับ Windows Server
netsh advfirewall
URL ที่สนับสนุนหรือเพียงแค่ที่อยู่ IP?
ด้านล่างมาจาก: https://support.microsoft.com/en-us/kb/947709
ตัวอย่างที่ 1: เปิดใช้งานโปรแกรม
คำสั่งเก่าคำสั่งใหม่
netsh firewall add allowedprogram C:\MyApp\MyApp.exe "My Application" ENABLE
netsh advfirewall firewall add rule name="My Application" dir=in action=allow program="C:\MyApp\MyApp.exe" enable=yes
netsh firewall add allowedprogram program=C:\MyApp\MyApp.exe name="My Application" mode=ENABLE scope=CUSTOM addresses=157.60.0.1,172.16.0.0/16,LocalSubnet profile=Domain netsh advfirewall firewall add rule name="My Application" dir=in action=allow program="C:\MyApp\MyApp.exe" enable=yes remoteip=157.60.0.1,172.16.0.0/16,LocalSubnet profile=domain
netsh firewall add allowedprogram program=C:\MyApp\MyApp.exe name="My Application" mode=ENABLE scope=CUSTOM addresses=157.60.0.1,172.16.0.0/16,LocalSubnet profile=ALL
รันคำสั่งต่อไปนี้:
netsh advfirewall firewall add rule name="My Application" dir=in action=allow program="C:\MyApp\MyApp.exe" enable=yes remoteip=157.60.0.1,172.16.0.0/16,LocalSubnet profile=domain
netsh advfirewall firewall add rule name="My Application" dir=in action=allow program="C:\MyApp\MyApp.exe" enable=yes remoteip=157.60.0.1,172.16.0.0/16,LocalSubnet profile=private
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีเพิ่มกฎไฟร์วอลล์ให้เรียกใช้คำสั่งต่อไปนี้:
netsh advfirewall firewall add rule ?
ตัวอย่างที่ 2: เปิดใช้งานพอร์ต
คำสั่งเก่าคำสั่งใหม่
netsh firewall add portopening TCP 80 "Open Port 80"
netsh advfirewall firewall add rule name="Open Port 80" dir=in action=allow protocol=TCP localport=80
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีเพิ่มกฎไฟร์วอลล์ให้เรียกใช้คำสั่งต่อไปนี้:
netsh advfirewall firewall add rule ?
ตัวอย่างที่ 3: ลบโปรแกรมหรือพอร์ตที่เปิดใช้งาน
คำสั่งเก่าคำสั่งใหม่
netsh firewall delete allowedprogram C:\MyApp\MyApp.exe netsh advfirewall firewall delete rule name=rule name program="C:\MyApp\MyApp.exe"
delete portopening protocol=UDP port=500 netsh advfirewall firewall delete rule name=rule name protocol=udp localport=500
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการลบกฎไฟร์วอลล์ให้เรียกใช้คำสั่งต่อไปนี้:
netsh advfirewall firewall delete rule ?
ตัวอย่างที่ 4: กำหนดการตั้งค่า ICMP
คำสั่งเก่าคำสั่งใหม่
netsh firewall set icmpsetting 8 netsh advfirewall firewall add rule name="ICMP Allow incoming V4 echo request" protocol=icmpv4:8,any dir=in action=allow
netsh firewall set icmpsetting type=ALL mode=enable netsh advfirewall firewall add rule name="All ICMP V4" protocol=icmpv4:any,any dir=in action=allow
netsh firewall set icmpsetting 13 disable all netsh advfirewall firewall add rule name="Block Type 13 ICMP V4" protocol=icmpv4:13,any dir=in action=block
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีกำหนดการตั้งค่า ICMP ให้เรียกใช้คำสั่งต่อไปนี้:
netsh advfirewall firewall add rule ?
ตัวอย่างที่ 5: ตั้งค่าการบันทึก
คำสั่งเก่าคำสั่งใหม่
netsh firewall set logging %systemroot%\system32\LogFiles\Firewall\pfirewall.log 4096 ENABLE ENABLE
เรียกใช้คำสั่งต่อไปนี้:
netsh advfirewall set currentprofile logging filename %systemroot%\system32\LogFiles\Firewall\pfirewall.log
netsh advfirewall set currentprofile logging maxfilesize 4096
netsh advfirewall set currentprofile logging droppedconnections enable
netsh advfirewall set currentprofile logging allowedconnections enable
สำหรับข้อมูลเพิ่มเติมให้รันคำสั่งต่อไปนี้:
netsh advfirewall set currentprofile ?
หากคุณต้องการตั้งค่าการบันทึกสำหรับรายละเอียดโดยเฉพาะอย่างยิ่งการใช้ตัวเลือกต่อไปนี้แทน "currentprofile" ตัวเลือก:
domainprofile
privateprofile
Publicprofile
ตัวอย่างที่ 6: เปิดใช้งาน Windows Firewall
คำสั่งเก่าคำสั่งใหม่
netsh firewall set opmode ENABLE netsh advfirewall set currentprofile state on
netsh firewall set opmode mode=ENABLE exceptions=enable
รันคำสั่งต่อไปนี้:
Netsh advfirewall set currentprofile state on
netsh advfirewall set currentprofile firewallpolicy blockinboundalways,allowoutbound
netsh firewall set opmode mode=enable exceptions=disable profile=domain
รันคำสั่งต่อไปนี้:
Netsh advfirewall set domainprofile state on
netsh advfirewall set domainprofile firewallpolicy blockinbound,allowoutbound
netsh firewall set opmode mode=enable profile=ALL Run the following commands:
netsh advfirewall set domainprofile state on
netsh advfirewall set privateprofile state on
สำหรับข้อมูลเพิ่มเติมให้รันคำสั่งต่อไปนี้:
netsh advfirewall set currentprofile ?
หากคุณต้องการตั้งค่าสถานะไฟร์วอลล์สำหรับโพรไฟล์เฉพาะให้ใช้หนึ่งในตัวเลือกต่อไปนี้แทนตัวเลือก "currentprofile":
Domainprofile
Privateprofile Publicprofile
ตัวอย่างที่ 7: คืนค่าเริ่มต้นของนโยบาย
คำสั่งเก่าคำสั่งใหม่
netsh firewall reset
netsh advfirewall reset
สำหรับข้อมูลเพิ่มเติมให้เรียกใช้คำสั่งต่อไปนี้: netsh advfirewall reset? ตัวอย่างที่ 8: เปิดใช้งานบริการเฉพาะ
คำสั่งเก่าคำสั่งใหม่ชุดบริการไฟร์วอลล์ไฟร์วอลล์ netsh FileAndPrint กลุ่มชุดไฟร์วอลล์ advfirewall ของไฟร์วอลล์ netsh = "การแชร์ไฟล์และเครื่องพิมพ์" ใหม่เปิดใช้งาน = ใช่บริการชุดไฟร์วอลล์ netsh RemoteDesktop เปิดใช้งานกลุ่มกฎไฟร์วอลล์ชุด netsh advfirewall = "เดสก์ท็อประยะไกล" บริการ RemoteDesktop เปิดใช้งาน profile = ALL เรียกใช้คำสั่งต่อไปนี้:
กลุ่มกฎชุดไฟร์วอลล์ advfirewall ของ netsh = เปิดใช้งานเดสก์ท็อประยะไกลใหม่ = ใช่โปรไฟล์ = โดเมน
กลุ่มกฎชุดไฟร์วอลล์ advfirewall ของ netsh = เปิดใช้งานเดสก์ท็อประยะไกลใหม่ = ใช่โปรไฟล์ = ส่วนตัว
WIPFWดูมีความเป็นไปได้สูงโดยเฉพาะอย่างยิ่งถ้าหากคุณสร้างกฎการสร้าง iptables