windows防火墙命令实践-我电脑我做主
linux有iptables,可以很精确的控制访问。
windows也有自己的防火墙,可以按出入站,类型,端口,程序路径等来控制网络访问。功能是强大,但比较难用。
能解决什么问题
禁止一些不必要联网的程序偷偷的连网。
比如说输入法,主要功能就是做好字母组合与汉字的对应关系,这是个相对固定没有什么变化的功能。本就是单机功能,没有必要联网。
如果联网了,就开始弹广告,开始自动更新,多一些累赘功能。
有些没节操的可能要搜集你的输入数据偷偷上传。
这样,不让它们连网,是最安全。
比如说一些软件,每次启动时都会检查更新,但这个软件当前版本用得很习惯,不想去适应新版本,但次都提示更新很烦。
就是禁止它指定端口出站,就样就获取不了更新信息,自然不会弹窗。
怎么解决
以windows7为例:
控制面板\所有控制面板项\Windows 防火墙 ->高级设置
可以弹出防火墙面版。
选出站规则,右键新建规则,就可以按这个向导一步一步来。
但显然,如果规则很多的话,就很繁琐。
windows 提供了命令行方式进行操作防火墙规则。
1 |
|
查看当前防火墙所有规则
netsh advfirewall firewall show rule name=all
添加一条防火墙规则
netsh advfirewall firewall add rule name=xxxx dir=out action=block program="xx.exe"
更多用法可以用netsh advfirewall firewall add
查看
比如禁止excel联网的命令可能是这样的:netsh advfirewall firewall add rule name=block_excel dir=out action=block program="C:/Program Files/Microsoft Office/Office14/EXCEL.EXE"
批处理脚本
比如要禁止某文件夹下所有exe的联网。
可以用下面脚本生成命令,复制并执行。
在要管理员权限下执行
以禁止我用的qq五笔为例
1 |
|
当然别忘了要启用防火墙。
关于windows 防火墙的优先级
参考:https://technet.microsoft.com/en-us/library/f1207683-3d4e-4382-91ac-36b1dde432cb
简单来说就是阻断规则的优先级高于允许规则。
禁止除指定端口外的所有连接,这样的需求实现就比较麻烦
常用的规则
- 禁止所有程序的出站连接:
netsh advfirewall firewall add rule name=block_all_out dir=out action=block
- 禁止所有程序的指定端口的连接:
netsh advfirewall firewall add rule name=block_all_port dir=out action=block protocol=tcp remoteport=1024-2048,2050-65535
禁用QQ的自动更新程序联网
最近QQ老弹电脑管家的推送,很是恶心。
注意路径要用\\
不能用/
1 |
|