1 Star 1 Fork 0

sorc / dfws

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

一个可以动态修改防火墙信任的程序

功能说明

服务器只需要开启对公众开放的服务的端口(80,443)以及本服务端口(6760),不开放管理端口(例如22,3306)等。 通过本程序动态信任管理者(自己)所使用的外网ip,实现仅管理者可以连接,以保证服务器及数据安全。本程序服务端与客户端通信需要一对公私钥,私钥放在服务器,公钥放在本地即可通信。

服务端

  • 支持定时通过dns修改信任ip,优先信任TXT解析的内容IP(支持多个解析记录),TXT未配置则尝试信任A记录解析的IP
  • 支持远程推送信任ip,需要私钥,保障安全通信
  • 生成秘钥对
  • 默认使用6760端口,服务守护模式(linux),结束后自动启动
  • 服务端仅支持linux

客户端

  • 支持自动识别本地外网ip并推送到服务器授信,需要公钥,保障安全通信
  • 支持windows,mac,linux,以及arm架构的系统

编译安装

配置仓库

go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/

交叉编译

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o build/dfw_linux_amd64 main.go
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o build/dfw_linux_arm64 main.go
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o build/dfw_mac_amd64 main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o build/dfw_windows_amd64.exe main.go

使用说明

服务端

参数说明

  • server #程序模式,默认server(服务端),install安装服务,uninstall卸载服务,genKey生成秘钥对(需要-id参数指定秘钥文件名)
  • -host #服务器提供服务的ip,默认为localhost,需要提供对外服务请指定ip或设置0.0.0.0
  • -port #服务端端口,默认6760
  • -timeout #超时设置,单位秒,默认位0不设置

命令实例

#curl -o dfw https://gitee.com/sorc/dfws/attach_files/1103945/download/dfw_linux_amd64 -O -L

# 给执行权限
chmod +x dfw
# 生成证书 会生成testid.key 和 testid.pub两个文件,分别是服务器秘钥 和客户端秘钥
./dfw genKey -id testid

# 服务端安装
./dfw install
# 启动服务
systemctl start dfw
# 停止服务
systemctl stop dfw
# 查看服务状态
systemctl status dfw

#debain ubuntu 开启端口防火墙
systemctl enable ufw && systemctl start ufw && ufw enbale
# 允许端口访问
ufw allow 6760/tcp
# 查看防火墙策略
ufw statusls

#centos redhat 开启端口防火墙
systemctl enable firewalld && systemctl start firewalld
# 允许端口访问
firewall-cmd --permanent --zone=public --add-port=6760/tcp && firewall-cmd --reload
# 查看防火墙
firewall-cmd --list-all
# 查看信任策略
firewall-cmd --list-all --zone=trusted
# 删除信任ip
firewall-cmd --permanent --zone=trusted --remove-source=  && firewall-cmd --reload

定时读取DNS v2.0版本暂不支持

# 给执行权限
chmod +x dfw
/datadisk/dfw/dfw dns -id mgrip.sction.org -checkPort 1080
crontab -e
0/10 * * * * flock -xn /tmp/dfw_1.lock -c '/datadisk/dfw/dfw dns -id mgrip.sction.org > /dev/null 2>&1 &'
3/10 * * * * flock -xn /tmp/dfw_2.lock -c '/datadisk/dfw/dfw dns -id mgrip.sction.cn > /dev/null 2>&1 &'

客户端

参数说明

  • client #程序模式,默认client(客户端)
  • -host #服务器主机ip或域名
  • -port #服务端端口,默认6760
  • -checkPort #服务检测端口,默认0不检测,检测端口是否可连接,可连接则不执行变更防火墙策略
  • -id #秘钥id,客户端就是放在config目录下的公钥名称xxx.pub其中xxx就是id
  • -timeout #超时设置,单位秒,默认位0不设置

命令实例

# 给执行权限
chmod +x dfw
# 将客户端生成的证书testid.pub复制到服务端程序目录
# 在客户端运行以下命令 将本机外网ip添加到服务器防火墙信任列表
./dfw client -host localhost -port 6760 -id testid

服务端卸载

./dfw uninstall

常用防火墙配置

# firewall-cmd --permanent --zone=trusted --add-source=60.28.60.xxx
# firewall-cmd --reload
firewall-cmd --permanent --zone=public --remove-service=ssh
firewall-cmd --permanent --zone=public --remove-port=22
firewall-cmd --permanent --zone=public --add-port=6760/tcp
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --reload
MIT License Copyright (c) 2022 sorc Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

一个可以动态修改防火墙信任的程序 功能说明 服务器只需要开启对公众开放的服务的端口(80,443)以及本服务端口(6760),管理端口(例如22,3306)等防火墙设置不开放。 通过本程序动态信任管理者(自己)所使用的外网ip,实现仅管理者可以连接,以保证服务器及数据安全。本程序服务端与客户端通信需要一对公私钥,私钥放在服务器,公钥放在本地即可通信。 展开 收起
Go
MIT
取消

贡献者

全部

近期动态

加载更多
不能加载更多了
Go
1
https://gitee.com/sorc/dfws.git
git@gitee.com:sorc/dfws.git
sorc
dfws
dfws
dev

搜索帮助