Infra/Linux

[Linux] 보안을 위한 git 계정의 shell 권한 제한

당닝 2021. 11. 12. 14:28
728x90

git 계정은 깃 서버로서의 역할 외에는 해야 할 일이 없다.

만약 bash 사용 권한을 제한하지 않으면 git 계정으로 ssh에 접근하는 유저들이 서버의 파일들을 조작할 수 있어서 보안상 바람직하지 않으므로 shell 실행 권한을 제한해야 한다.

 

방법은 다음과 같다.

 

[root@centosserver ~]# sudo vi /etc/passwd

다음 명령어로 /etc/passwd 파일을 연다.

 

 

git 정보를 찾고 bash를 git-shell로 변경한다.

# 변경 전
git:x:1001:1001::/home/git:/bin/bash

# 변경 후
git:x:1001:1001::/home/git:/bin/git-shell

1001:1001은 환경에 따라 다르므로 만약 다르다면(ex 1002:1002) 그대로 두면 된다.

 

 

이후 로그인을 시도하면 git 유저의 접근이 불가능해졌다.

앞으로 새 저장소가 생길 때 root 권한으로 생성해서 git에게 소유권을 주는 방식으로 진행해야 한다.

번거롭지만 보안을 위해서 감내해야 할 부분이다.

 

 

+) 클라이언트로 깃 사용하기

 

먼저 useradd 사용자이름 명령어를 통해 클라이언트를 만들어준다.

이후 passwd 사용자이름 명령어를 통해 비밀번호를 설정한다.

 

이후 만든 클라이언트 계정으로 로그인해 깃에 사용자 등록을 한다.

$ git config --global user.name "사용자 이름"
$ git config --global user.email "사용자 이메일"

다음 두 명령어로 등록하면 된다.

(만약 failed to stat '.': Permission denied 라는 오류가 뜬다면 경로가 root 디렉터리로 되어있진 않은지 확인해보자.)

 

 

$ cd
$ mkdir .ssh

이후 키 생성을 위해 .ssh 디렉터리를 생성한다.

 

 

이후 ssh-keygen -t rsa를 입력해 키를 생성한다.

passphrase를 입력하라고 뜨는데, ssh-key를 재차 암호화할 비밀번호이다. 생략해도 무방하다.

만들어진 id_rsa.pub을 WinSCP와 같은 툴을 통해 home/git/.ssh에 옮겨준다. 이름은 git-cla_id_rsa.pub으로 변경한 뒤 옮겼다.

 

 

이후 root 계정으로 로그인해서, cat git-cla_id.rsa.pub >> authorized_keys를 입력해 클라이언트의 public 키를 authorized_keys에 append한다.

 

728x90