阿里云的服务器,通过firewall-cmd设置只能个人使用的IP地址开放端口,但是本地使用的IP地址不是固定的,每次改变后都需要重新登录服务器,添加防火墙规则,很不方便,因此想写一服务自动添加防火墙规则
原文地址:https://github.com/GitNealian/fd
注:本人还没有测试过,需要客户端和服务端都安装go程序,需要的,自己测试下
思路- 在服务器上运行一个简单的web服务,个人电脑访问这个服务时,服务器能得到其外部IP地址,将这个IP地址添加到防火墙规则里重启防火墙即可;
验证- 这个接口肯定不能不通过任何验证直接暴露,否则防火墙就失去了意义;
- 使用rsa签名和验签的方式对客户端进行身份验证,客户端先从服务端得到一个UUID,客户端使用私钥对此UUID进行签名,返回给服务端,服务端收到签名后,取出此客户端对应的UUID,使用此客户端对应的公钥进行验签,如果验证通过,则把客户端的IP地址添加到防火墙规则,并重启防火墙;
实施- 服务端需要一个配置文件clients.txt,每行可配置一个客户端,每个客户端由两个部分组成,第一个部分是客户端的ID,第二个部分是客户端对应的公钥,由空格分隔开;
- 客户端需要一个配置文件client.txt,共一行,也是由空格分隔的两部分,第一个部分也是客户端的ID,第二个部分是客户端的私钥;
- 服务器放开端口7749;
- 个人电脑设置客户端定时执行,IP地址不会频繁变化,一般只需要设置开机时执行,其它时候若IP确实发生变化,手动执行一下客户端;
问题- 在添加一条新的IP规则之前,如果不删除此客户端旧的IP地址,那么防火墙的IP规则会越来越多(安全上影响不大),如果删除旧地址的话,则会出现一个问题,即如果两个客户端在同一个外部IP里面,一个客户端离开此网络并使用新IP地址后,旧IP规则被删除,导致另一个IP不变的客户端被防火墙拦截,需要手动执行一下客户端;
- 解决:删除之前查看是否还有别的客户端使用此IP地址
|