最近勒索病毒肆虐,一不小心中招的话那损失相当惨重。除了弱口令容易被爆破的问题外,windows自动打开的一些端口也容易受到黑客或者病毒的攻击,一旦被突破,从内网一台电脑迅速蔓延到整个网络。那怎么关闭一些计算机已默认打开的本地端口呢?
1、首先,我们要了解内网的计算机都打开了哪些端口,尤其是端口号3000以内的,很多是知名端口,非常容易被利用。查询的方式非常简单,cmd命令行下输入以下命令:
netstat -a //查看所有活动端口
netstat -p tcp -q //查看本地所有TCP端口(包括非活动状态的)
netstat -p udp -q //查看UDP
当然,还有更加直观的方式,可以借助一些第三方工具,比如PortScan端口扫描工具,可以一键扫描整网计算机的端口打开状态。
P1.PortScan端口扫描工具
2、确定已打开端口的用途,非必要的端口可以参考步骤3关闭掉。这个自行查询,将端口号复制到搜索引擎,可以找到各种详细介绍的资料,过程略。
3、通过计算机自带的防火墙,新增过滤规则,在入站方向上禁止访问本地端口。命令格式如下:
netsh advfirewall firewall add rule name=[规则名称(自定义)\] dir=in localport=\[要关闭的端口号\] protocol=\[tcp\|udp\|icmpv4\] action=block
//实际使用时"[]"符号去掉哈。 另外规则名中如果有空格,需要英文双引号包括起来。最好不要出现空格,长字符串可以使用"-"或者"_"连接起来~
**扩展:**如何理解防火墙入站方向和出站方向,什么情况下在入站方向上创建规则,什么情况下又需要在出站方向上创建规则?
入站、出站是相对于计算机本身而言的,描述的是流量的方向,入站指的是外部的流量流向本地计算机,出站即指本地向外部发送的流量。比如我们经常通过浏览器浏览网页,网站服务器将网页数据传输给浏览器,对于本地计算机而言,这就是入站流量;而我们在网页的留言栏留言或者将文件上传到网站/网盘,这个流量对于本地计算机来说就是出站流量。
入站方向是计算机面临的主要威胁,所以很多防火墙安全策略都是部署在入站。一旦我们在入站方向上部署好一些合理的block过滤拦截规则策略,那外部的威胁就会因为无法将恶意文件或程序送达本地计算机而提前消弭。而出站流量我们一般认为是安全的,毕竟这个方向的流量是用户自己主动向外发送的(即使外发的文件携带了病毒,对本地计算机而言是无害的)。
那什么情况下会需要在出站方向上部署过滤规则呢?企业防止员工外传内部资料或数据。比如,**某企业有这样的规定:**不允许员工在办公场所向网盘软件上传资料(但是允许从网盘下载)。这时候,只要知道网盘软件的传输端口或者服务器IP地址,就可以在出站方向上部署block拒绝策略了:
netsh advfirewall firewall add rule name=deny-upload-to-netdisk dir=out remoteport=333 protocol=tcp action=block
如果知道网盘软件服务器IP,也通过命令行添加禁止向远程ip地址发送流量的防火墙规则:
netsh advfirewall firewall add rule name=deny-upload-to-disk dir=out remoteip="1.1.1.1,2.2.2.2-2.2.2.254,3.3.3.3" remoteport=333 protocol=tcp action=block
4、在出站、入站方向上同时部署一样的策略可能安全性会更高一些,但是也会限制终端用户的正常使用,所以推荐的做法还是根据需要在不同方向部署不同规则。
**比如现在企业面临这样的问题:**IT人员虽然已经在内网部署了集中式共享存储,但是部分员工还是习惯于在自己的电脑上共享文件,然后让需要的同事去复制/编辑,导致内部数据始终无法统一且存在较大安全隐患。除了公司规章制度外,技术上要怎样实现禁止用户私自共享,而又要保证能正常使用集中式文件共享服务呢?
解决方案非常简单,写一个bat,包含命令:
netsh advfirewall firewall add rule name=deny-private-share dir=in localport=445 protocol=tcp action=block
,然后通过AD域推送到内网所有主机(集中式共享存储服务器除外)上运行。 //这条规则的意思是,禁止其他计算机通过445端口访问本机,这样即使个别员工私自在电脑做了文件共享,其他员工也无法访问。同时,因为只部署在入站方向上,出站方向自动放行去往集中式共享存储服务器的流量。windows系统文件共享服务端口号是445。
5、其他使用示例:
(1)内网隐藏服务器,拒绝ping响应(但在该服务器上可以ping其他主机):
netsh advfirewall firewall add rule name=refuse-response-ping dir=in protocol=icmpv4:8,any action=block
(2)只允许访问内网或指定网站,比如IT摇篮曲(www.itylq.com 119.91.71.124):
netsh advfirewall firewall add rule name=access-limit dir=out remoteip="0.0.0.0-9.255.255.255,11.0.0.0-119.91.71.123,119.91.71.125-172.15.255.255,172.32.0.0-192.167.255.255,192.169.0.0-255.255.255.255" protocol=tcp action=block
//除了10.0.0.0/8、172.16.0.0-172.31.0.0/16和192.168.0.0-192.168.255.255/24三大私有网段和119.91.71.124(IT摇篮曲)外,拒绝访问其他所有远程IP
附:windows防火墙配置命令说明
用法: add rule name=<string>
dir=in|out
action=allow|block|bypass
[program=<program path>]
[service=<service short name>|any]
[description=<string>]
[enable=yes|no (default=yes)]
[profile=public|private|domain|any[,...]]
[localip=any|<IPv4 address>|<IPv6 address>|<subnet>|<range>|<list>]
[remoteip=any|localsubnet|dns|dhcp|wins|defaultgateway|
<IPv4 address>|<IPv6 address>|<subnet>|<range>|<list>]
[localport=0-65535|<port range>[,...]|RPC|RPC-EPMap|IPHTTPS|any (default=any)]
[remoteport=0-65535|<port range>[,...]|any (default=any)]
[protocol=0-255|icmpv4|icmpv6|icmpv4:type,code|icmpv6:type,code|
tcp|udp|any (default=any)]
[interfacetype=wireless|lan|ras|any]
[rmtcomputergrp=<SDDL string>]
[rmtusrgrp=<SDDL string>]
[edge=yes|deferapp|deferuser|no (default=no)]
[security=authenticate|authenc|authdynenc|authnoencap|notrequired
(default=notrequired)]备注:
-- 将新的入站或出站规则添加到防火墙策略。
-- 规则名称应该是唯一的,且不能为 "all"。
-- 如果已指定远程计算机或用户组,则 security 必须为
authenticate、authenc、authdynenc 或 authnoencap。
-- 为 authdynenc 设置安全性可允许系统动态协商为匹配
给定 Windows Defender 防火墙规则的通信使用加密。
根据现有连接安全规则属性协商加密。
选择此选项后,只要入站 IPsec 连接已设置安全保护,
但未使用 IPsec 进行加密,计算机就能够接收该入站连接的第一个 TCP 或
UDP 包。
一旦处理了第一个数据包,服务器将重新协商连接并对其进行升级,以便所
有后续通信都完全加密。
-- 如果 action=bypass,则 dir=in 时必须指定远程计算机组。
-- 如果 service=any,则规则仅应用到服务。
-- ICMP 类型或代码可以为 "any"。
-- Edge 只能为入站规则指定。
-- AuthEnc 和 authnoencap 不能同时使用。
-- Authdynenc 仅当 dir=in 时有效。
-- 设置 authnoencap 后,security=authenticate 选项就变成可选参数。示例:
为不具有封装的 messenger.exe 添加入站规则:
netsh advfirewall firewall add rule name="allow messenger"
dir=in program="c:\programfiles\messenger\msmsgs.exe"
security=authnoencap action=allow为端口 80 添加出站规则:
netsh advfirewall firewall add rule name="allow80″
protocol=TCP dir=out localport=80 action=block为 TCP 端口 80 通信添加需要安全和加密的入站规则:
netsh advfirewall firewall add rule
name="Require Encryption for Inbound TCP/80″
protocol=TCP dir=in localport=80 security=authdynenc
action=allow为 messenger.exe 添加需要安全的入站规则:
netsh advfirewall firewall add rule name="allow messenger"
dir=in program="c:\program files\messenger\msmsgs.exe"
security=authenticate action=allow为 SDDL 字符串标识的组 acmedomain\scanners 添加
经过身份验证的防火墙跳过规则:
netsh advfirewall firewall add rule name="allow scanners"
dir=in rmtcomputergrp=<SDDL string> action=bypass
security=authenticate为 udp- 的本地端口 5000-5010 添加出站允许规则
Add rule name="Allow port range" dir=out protocol=udp localport=5000-5010 action=allow