分类
Github 技术

Github 企业版如何限制访问IP?

有很多公司的 Github 企业版运行在完全的内网,有些公司的 Github 企业版运行在公网上。不管内网还是公网,从企业信息安全的角度上公司、安全人员或者管理人员总是希望给服务器加上 IP 访问控制。

我之前研究了下,原来 Github 企业版已经内置了 UFW 防火墙软件。其实,我们只需要简单的利用 UFW 防火墙增加一些访问规则就可以轻松的给服务器增加 IP 访问控制了。

UFW 的全称是 Uncomplicated Firewall,其实就是“不复杂的防火墙”,从名字就知道,UFW 的设计就是为了简单易用的,我大概玩了玩,感觉比 iptables 确实简单亲民多了。从Ubuntu 8.04 LTS 以后,UFW 都是默认的防火墙选项了。

首先,ssh -p 122 admin@yourip 连接到你的 Github 企业版终端后台。然后,执行:

sudo ufw status

输出结果大概为如下:

Status: active

To                         Action      From
--                         ------      ----
ghe-1194                   ALLOW       Anywhere                  
ghe-122                    ALLOW       Anywhere                  
ghe-161                    ALLOW       Anywhere                  
ghe-22                     ALLOW       Anywhere                  
ghe-25                     ALLOW       Anywhere                  
ghe-443                    ALLOW       Anywhere                  
ghe-80                     ALLOW       Anywhere                  
ghe-8080                   ALLOW       Anywhere                  
ghe-8443                   ALLOW       Anywhere                  
ghe-9418                   ALLOW       Anywhere                  
ghe-1194 (v6)              ALLOW       Anywhere (v6)             
ghe-122 (v6)               ALLOW       Anywhere (v6)             
ghe-161 (v6)               ALLOW       Anywhere (v6)             
ghe-22 (v6)                ALLOW       Anywhere (v6)             
ghe-25 (v6)                ALLOW       Anywhere (v6)             
ghe-443 (v6)               ALLOW       Anywhere (v6)             
ghe-80 (v6)                ALLOW       Anywhere (v6)             
ghe-8080 (v6)              ALLOW       Anywhere (v6)             
ghe-8443 (v6)              ALLOW       Anywhere (v6)             
ghe-9418 (v6)              ALLOW       Anywhere (v6)             

这些就是当年 Github 企业版内置的标准规则,你大概对照 Github 企业版端口文档,就大概知道这些端口是干啥的。

默认情况下不建议修改这些设置。但是如果你希望限制某些 IP 才能访问 Github 企业版的https端,那么你可以这样把某个 IP 例如 101.83.88.134 加入你的白名单IP:

sudo ufw allow from 101.83.88.134 to any port 443

系统会返回:

Rule added

这代表规则已经添加成功,你再执行 sudo ufw status,返回就会多一行:

443                        ALLOW       101.80.99.250             

然后,当你把全部要加入白名单的 IP 都加入以后,你还需要把原有的默认任何 IP 都可以访问 443 的规则删除,也就是 ghe-443 ALLOW Anywhere 那一行。

怎么删除呢?首先你要得到规则号码,这时候你可以用

sudo ufw status numbered

这样你就会发现,ghe-443 前面出现了一个编号,如下:

[ 6] ghe-443                    ALLOW IN    Anywhere                 

然后你执行

sudo ufw delete 6

这样默认任何 IP 可以访问 443 的规则就被删除了,这个时候你的服务器的 443 端口也就是 https 协议,只有你指定的 IP 可以访问了。

如果你想限制什么 IP 能访问服务器的终端后台,操作方法类似,只不过端口是 122。但是切记不要误操作,以免让自己无法登录终端后台进行维护了。

注:这个规则在 Github 企业版服务器升级的时候,会被抹除,所以,如果你指定好了相应的规则,你可以把它写成脚本,每次升级后再执行一次即可。

打赏

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据