Hướng dẫn khắc phục lỗ hổng bảo mật CVE-2019-11477 trên Cloud365
Hướng dẫn khắc phục lỗ hổng bảo mật CVE-2019-11477 trên Cloud365
Nơi chứa các tài liệu tham khảo của dịch vụ Cloud365.
Webhook là một interface của Git (Gitlab, GitHub, Bitbuket) cho phép tích hợp các ứng dụng bên ngoài theo dõi bất cứ sự thay đổi nào trên Repo của bạn. Từ push, tạo issue, tạo pull request mới … Và từ các thông tin này thì ứng dụng được tích hợp đó có thể thực hiện một công việc nào đó
Webhook sẽ chọn các sự kiện (Event) để trả về các payload tương ứng. Nó giúp bạn có thể theo dõi một cách
Tiến hành create 1 cặp key xác thực để từ Jenkins Server có thể kết nối đến được Gitlab Server
canhdx@CanhDX:~$ ssh-keygen -b 2048 -t rsa -f gitlab -q -N ""
canhdx@CanhDX:~$ ls -la gitlab*
-rw------- 1 canhdx canhdx 1679 Apr 2 14:53 gitlab
-rw-r--r-- 1 canhdx canhdx 395 Apr 2 14:53 gitlab.pub
canhdx@CanhDX:~$
Có thể thực hiện create cặp key xác thực trên bất kỳ PC, Server nào
gitlab.pub
sẽ được add vào project trên gitlabgitlab
sẽ được add vào Jenkins để Jenkins có thể thực hiện các thao tác trên project được chỉ định của GitlabĐăng nhập vào Gitlab thực hiện tạo mới Project
Bổ sung thông tin project chọn Create Project
Thực hiện add key
Copy nội dung file gitlab.pub
đã được tạo
canhdx@CanhDX:~$ cat gitlab.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCfggIs5odPQ2ViCHYPhybenvvxatsFMTG8PnXmG5i1ww2/QpqYqQlIddHYmAPE/ZeBVTisS3SFZTHl2dJVGZ+SnViEpcYqHWxF2qpvchlwuRfDBRqQHR0tw2yQh5lkjh/ZDonngbLfwNUHsZhx1/xiDtz3WGXXwZ/lv+h4Cy97+yVp0l6VneM5OXTMysCNqMrzwjH5s94B/9kVHtCTonwddhTFWjQs/D1l9PYQMqmEsO5HzixhUuFqyFi4n8tpxeFyKQrT8yKNYimPVDF/wqtL1MTag/L74PVoNK806Rvyl18V80AQFxhc8buaLHxl8fFqxZcJWaoWdENy3r2KTY4D canhdx@CanhDX
Paste nội dung key vào ô Key
và click Add key
Key được add thành công
Truy cập Access Tokens
để bắt đầu tạo access tokens
Ở đây chúng ta bổ sung thêm các thông tin Tên, Ngày hết hạn token, và quyền của token
Token được tạo thành công, lưu trữ token lại tiến hành cấu hình trên Jenkins
Thực hiện add commit đầu tiên bằng cách tạo file readme.md
Thành công tạo first commit
Tiến hành cài đặt bổ sung thêm Gitlab Plugin
trên Jenkins. Jenkins
–> Manage Jenkins
–> Manage Plugins
Chọn tab Available
filter Gitlab
và chọn Plugin Gitlab
Quá trình cài đặt plugin được thực hiện, tích vào Restart Jenkins sau khi Plugin cài đặt
Jenkins restart
Tiến hành SSH vào Jenkins Server để cài đặt thêm git
yum install git -y
Đăng nhập lại Jenkin với user có quyền admin tiến hành cài đặt các Credentials truy cập Credentials
-> global
Copy nội dung file gitlab
đã được tạo
canhdx@CanhDX:~$ cat gitlab
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAn4ICLOaHT0NlYgh2D4cm3p778WrbBTExvD515huYtcMNv0Ka
mKkJSHXR2JgDxP2XgVU4rEt0hWUx5dnSVRmfkp1YhKXGKh1sRdqqb3IZcLkXwwUa
kB0dLcNskIeZZI4f2Q6J54Gy38DVB7GYcdf8Yg7c91hl18Gf5b/oeAsve/sladJe
lZ3jOTl0zMrAjajK88Ix+bPeAf/ZFR7Qk6J8HXYUxVo0LPw9ZfT2EDKphLDuR84s
YVLhashYuJ/LacXhcikK0/MijWIpj1Qxf8KrS9TE2oPy++D1aDSvNOkb8pdfFfNA
EBcYXPG7mix8ZfHxasWXCVmqFnRDct69ik2OAwIDAQABAoIBAB3C4C0Ihk6fwJbe
BUk4amQ3PcL5sQvy9ditvsnEdGXVkwcQok/Bml3Oveyv0GQ8/LvA7uYW3hLVos3E
Kp5+PWvZt95oH+VTwBP4jLxmiaCiqHBWz3H8PKmBQQxmgJRmgEK7l7d+V6WwEQ9y
b4MuTYTuSQRNlhL/qZnwiKt9SsrS8ejv+fAbHpb/DvYJGyD9zCoAEQthi4HCnBQD
R3v00wL3PHT/f90kPsX+2rzV7hzjjogZEzPpqs9GOQ/6TeXkLJTWz/0P07GGE98b
qTLFEd0nCBkqsEmlKBRanNyIYBZFAe8oPQdxmmdfSNq44IAVoVz+L9cXT2gYKvOh
mVOgKGECgYEAzYj13Kj7jMSXlqWsw0vgDf34DRPaUNuNtA7d9P2ojx4uXgYl8oXV
wGbj7COokCN1bt1tnBVU0amwxzrjtVn5s3MgtRJY/k3kn9FawThcgR3x1f5VHlNE
81ASntGMiYE2f1njdqCHZYHXZBRYu8Raa2o5n/ufKs2K9eSrBp4RvWcCgYEAxqv7
A2NbxTPIA2UrMjjN5+ySug3oexOPP5l8U0T9tz0zy5gDgBx4jrPqaxJLEDFhcfC1
Pd+yDOMnTghXY4To2ftG34PN4OQXLQO9zsXi1/tJkyh/XDr16UZi2uUNbDN4UUkf
MQgVpcWLuWAbXkw2xVcP13S/ze5lGAxj2KUwbQUCgYEAhmDlXj+dN4vREE2Bhq40
7vD9HI++TN8+5lpSA7tUWT4CUrbyWH3oIsMigWFO8+46+SEMaOAJdIrdaWS3O/p3
pzu+RqSYSqvirhrSm0GeOUy6sI54WDtY+TuA8RVQLRat6tV6QjTyUQtzJ5ul6B2Y
gGITCuYYSoPYNqwqpUjzkEECgYBVew3nqUqFEQCQJWlulG5TycBf+Tf8LLBH5xxN
H7QisVylzuRCrP1aOSM1qotNjlGlGrKAyszrKplww7oGAdvGXo1iAm4Ew18NaTyz
yQUPdPl1LcmOv3erRTOnh0I9OfAc2V9oU1gtGVBDFIzyB8zRH+KbC4qzak1pCXu0
bW7mmQKBgQC7iW1ZpNgw65a4SWqlGyUXum0DSIJshZifIGAtw/Pv4KqevddjVd5r
n7o/NHVxTOzY7qN8J3v+3Ba6PdqY/N+JIuQQKo4a2tOOtBEAH/FpZV6YL5E3TVnz
j04qzuNF8drjVnF80VN1lWPA5luS6DBL0Z3+jN3queC+2hhgbDgSpQ==
-----END RSA PRIVATE KEY-----
canhdx@CanhDX:~$
Chọn Add Credentials
và điền các thông tin cần thiết
Tiến hành add thêm Credentials cho Gitlab API tokens
Bổ sung thêm các thông tin và key API đã tạo trên GitLab
Credentials với API token và SSH key được tạo thành công. Quay ại tran chủ tiếp tục cấu hình
Cấu hình kết nối giữa Jenkins và Gitlab Manage Jenkins
-> Configure System
Cấu hình tên địa chỉ và API tokens của Gitlab và kiểm tra kết nối
Sau khi kiểm tra kết nối thành công thì lưu lại cấu hình cài đặt
Thực hiện tạo mới Freestyle Project
với name Jenkins-Gitlab-Webhook
Cấu hình thêm các thông tin cho Project
Gitlab connector
git@10.10.12.94:root/jenkins-webhook.git
<= Tạo trước đó trên GitlabJenkins key
<= Tạo trước đóorigin
+refs/heads/*:refs/remotes/origin/* +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*
origin/${gitlabSourceBranch}
Copy Secret key và GitLab webhook URL
để cấu hình bên Gitlab
Bổ sung shell thực thi và lưu lại Project
Lưu lại đường dẫn của Project để cấu hình webhook
http://10.10.12.89:8080/project/Jenkins-Gitlab-Webhook
Đăng nhập vào Gitlab bằng quyền Admin và truy cập vào Admin Area
Truy cập Setting
–> Network
Trong mục Outbound requests
cho phép các request hook đến local
Quay lại Project Jenkins-Webhook
truy cập Settings
–> Integrations
bổ sung các thông tin về URL …
Webhook đã được tạo thành công
Kiểm tra kết nối của của Webhook đến Jenkins
Kết quả trả về 200 là hook đến Jenkins thành công
Quay lại project Jenkins kiểm tra quá trình build được tự động thực hiện
Kiểm tra chi tiết quá trình build
Truy cập log console để kiểm tra
Log hiển thị build thành công
Quá trình Deploy một Project(trong Gitlab) lên Server(Jenkins) được thực hiện tự động mỗi khi có các hành động push trên Repo Jenkins-webhook.
Ở bài kế tiếp chúng ta sẽ tìm cách sử dụng Jenkins để triển khai Repo này lên một Server khác.
############ ############# ###################
# Gitlab # --> # Jenkins # --> # Deploy Server #
############ ############# ###################
Thực hiện bởi cloud365.vn