接前文,正在为可用域名访问家里nas而沾沾自喜的时候,无意中测试了一条命令,把我惊出一身冷汗!我试着用ssh工具连接我的域名,发现直接能访问。尽管需要输入用户名和密码,但是我那简陋的密码不是形同虚设吗?以前用ipv4的时候我是搭了虚拟网做内部访问,没考虑过外网暴露的问题,可是现在用的是ipv6公网地址,那我的nas还安全吗?
首先我想到的就是配置防火墙,防火墙的基本功能就是端口控制。ssh默认使用22端口,所以基本思路是禁用22端口,但是在禁用22端口之前先要修改ssh的默认端口号,否则禁用了自己也连不上咯。
在修改端口前,先了解一下端口的基础知识。自定义端口号一般取1024-49151之间,建议取10000以上。
什么是开放端口?
开放端口(Open ports)是指主动接收数据包的端口。相应地,拒绝所有数据包的端口是关闭的端口(Closed ports)。如前所述,当计算机需要对外提供服务时,需要开放特定的端口。毕竟,你要接收包裹,就得给快递员开门。
在特定端口上启用了某个服务以后,该端口将仅供此服务使用,不能再用于其他目的(服务)。端口号分为三类。
==知名端口(Well-known Ports):也叫系统端口(System Ports),端口号范围0-1023。==知名端口由 ICANN(The Internet Corporation for Assigned Names and Numbers,互联网名称与数字地址分配机构)分配给常用的服务。知名端口与服务具有紧密的联系。通常说采用某知名端口通信,即表明采用该端口对应的服务。例如,22表示SSH,23表示Telnet。
==注册端口(Registered Ports):也叫用户端口(User Ports),端口号范围1024-49151。==注册端口由IANA(Internet Assigned Numbers Authority,互联网数字分配机构)管理,组织可以向IANA申请某端口为应用程序的注册端口。例如,3389是微软为RDP(Remote Desktop Protocol,远程桌面协议)申请的注册端口。
==私有端口(Private Ports):也叫动态端口(Dynamic Ports),端口号范围49152-65535。==不应该为服务分配动态端口。动态端口是主机与服务端通信时,临时分配给应用程序的端口。通信结束后,该端口即被释放。不过,在实际应用中,主机通常从1024起分配动态端口。
修改ssh默认的22端口打开ssh配置文件,找到并修改port参数,例如取10088(只要不和本机其他端口重复就行,完全自定义),更换端口的目的是停用默认的22端口,增加被外部破解难度。
sudo nano /etc/ssh/sshd_config重新启动ssh
systemctl restart sshd.service试着用ssh带端口号访问,不出意外的话应该能访问的。
ssh -p 10088 username@ip顺着这个思路,我又修改了xrdp默认的3389端口,3389是rdp远程桌面默认的端口。修改xrdp配置文件,找到port参数,修改为10089。
sudo nano /etc/xrdp/xrdp.ini重启xrdp服务
sudo service xrdp restart下一步就是开启防火墙,允许10088和10089端口。
防火墙我的nas系统是ubuntu,用的是ufw防火墙。基本命令摘要如下:
sudo apt install ufw #安装防火墙
sudo ufw enable #开启防火墙
sudo ufw status #查看防火墙运行状态
sudo ufw reload #重新加载防火墙,配置更新后记得重新加载防火墙!
重点说一下ufw的核心命令防火墙最主要的功能就是端口控制。一般就是允许和拒绝两个状态。
允许:输入sudo ufw allow [端口号或软件名],例如sudo ufw allow 22表示允许22端口放行,当然也可以输入sudo ufw allow ssh,因为ssh默认使用22端口,所以效果是一样的。
拒绝:关于拒绝有3种状态,分别是deny、reject、limit。区别是reject阻止后会向请求者返回一条消息,说明请求被阻止了。而deny则直接阻止请求,并不向请求者返回任何消息回应。limit是限制流量,默认规则是20秒内不得超过6次连接。综合来说最常用的就是deny!例如sudu ufw deny 22表示不允许22端口放行。
防火墙的图形化界面linux之所以不能普及就是命令太多!这么多命令谁记得住?还好ufw也有图形化界面。
sudo apt install gufw #安装图形界面防火墙,安装完毕在程序仓库能看到图标,双击运行启动gufw。
注意!一旦启用防火墙,默认状态ufw会拒绝所有外部连接。
添加规则,例如允许端口10089放行。设置完毕如图所示。
这样的话目前只有10088和10089两个端口允许放行,但是nas上的服务肯定不止用到2个端口,所以需要分别一一设置。
另外一个思路就是先允许所有端口放行,再分别指定需要禁用的端口。
可以把一些高危的端口都禁用。下面是常见的高危端口,资料来源于
https://support.huawei.com/enterprise/zh/doc/EDOC1100297669
仅供参考。
总结
使用ipv6公网地址一时爽,防火墙配置不能忘!防火墙的主要作用就是端口控制。包括数据的进与出,状态的话主要是允许或拒绝。端口分tcp和udp协议,主要是设置tcp协议。光猫、路由器、nas主机都有防火墙可用,本文仅做抛砖引玉,防火墙的使用绝非这么简单,希望能引起大家重视,注意网络安全,数据无价!