Securing Keys

[Linux for Security] Gentoo 파일시스템 구성 및 Chrooting 본문

IT/Linux

[Linux for Security] Gentoo 파일시스템 구성 및 Chrooting

GRACE_MJ 2019. 12. 7. 00:11

 

저번 포스팅에 이어 계속해서 Gentoo Linux 환경 설정을 진행하도록 하겠다

↓↓↓

https://secure-key.tistory.com/15

 

[Linux for Security] Gentoo Linux 파티션 포맷 및 마운트

Redhat, CentOS 등과 다르게 Gentoo Linux (젠투 리눅스)는 사람들이 많이 사용하지 않는 리눅스이다 따라서 처음부터 끝까지 모두 내가 직접 설정해줘야 하는 OS인 동시에 원하는대로 customizing할 수 있다는..

secure-key.tistory.com

 

 

 

/home /bin /etc 등의 file system 구조를 형성해주기 위해 https://www.gentoo.org/downloads/에 존재하는 Stage3 파일의 링크 주소를 복사해준다

 

 

Stage3 파일를 / 파티션에 (= /mnt/gentoo) decompress 해주기 위해 우선 다운을 받는다

cd /mnt/gentoo
wget --no-check-certificate [링크주소]

 

 

다운받은 파일의 압축을 풀어준다

tar -xvf stage3_amd64.tar.xz

 

 

 

이제부터 Chrooting을 진행할 것이다

Chroot란, 말 그대로 루트 바꾸기, 즉 메인 시스템의 root에서 논리적으로 나누는 새 환경을 만들 때,

눈에 보이는 루트 디렉토리를 바꾸는데 사용하는 유닉스 시스템 유틸리티이다

간단하게 정리하자면 분할 시스템 만들기, 가상화하기, 프로세스의 루트 디렉터리 격리이다

 

 

우선 Portage configuration을 configuration folder로 copy해야 한다

여기서 portage는 the system used for downloading and installing softwares in gentoo를 의미한다

mkdir /mnt/gentoo/etc/portage/repos.conf
cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf

 

 

그리고 빠른 다운로드 속도를 위해 내가 현재 위치한 지역과 가까운 mirror로 선택해주었다

본인은 현재 프랑스 파리에 위치해 있으므로, 프랑스, 독일 등의 mirror를 선택했다

mirror는 간단하게 website라고 간주하여도 되고,

아래 명령어에서 쓰인 >>는 redirection을 의미한다 (c.f. >는 overwriting entire data)

즉, mirrorselect -i -o의 아웃풋이 /mnt/gentoo/etc/portage/make.conf로 넘어간 것이다

mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf

 

 

그리고 새로 설치한 gentoo 환경이 올바른 DNS server config를 갖고 있는지 확인해준다

여기서 resolv.conf는 DNS server를 setting하는 파일에 해당한다

cp /etc/resolv.conf /mnt/gentoo/etc/

 

 

 

그리고 Chrooting을 위한 환경을 제대로 조성해준다

아래의 명령어들은 우리가 만든 proc, sys 등이 live CD로 연결(link)되게끔 해주는 작업에 해당한다

proc은 내가 만들어 주는 격인거고,

sys와 dev는 --rbind와 --make-rslave 옵션을 통해 내가 지정해준 두 디렉터리가 서로 미러링 되도록 하였다

mount --types proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/dev

 

 

chroot를 함으로써 gentoo 안에 들어가서 어떤 작업이든 할 수 있게 된다

/ 는 data from live CD에 해당되고,

/mnt/gentoo가 바로 Chrooting을 통해 우리가 만든 환경에 해당된다

/mnt/gentoo는 다시 말해 VM과 같은 fake environment이고,

/ 가 사실 real environment이기 때문에 여기에 있는 실제 데이터는 공격을 당해도 안전하다

 

 

이제 chroot 환경으로 진입을 해보자

chroot /mnt/gentoo /bin/bash 명령어를 통해 ls / 를 해도 ls /mnt/gentoo를 한 것과 같아진다

chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) ${PS1}"

 

 

이제 이어서 boot 파티션을 마운트하고,

mount /dev/sda1 /boot

 

 

repository of gentoo를 인터넷으로부터 다운받는다

여기서 emerge-webrsync는 우분투에서의 apt-install과 같은 역할이다

그 후 모든 설치되어 있는 패키지들을 업데이트한다

emerge-webrsync -q
emerge --update --deep --newuse @world

 

 

그 후 timezone을 설정한다

이 또한 자기가 위치해 있는 곳에 맞춰서 설정하면 된다

나는 프랑스 파리에 있기 때문에 아래와 같이 설정해주었다

echo "Europe/Paris" > /etc/timezone
emerge --config timezone-data

 

 

그리고 locales를 설정해준다

locales는 언어 뿐만 아니라 날짜, 시간 등도 specify해준다

그리고 이러한 설정은 /etc/locale.gen 에서 이루어 진다

nano /etc/locale.gen

여기서 en_US ISO-8859-1과 en_US.UTF-8 UTF-8의 주석을 없애 주었고

아래의 명령어로 적용해주었다

(마지막 명령어에서 6은 en_US.utf8을 의미한다)

locale-gen
eselect locale list
eselect locale set 6

 

 

이러한 모든 환경 설정을 아래의 명령어로 업데이트해 주었다

env-update && source /etc/profile
Comments