본문 바로가기
Linux/Commands

[Linux] chroot jailing - 유저 다른 경로 접근방지

by giem 2022. 10. 14.
반응형

 

오늘은 오랜만에 리눅스 환경 관련 설정법을 가져와 봤다.

 

이 방법은 다른 팀에게 장비를 알려주었을 때

특정 디렉토리 밖의 것을 보지 못하도록

(그 디렉토리 이외에 다른 것이 없는 것처럼 보이도록)

설정하는 방법이다.

 

감옥 안에 가두는 것과 비슷해서 jailing이라고 하는 것 같다.


 

먼저 user를 생성한다.

jail이라는 이름으로 하겠다.

useradd jail
passwd jail

 

그 유저용 환경을 생성해주기 위해 필요한 디렉터리를 생성해준다.

mkdir -p /[PATH]

여기서 [PATH]는 user의 root가 될 경로다.

절대 경로로 해주는 것이 헷갈리지 않아서 앞의 /를 넣어서 명령어를 치겠다.

 

root가 바뀌고 다른 경로 접근이 안되기 때문에

리눅스 환경을 설정하기 위해 필요한 디렉토리를 만들고 권한 설정을 해준다.

#PATH는 루트가 될 경로
mkdir -p /[PATH]/{dev,etc,lib,lib64,usr,bin}
mkdir -p /[PATH]/usr/bin
chown root.root /[PATH]

 

먼저 /dev에 설정되어 있는 것을 확인 후 [PATH] 아래의 dev에 다음과 같이 설정해준다.

mknod -m 666 /[PATH]/dev/null c 1 3
mknod -m 666 /[PATH]/dev/random c 1 8
mknod -m 666 /[PATH]/dev/tty c 5 0
mknod -m 666 /[PATH]/dev/zero c 1 5

 

/etc 아래에 있는것들중 필요한 파일들을 [PATH]/etc에 복사해준다.

cd /[PATH]/etc
cp /etc/ld.so.cache .
cp /etc/ld.so.conf .
cp /etc/nsswitch.conf .
cp /etc/hosts .

 

/usr/bin 아래에 있는 파일들을 복사해서 명령어를 사용할 수 있도록 한다.

cd /[PATH]/usr/bin
cp /usr/bin/ls .
cp /usr/bin/bash .

 

여기서 링크된 라이브러리들을 ldd 명령어로 확인 후 PATH 아래에 같은 경로에 복사해준다.

아래는 ls를 확인하는 예제다.

ldd ls

 

필요한 명령어들을 모두 추가했으면

/etc/ssh/sshd_config 파일의 마지막에 다음과 같이 추가한다.

Match group [USER]
          ChrootDirectory /[PATH]/
          X11Forwarding no
          AllowTcpForwarding no

여기서 USER는 jail을 넣으면 된다.

 

이 설정을 저장한 후 ssh 데몬을 restart한다.

centos 기준 systemctl restart sshd를 하면 된다.

 


이 방법은 서버에서 해당 디렉터리 이외의 접근은 아예 못하게 할 수 있어서

장비 정보를 프로젝트 외부의 사람들에게 전달할 때 많이 사용된다.

반응형

'Linux > Commands' 카테고리의 다른 글

[Linux] 시스템 타임 존 변경하기  (4) 2022.07.28

댓글