GitLab이란?
소스코드 저장소(Git)이나 통합 및 배포(CI/CD), 이슈 추적 등 소프트웨어 개발의 모든 과정을 한 플랫폼에서 관리할 수 있는 웹 기반의 DevOps 플랫폼으로, 소스 코드 관리(SCM)이나 CI/CD 자동화, 보안 및 모니터링 등의 기능을 제공하며 팀원들과의 협업에 최적화되어 있는 것이 특징이다.
누구나 접근할 수 있는 오픈형 커뮤니티인 GitHub와는 달리 자체 설치형으로서 회사나 팀원 공용 서버 내부에 소스 코드 및 작업 산출물들을 저장하여 폐쇄적으로 관리하므로 GitHub보다 좀 더 보안상으로 유리한 부분이 있다.
우리 프로젝트는 사실 개발 프로젝트가 아니라 보안 쪽, 그것도 여러 보안 솔루션 활용을 통한 인프라 보안? 구축 및 실습이 주 목적이다 보니 깃랩을 크게 활용하진 않았지만, 실전 환경과 최대한 비슷한 환경을 구축해 다양한 각도에서 보안 정책 및 고도화 등을 고민 및 구축해본다는 느낌을 주기 위해 개발망의 개발용 서버에 같이 구축해 보았다.
먼저 패키지를 준비한다.
apt update
apt install -y ca-certificates curl openssh-server tzdata
그 다음 깃랩의 CE 저장소를 추가한다.
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
The repository is setup 어쩌고 뜨면 추가가 잘 된 것이다.
이후 아래 명렁어로 CE 패키지를 깔아준다.
apt install gitlab-ce
여기서 시간이 좀 오래 걸린다. 느긋이 기다리다 보면,
아래처럼 화면이 뜰 것이다.

그럼 이제 /etc/gitlab/ 경로 안에 있는 gitlab.rb 파일을 편집기로 들어가서 external_url 부분을 본인이 원하는 도메인으로 바꿔준다. (이제 이 도메인으로 깃랩 홈페이지에 들어가게 된다.)

(주의: registry_external_url 얘는 아니다, 애초에 주석 처리가 되어있으므로 헷갈리지 말기)
이후 바뀐 설정을 적용하기 위해 아래와 같이 명령어를 입력한다.
gitlab-ctl reconfigure
얘도 마찬가지로 시간이 좀 걸린다. 느긋이 기다리자.
gitlab Reconfigured! 뜨면 적용이 잘 된 것이다.
(이후 gitlab-ctl status를 입력했을 때 모두 run 이라 뜨면 잘 실행되고 있는 것)
이후 해당 서버의 웹브라우저에 들어가 위의 external_url을 입력한다.
이 때, localhost가 아닌 위 사진처럼 커스텀 도메인을 지정하면 바로 안 들어가지는데,
/etc/ 경로의 hosts 파일을 편집기로 들어가서 루프백 IP에 해당 도메인을 짝 맺어주면 된다.

그런 뒤 브라우저에서 다시 도메인을 쳤을 때, 아래처럼 퐉스가 뜨면 성공이다.

이름이랑 비밀번호를 모르는데??
=> 이름은 gitlab을 깔은 리눅스 계정(여기선 root), 비번은 /etc/gitlab/ 경로 안의 initial_root_password 파일에서 볼 수 있다.

저 밑줄의 비밀번호를 복사해 붙여넣으면 되는데, 솔직히 너무 길고 복잡하다.
저걸 계속 쓰기엔 정신건강에 해로우므로, 프로필 설정에서 바꿔주자.


위 순서대로 들어가서 바꿔주면 된다.
이제 SSH 키를 등록해야 한다.
콘솔창에서 아래와 같이 입력해 RSA 키를 만들어 준다.
ssh-keygen -t rsa -b 4096
(키 값 길이는 굳이 4096을 주지 않아도 됨)
만든 키를 확인하여 gitlab 홈페이지에서 ssh 키를 등록한다.
root 계정으로 만들었다면 경로는 /root/.ssh/, 파일 이름은 id_rsa.pub
(참고: id_rsa는 개인키, id_rsa.pub는 공개키 파일, 개인키는 보관 각별히 할 것)

