Gitlab使用第二篇(安全设置)
admin
2023-02-25 05:40:06
0

上一篇我们完成了Gitlab服务器的搭建以及简单设置,在最后总结时有强调Gitlab常用安全设置很有必要。这一篇我将从以下几点来完善Gitlab服务器的安全设置,欢迎共同探讨。

(1)、密码长度以及允许密码输错次数。

修改gitlab账户的密码长度以及允许密码输错次数,默认密码长度限制是8-128位,且默认允许输错密码次数为10次(10次锁定),现将密码长度修改为10-128位,允许输错次数为5次,锁定时间30分钟。

使用vi 编辑 /opt/gitlab/embedded/service/gitlab-rails/config/initializers/8_devise.rb

将位于116行的config.password_length = 8..128改为config.password_length = 10..128

将位于146行的config.maximum_attempts = 10改为config.maximum_attempts = 5

将位于149行的config.unlock_in = 10.minutes改为config.unlock_in = 30.minutes   #30分钟后自动解锁,默认是10分钟

注意:修改密码长度不影响已存在用户,只影响后续新建用户。

重启gitlab


# gitlab-ctl reconfigure

此时再注册或创建新账户时就要求密码长度是10位了,如图1所示。

Gitlab使用第二篇(安全设置)

图1


密码输错5次以上被锁定,但并不会在登录页提示账号被锁定,即使后面用了正确的密码,但会有邮件提醒。管理员可在Admin Area -->User具体要操作的用户,进行Unlock操作,如下图2所示。

Gitlab使用第二篇(安全设置)

图2


也可以使用管理员身份进入Rails控制台修改。

[root@mail ~]# gitlab-rails console -e production
--------------------------------------------------------------------------------
  GitLab: 12.5.2 (49482945d28)
  GitLab Shell: 10.2.0
  PostgreSQL: 10.9
--------------------------------------------------------------------------------
Loading production environment (Rails 5.2.3)
irb(main):001:0> 
等待控制台加载成功后,使用以下命令查找
irb(main):015:0> User.find_by(email: 'firefly@demo.com')
=> #
irb(main):017:0> User.unlock_keys #之前版本可能用的是User.unlock_access
=> [:email]

用户也可以在自己邮件中点击解锁,如图3所示。

Gitlab使用第二篇(安全设置)

图3


(2)、强制用户选用哪种SSH密钥技术以及最小密钥位数。

Gitlab对于用户选用哪种SSH密钥技术以及最小密钥位数是可配置的。ssh-keygen命令允许用户创建只有768位的RSA密钥(不指定位数创建默认为2048位),这远远低于某些标准组(如美国NIST)的建议。而部署GitLab的一些公司可能需要强制实施最小密钥强度,以满足内部安全策略或法规。

以管理员账户登录,点击"Admin Area" -->"Settings" -->"General" --> "Visibility and access controls",点右侧的"Expand"展开,如图4所示。

Gitlab使用第二篇(安全设置)

图4

使用ssh-keygen默认创建的RSA长度为2048位,如若创建RSA的密钥长度小于1024位就有被破解的风险,而DSA必须是1024位(DSA keys must be 1024 bits),按实际需求修改完成后,点“Save changes" 保存,如图5所示。

Gitlab使用第二篇(安全设置)

图5

(3)、对Gitlab的请求速率做限制。

速率限制是一种常用的技术,用于提高web应用程序的安全性和持久性。例如,一个简单的脚本每秒就可以发出数千个web请求,导致应用出现访问异常。Gitlab也可以作此限制来避免DOS***。

以管理员账户登录,Admin Area > Settings > Network > User and IP rate limits

用于限制以下三种场景的请求。

1、Unauthenticated requests(未经验证的请求)

2、Authenticated API requests(经过身份验证的API请求)

3、Authenticated web requests(已验证的web请求)

具体设置如图6所示。

Gitlab使用第二篇(安全设置)

图6

(4)、Gitlab访问日志归档周期管理。

gitlab使用svlogd来生成日志数据,日志默认都放在/var/log/gitlab目录,再使用内置的logrotate服务来滚动、压缩并最终删除runit未捕获的日志数据。可通过/etc/gitlab/gitlab.rb来配置日志相关属性。

