안녕하세요 오늘은 gitlab 에있는 웹훅 (webhook) 기능을 사용하다 발생한 이슈에 대해서 작성 하려고 합니다.
최신 버전 GitLab 에서 같은 서버에있는 CI(Jenkins) 에 webhook 을 요청시에는
Internal Server Error 500 이 나타납니다.
일단 해당 이슈는 ssrf 관련 이슈이기 때문에 gitlab ssrf 라고 검색 하여도 충분한 결과를 얻을수는 있을 겁니다.
ssrf이슈인지 파악이 안됐었.. ㅜ
해당 내용 설명에 앞서 ssrf에 대해서 간단하게 작성하자면
SSRF ( Server - Side - Request - Forgery ) 서버 요청 위조
CSRF ( Client - Side - Request - Forgery ) - 클라이언트 요청 위조
SSRF는 CSRF 와 달리 서버가 직접 호출해서 발생하는 문제입니다. 서버가 직접 요청하는 바람에 외부에서 내부에 있는 리소소스 등 접근해서 서버 직접 제어가 가능해지기 때문에 해당 의 경우 SSRF의 위험성이 있기 때문에
Jenkins 서버와 GitLab이 같은 서버에 위치할때 루프백 (자기자신) 으로 요청하게 되면 SSRF 가 발생하게됩니다.
gitlab webhook 은 기본적으로 내부 서버 요청을 서버가 직접 하는것들을 SSRF 이슈로 인해 허용하지 않기 때문입니다.
그래서 기본적으로 gitlab 생성후 webhook 을 내부 같은 서버에 있는 jenkins(CI)에 호출하게되면 500 Internal Server Error 가 발생합니다.
우선 gitlab 업데이트 노트를 보겠습니다.
SSRF 이슈때문에 설정을 변경하여야 한다고 되어있습니다.
GitLab 에 접속합니다. (ROOT 계정)
루트 계정으로 접속하게되면 위와같이 admin Area 가 있습니다. 해당 스패너를 클릭합시다.
최하단에보면 Settings 라고 있습니다.
그리고 우측에서 쭉 내리다보면
Outbound requests가 있습니다.
Expand 해 주신 후에
Allow requests to the local network from hooks and services
를체크 해줍시다.
자 이제 gitlab을 재시작 하고 webhook 을 테스트 해보면 정상적으로 됨을 확인 하실수 있습니다.
gitlab 시작 및 종료
sudo -s gitlab-ctl start
sudo -s gitlab-ctl stop
gitlab 재 설정 후 재 시작
sudo -s gitlab-ctl reconfigure
// gitlab 기본 설정
https://ipex.tistory.com/entry/gitlab-기본-설정?category=768899
감사합니당~
'개발일지(Platform & Library) > git' 카테고리의 다른 글
출근했더니 gitlab-ctl 이???? (OMG!!! gitlab-ctl has been removed) (0) | 2019.02.07 |
---|---|
gitlab 프로젝트 재생성 안하고 폴더 날리기 (no reply git proejct and folder Delete) (0) | 2018.09.19 |
master -> master[rejected -non-fast-forward] (0) | 2018.06.12 |
git 명령어 (0) | 2018.06.08 |
gitlab 기본 설정 (0) | 2018.06.08 |