이제 위 사진의 'ssh-rsa' 부분부터 마지막의 '-VMware' 부분까지 모두 복사하여 아래 창에서 추가한다.


타이틀이 잘 뜨는지 확인한 뒤 저장하면 된다.
이제 테스트를 위해 프로젝트를 만들어 본다.
Projects 메뉴에서 새로운 프로젝트를 만들어 준다.


위 사진처럼 적절하게 프로젝트 이름 등을 추가해서 등록한다.

그럼 이렇게 프로젝트가 등록된 것을 볼 수 있다.
이제 커밋 테스트를 해 본다.
아래 사진처럼 프로젝트가 들어갈 디렉터리를 만든 뒤, Git 계정을 만들어 준다.

git config --global user.name “이름”
git config --global user.email “이메일”
이후 해당 프로젝트의 디렉터리에 들어간 뒤 아래 명령어를 입력한다.
git init --initial-branch=master
(디렉터리를 초기화한 뒤 Git 저장소로 만들고 저장소를 master라고 선언하는 명령어이다. 사실 굳이 master라 등록 안 해도 된다.)
커밋이 이루어질 원격 주소(gitlab 홈페이지 주소)를 아래처럼 입력한다.
(포트 뒤에 경로도 같이 적기)
git remote add origin http://potato.com:8081/root/local_test.git
(만약 주소를 잘못 적었으면 => git remote remove origin)
대충 시험 삼아 올릴 파일 하나 만든 뒤 상태를 확인해준다.

위처럼 추가/수정된 파일이 있으면 빨간색으로 뜬다.(git status 명령어로 확인할 수 있음)
아래 명령어로 커밋할 명단에 해당 파일 올린 뒤,
git add test.txt
(모든 파일을 한 번에 올리고 싶으면 'git add .' 라고 입력하면 된다.)
아래 명령어로 커밋한다.
git commmit -m “아무 메시지”

푸시를 해야 프로젝트에 올라가므로 명령어를 입력한 뒤,
git push -u origin master
gitlab 홈페이지의 ID/PW 입력하면 push가 완료된다.

이후 웹페이지의 프로젝트에 들어가보면 커밋 및 푸시된 파일을 확인할 수 있다.

이번 프로젝트에서 깃랩을 전혀 활용하지 않은 건 아니다. 도박이나 성인 사이트 등의 도메인들이 모여 있는 텍스트 파일을 구할 수 있었는데, 해당 텍스트 파일을 먼저 해당 서버로 옮긴 뒤 위에서처럼 깃랩을 이용해 프로젝트에 커밋/푸시를 한 다음 해당 프로젝트 내 파일의 URL을 OPNsense의 웹 스퀴드(웹사이트 접근을 제한할 수 있는 ACL 기능을 제공하는 프록시 서버 솔루션)에서 등록 + Remote Access Control Lists 설정을 건드려주면 각 서버마다 텍스트 파일 내 유해 도메인 접근을 차단할 수 있었다.
해당 텍스트 파일을 블랙리스트로서 활용하며 새로운 차단 대상 사이트가 생기면 따로 외부 연동 작업을 할 필요 없이 새로운 도메인만 추가해 다시 Commit/Push 하면 되고, 언제 왜 차단 사이트 목록을 갱신했는지 버전 추적도 가능하므로 GitLab을 활용한 보안 작업 역시 충분히 쓸모 있지 않을까 하는 경험을 얻을 수 있었다.
'보안 > 프로젝트' 카테고리의 다른 글
| OpenVPN 구성하기 (0) | 2026.01.31 |
|---|---|
| ProxySQL과 스플렁크 연동 및 대시보드 커스텀화하기 (0) | 2026.01.31 |
| 스플렁크 설치하기 (1) | 2026.01.31 |
| ProxySQL 쿼리 필터링 실습하기 (0) | 2026.01.31 |
| ProxySQL 설치하기 (0) | 2026.01.24 |