[root@mail ~]# vi /etc/gitlab/gitlab.rb 
logging['svlogd_size'] = 1024 * 1024 * 1024 # 单个日志达到1024 MB时就自动滚动到新的日志文件
logging['svlogd_num'] = 300 # 保留300个已滚动的日志文件,超过的将被logrotate删除,保留久一点便于审计
logging['svlogd_timeout'] = 24 * 60 * 60 # 每24小时滚动一次
logging['svlogd_filter'] = "gzip" # 使用gzip压缩
logging['logrotate_frequency'] = "daily" # 按天滚动
logging['logrotate_rotate'] = 300 # 保留300个日志,超过300以后的被删除,保留久一点便于审计
logging['logrotate_compress'] = "compress" # 日志压缩方式,see 'man logrotate'
logging['logrotate_method'] = "copytruncate" #日志滚动方式, see 'man logrotate'
logging['logrotate_dateformat'] = "-%Y-%m-%d-%H-%M" #日志文件名格式,默认是数字,如access.log.1.gz,现在改为日期,如access.log-2019-12-03-16-30.gz

另外,我们还可以将Gitlab日志以及Gitlab服务器的系统日志全部收集到日志服务器上集中管理,具体配置将放在后续日志收集章节中讲。

(5)、如何重置Gitlab账户的root密码。能丢失root密码的管理员肯定是不会炒菜的。

想要重置root密码,第一步以root用户登录到系统,并运行一个Rails控制台。

[root@mail ~]# gitlab-rails console -e production
--------------------------------------------------------------------------------
  GitLab: 12.5.2 (49482945d28)
  GitLab Shell: 10.2.0
  PostgreSQL: 10.9
--------------------------------------------------------------------------------
Loading production environment (Rails 5.2.3)
  
irb(main):001:0> user = User.where(id: 1).first
=> #
然后,使用以下命令重置root密码
irb(main):006:0> user.password = 'root@12358'
=> "root@12358"
irb(main):007:0> user.password_confirmation = 'root@12358'
=> "root@12358"
保存修改
irb(main):008:0> user.save
Enqueued ActionMailer::DeliveryJob (Job ID: 35e1f3a6-7321-45bd-ba2e-60e4501a93c6) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", #>
=> true

这时root用户就可以使用刚设置的新密码登录了。

(6)、修改Gitlab服务器的ssh端口以及不允许root用户直接登录。

使用vi 编辑/etc/ssh/sshd_config

将17行的#Port 22 改为Port 6688

将38行的 PermitRootLogin yes 改为PermitRootLogin no

保存后,重启sshd服务(注:禁止root用户直接登录的前提是系统上有除root以外的可登录的普通用户)

[root@mail ~]# systemctl restart sshd

还有其他一些安全设置,如用户使用双因子身份验证等,我一般在堡垒机上才用,在Gitlab上基本不用,所以在此不再做详细说明,若大家还有其他常用安全设置 ,可告知一下,共同学习。

总结:安全无小事,一点都不能大意。但是,越想安全设置就越麻烦,一切要结合公司具体情况实施。

下一篇将分享Gitlab的权限管理、使用API Token创建组和仓库、数据备份、恢复等。

相关内容

热门资讯

伊朗确认前往美国参加世界杯:将... 当地时间5月6日,伊朗国家足球队主教练在接受采访时表示,伊朗国家足球队将于美加墨世界杯开始前14天抵...
雷达、机库、营房、燃料库、飞机... 据《华盛顿邮报》5月6日报道,通过卫星影像分析发现,自2月28日战事爆发以来,伊朗空袭已在中东美军军...
从买买买到租租租,“租用一代”... “五一”假期还在路上,年轻人已经“租”起来了。 “租三天,不到300块钱。”五一放假前一周,清清已给...
【品牌】摩托罗拉大折叠屏新机定... 此前联想预热将于5月19日19点举行联想天禧AI一体多端全场景新品超能之夜活动,届时将带来多款新品,...
常州欣隽益取得接线端子用快速冲... 国家知识产权局信息显示,常州欣隽益科技有限公司取得一项名为“接线端子用快速冲切装置”的专利,授权公告...
美媒:特朗普在结束伊朗战争问题... 据“国会山”网站5月6日报道,周二晚间,美国总统特朗普突然宣布终止旨在打破伊朗对霍尔木兹海峡掌控的军...
和创硅材料取得熔融石英制品擦洗... 国家知识产权局信息显示,东海县和创硅材料有限公司取得一项名为“一种熔融石英制品的擦洗脱泥装置”的专利...
美商务部长再就爱泼斯坦案接受国... 5月6日,美国商务部长卢特尼克“自愿”就其与爱泼斯坦的关系接受美国国会众议院监督与政府改革委员会的问...
“五一”小长假黄金零售市场新变... 【大河财立方 记者 孙凯杰】 “五一”小长假,黄金价格出现一波短暂调整,线下黄金零售市场热度如何?5...
以军3周来首次袭击黎巴嫩首都 据以色列总理内塔尼亚胡和国防部长卡茨当地时间5月6日晚发表的联合声明,以军当天对黎巴嫩首都贝鲁特南郊...