아치 리눅스 입문기

한국에서 아치 리눅스를?

아치 리눅스 말고 그냥 윈도우를 써도 되긴 한다. 윈도우는 편하고 쓰기 쉽다. 그리고 제일 유명하기까지 하다. 아마 세상 사람들한테 “윈도우 말고 다른 운영체제가 있다는 걸 아시나요?” 라고 물어보면, 대부분은 모른다고 할 거다. iOS나 안드로이드 같이 세부적으로 들어갈 수도 있지만, 데스크탑용 OS에 한정하면 보통 그렇게 말한다.

보안 프로그램 (보안 없음)
보안 프로그램 (보안 없음)

인터넷뱅킹 하나 하려면 아직도 괴랄한 보안 프로그램을 몇 개씩 깔아야 하는 대한민국에서는 이 모든 프로그램들이 윈도우”만” 지원하는 관계로 더더욱 윈도우 말고 다른 OS에 붙기가 힘들다. 가뭄에 콩 나듯 리눅스를 지원하는 프로그램들도 있긴 한데 보통 Debian 계열 + 통신용 브라우저 익스텐션을 설치해 쓰는 경우에 한정된다.

물론 보안 프로그램 그런 거 없는 외국이라고 해서 리눅스가 일반인들에게도 미친 듯이 활발하게 쓰이진 않는다. 윈도우의 원산지가 어디인지를 생각해보면 간단히 답이 나오고, 한국보다는 아니겠지만 리눅스로의 전환이 늘 성공적이지도 않다.1 그래서 사실 윈도우를 버린다는 것만으로도 특히 한국에서는 어마어마한 용기가 필요하다.

그럼에도 불구하고 왜 윈도우를 버렸는가?

첫 번째로 윈도우는 완벽한 클로즈드 소스 소프트웨어이며 전혀 프라이버시 친화적이지 않다. 물론 나는 별 볼일 없는 사람이라 “누군가 나를 지능형 공격의 타겟으로 삼지 않을까?” 같은 걱정은 아마 안 해도 된다. 그런데 이렇게 별 볼일 없는 사람들의 개인정보를 한 데 모으면 꽤 유용하게 사용할 수 있다.

누구세요?
누구세요?

얼마 전부터 전국민을 대상으로 이런 이상한 스팸 문자가 발송되기 시작했다. 사진은 다른 데서 퍼온 거지만 당연히 나도 다섯 번 정도 받아봤고, 평소에 이용약관에서 선택이 가능한 부분은 절대 선택하고 가입하지 않았기 때문에 도대체 어디에 내 번호가 팔린 건지 추측할 수가 없었다.

이 내수원툴 문어발 기업은 똑바로 하는 게 없다.
이 내수원툴 문어발 기업은 똑바로 하는 게 없다.

그러던 중 카카오페이가 알리페이에 해외결제를 이용하지도 않은 고객까지 포함, 휴대폰 번호를 포함해 무려 542억 건의 개인정보를 팔아넘겼다는 사실이 알려졌다. 한국에서 카카오 서비스를 한 번도 사용 안 해본 사람은 없다고 봐도 되기 때문에 연관관계를 짐작해봐도 좋을 듯한 상황이다. 안에서 무슨 일이 벌어지는지 전혀 모르는 서비스를 이용하면 보통 이렇게 된다.

윈도우는 앞서 말했듯 소스 코드가 공개되는 소프트웨어가 아니고, MS에 보내는 수많은 텔레메트리가 내장되어 있다. 이 텔레메트리 목록에는 설치된 하드웨어 및 소프트웨어 정보, 네트워크 정보, 크래시 로그, 심지어 설정값이 “전체”인 경우에 한하지만 특정 환경에서의 메모리 덤프까지 들어가있다. MS는 이 데이터를 절대 사적인 목적에 사용하지 않는다고 하지만, 그건 검증이 불가능한 문제고, MS 입장에선 회사가 반갈죽을 넘어 소멸하는 걸 보고 싶은 게 아닌 이상 실제로 그렇지 않아도 그렇다고 대답할 수밖에 없을 것이다.

OS는 내가 컴퓨터를 켜면 계속 보고, 계속 사용하는 것이기 때문에 나에게서 수집할 수 있는 데이터가 그 어떤 것보다도 많다. 나는 이걸 별로 좋아하지 않기 때문에 윈도우를 버릴 생각을 일찌감치 하고 있었다.

두 번째로 나는 윈도우로만 가능한 작업을 하지 않는다. 대학교 과제도 있고 해서 도커나 VM을 많이 다루는데, 이건 윈도우보다는 리눅스에서 오히려 더 매끄럽게 돌아간다. 인터넷뱅킹은 스마트폰이 있으니 컴퓨터로 할 이유가 없고, 게임은 스팀 게임의 경우 Proton, 그게 아니어도 Wine을 사용하면 돌아가는 게임밖에 안 한다. 한컴오피스는 뷰어를 깔아 쓰면 되고, MS 오피스는 LibreOffice를 쓰면 된다. 굳이 윈도우에 남아있을 이유가 없다.

너 힙스터니?
너 힙스터니?

세 번째로 힙스터 감성이 있다. 비단 OS뿐만 아니라 브라우저 분야에서도, 나는 텔레메트리 문제도 있지만 대다수의 사람들이 사용하는 웹 브라우저인 관계로 크롬을 포함하여 모든 Chromium 베이스 브라우저를 사용하지 않았다. 대신 파이어폭스를 사용하다가, 하드닝 버전인 LibreWolf를 사용하다가, 이젠 Zen Browser를 쓰고 있다.

I use arch, btw
I use arch, btw

OS라고 특별히 예외가 되지는 않아서, 원래 서버용으로는 안정성이 제일 중요하기 때문에 어쩔 수 없이 우분투를 사용하고 있었으나, 데스크탑은 한 번쯤 “힙해보이는” 아치 리눅스를 사용해봐도 되지 않을까 생각을 하고 있었다. 그러다 이번 추석 연휴가 마침 기간도 길고 해서 아예 갈아타기로 했다.

아치 리눅스 설치하기

ISO 파일이야 여기 있고, Ventoy 같은 걸로 대충 집어넣고 재부팅하면 인식해서 알아서 넘어간다. 예전에는 설치 도구가 아예 제공되지 않아서 공식 위키에 적힌 대로 파티션 분할, 시간 설정, 초기 패키지 설치/설정 등 명령어를 전부 하나하나 다 입력해서 설치해줘야 했는데, 다행히 요즘은 archinstall이라고 공식으로 제공되는 CLI 툴이 있어서 키보드 방향키만 딸깍딸깍하면 쉽게 설치가 된다.

설치 중 언어로 한국어를 선택할 수 있긴 한데, 폰트가 깔려있을 리가 없으니 다 깨져서 나온다. 어차피 영어를 한 글자도 못 읽는 사람이면 굳이 아치를 깔 이유가 없을 테니, 그냥 곱게 영어로 설정하고 설치하면 된다.

설치 전 와이파이 환경인 경우에는 iwctl을 사용해 와이파이에 무려 CLI로 연결해줘야 하는데, 이렇게 하면 된다.

# iwctl 대화형 모드로 변경
iwctl

# 디바이스 확인
station list
#--------------------------------------------------------------------------------
#  Name                  State            Scanning
#--------------------------------------------------------------------------------
#  wlan0                 disconnected

# 디바이스에 스캔 명령 전송
station wlan0 scan
# 이후 결과 확인
station wlan0 get-networks
# 확인된 SSID에 연결
station wlan0 connect <WIFI_SSID>
# 비밀번호를 묻는 창이 뜨면 비밀번호를 입력한다.
# 이후 셸을 빠져나간다.
quit

아치 리눅스 설정하기

여기서부터는 내가 설치한 DE인 KDE on Wayland 기준으로 작성되었으니 다른 DE나 Wayland 대신 X11을 선택했으면 구글에 물어보면 된다.

아치 리눅스 언어 (한국어) 설정

System Settings → Regional Settings → Language 들어가서 한국어로 설정 후 Apply 버튼 클릭을 하면 되는데.. 한국어 폰트가 기본적으로 설치가 안 돼 있는 관계로 Apply하는 순간 시스템의 모든 글자가 다 깨져 나오는 광경을 목격할 수 있다. 터미널을 열고 급한 대로 폰트를 설치해주자.

# 나눔고딕 TTF 설치
sudo pacman -S ttf-nanum

설치하면 그 순간 한글이 잘 보일텐데, 만약 안 보이면 재부팅을 한 번 해주면 보통 해결된다.

이렇게 설정을 했어도 한글은 아직 입력이 안 된다. Fcitx, Nimf, Kime, iBus 등 여러 입력기가 있는데, 여기서 Wayland 환경에서 잘 작동하는 걸로 확인된 입력기는 Fcitx밖에 없다. Kime는 JetBrains에서 만든 모든 프로그램에서 뭔 짓을 해도 한글이 입력이 안 되고, 나머지는 안 써 봤다.

# Fcitx5 설치 (Fcitx는 Maintenance Mode로 전환됨)
sudo pacman -S fcitx5 fcitx5-hangul

# 환경 변수 설정
cat << EOF | sudo tee -a /etc/environment
QT5_IM_MODULE=fcitx
QT4_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
EOF

이후 시스템 설정 → 키보드 → 가상 키보드로 들어가서 입력 방법을 Fcitx 5 Wayland Launcher로 설정하면 아마 그때부터 한글이 잘 입력되기 시작할 거다. 안 되면 역시 재부팅을 한 번 해보고, 한/영 키 누를 때마다 어떤 언어로 입력하는지 표시되는 게 불편하다면 시스템 설정 → 입력기 → 전역 옵션에서 “입력기 변경시 입력 정보 표시” 체크를 해제하고 적용하면 된다.

이렇게 끝나면 참 좋겠지만 Wayland 환경에서는 하나 문제가 있는데, Electron 기반, 정확히는 Chromium 기반의 애플리케이션에서는 여전히 한글이 입력이 안 된다. 이건 Electron 버전 33 (Chromium 130)에 가서야 해결될 예정인데, 사실 Electron 버전이 올라가도 애플리케이션이 그걸 반영을 안 하면 아무 소용이 없다.

어쨌든 한글 입력이 안 되는 Electron 기반 애플리케이션이 있다면, 임시방편으로 해당 애플리케이션 실행 시 argument에 --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime 를 추가해주면 된다.

이렇게 추가하면 된다.
이렇게 추가하면 된다.

Discord를 예로 들어 그냥 이렇게 추가해주고 프로그램을 완전히 종료 후 재실행하면 그때부터는 한글 입력이 잘 된다.

pacman 레포지토리 수정 및 yay 설치

아치 리눅스는 기본적으로 pacman을 사용하여 패키지를 관리하는데, multilib 패키지가 기본적으로 비활성화되어 있어 관련된 작업을 할 때 좀 난감한 경우가 있을 수 있다. 이 패키지는 /etc/pacman.conf 파일을 수정하여 활성화할 수 있다.

# 설정 파일 진입
sudo nano /etc/pacman.conf
# 다음 항목 모두에서 Comment 제거
#[multilib]
#Include = /etc/pacman.d/mirrorlist

# 이후 Ctrl + X, Y, 엔터 키를 차례대로 눌러 변경 사항 저장

또, 데비안의 PPA 정도 되는 위치인 AUR (Arch User Repository)에 있는 패키지는 pacman만으로는 못 끌어온다. 이걸 해결해주는 프로그램이 yay이다. paru 같은 대체품도 있긴 한데 그냥 yay를 설치하기로 했다.

# Git 및 base-devel (build-essential 정도의 위치) 설치
sudo pacman -S --needed git base-devel
# Git repository 클론
git clone https://aur.archlinux.org/yay.git
# 디렉터리로 이동
cd yay
# 빌드 후 설치
makepkg -si

pacman을 사용할 때 항상 sudo를 붙였던 거랑 다르게 yay는 실행 시 알아서 sudo를 붙이기 때문에 굳이 sudo yay 처럼 할 필요가 없다.

아치 리눅스에서 yay를 처음 쓰면..
아치 리눅스에서 yay를 처음 쓰면..

그 후 터미널에 그냥 yay만 입력하면 알아서 시스템 전체 업데이트를 확인하고, 업데이트가 있는 경우 어떻게 할 거냐고 물어본다. 굳이 업데이트하지 말아야 할 패키지가 있다면 번호를 입력하고, 아니면 그냥 엔터 키를 눌러 업데이트를 설치해주면 된다. yay를 주기적으로 실행해서 업데이트를 확인해줘야 시스템의 보안이 유지될 수 있다.

GPU/CPU 드라이버 설치

AMD 및 nVIDIA GPU 환경이기 때문에 그에 맞는 패키지를 깔아주면 된다.

yay -S amd-ucode nvidia-beta-dkms nvidia-utils-beta nvidia-prime nvidia-settings ryzen-controller-bin ryzenadj-git

Microcode는 CPU 보안 패치 관련 코드를 포함하고 있는 관계로 거의 필수로 설치해야 하는 패키지라고 보면 된다. nVIDIA GPU 드라이버의 경우 dkms가 붙은 게 있고 안 붙은 게 있는데, 전자는 커널 initramfs 이미지를 재빌드하는 패키지이고 후자는 아닌 패키지이다. 커스텀 커널을 사용한다면 반드시 dkms 버전을 설치해야 하고, 아니면 굳이 필요는 없다.

브라우저 설치

Chrome은 제발 쓰지 말자. 소스 코드가 공개되어 있지도 않고, 전혀 프라이버시 친화적이지 않은 기업에서 만든 브라우저이다.23 Brave, Whale 등 Chromium 기반의 다른 브라우저들도 똑같다. 텔레메트리를 어디로 보내냐의 차이일 뿐이다. Chromium이 너무나도 쓰고 싶다면 차라리 Ungoogled Chromium이나 Cromite를 쓰자.

# Ungoogled Chromium 설치
yay -S ungoogled-chromium-bin

# Cromite 설치
yay -S cromite-bin

# Zen Browser 설치 (Firefox 기반)
yay -S zen-browser-bin

패키지 이름 뒤에 붙어있는 -bin은 바이너리만 제공한다는 의미이다. 보통 그게 안 붙은 패키지는 소스 코드를 받아서 직접 컴파일한다. binary reproducibility를 따지는 사람이면 떼고, 귀찮으면 붙이면 된다.

아치 리눅스용 백신.. 설치?

리눅스용 바이러스를 일부러 설치하기 위한 삽질
리눅스용 바이러스를 일부러 설치하기 위한 삽질

리눅스용 바이러스를 “일부러” 설치하기 위해 누군가 한 삽질의 목록이다.

root로 실행했는데도 작동하지 않아 원인을 분석해봤더니 /usr/local/bin 대신 malware 사용자가 쓸 수 없는 /usr/bin 디렉터리에 프로세스 파일을 생성하려고 시도하고 있었다.

패치된 Makefile로 재빌드 후 시도해봤더니 CentOS에는 기본으로 포함되어 있지만 이 사용자가 쓰는 배포판인 Ubuntu에서는 그렇지 않은 라이브러리 cmalw-lib-2.0을 링크하려고 시도한 탓에 또 작동하지 않았다.

소스에서 .deb 패키지를 만드는 법을 찾아내 빌드 후 시도해봤더니 코어 덤프를 뿜으며 크래시가 발생했다. 이 바이러스는 사용자가 ext4 파일 시스템을 사용할 것을 가정하고 관련된 디스크 암호화 API를 호출하고 있었는데, 나는 그 API가 deprecate된 btrfs 파일 시스템을 사용하고 있었다. 커널이 이를 감지하고 파티션을 읽기 전용으로 만들어버렸고, 때문에 바이러스는 뻗어버렸다.

나는 결국 소스 코드를 뜯어 비트코인 지갑 주소를 확인하고, 5달러를 적선했다.

라이브러리 이름인 cmalw-lib-2.0에서 아마 눈치를 챌 사람은 챘겠지만, 만들어진 가상의 이야기이다. 그런데 다소 유감스럽게도 실제로 이런 일이 있었다고 해도 별로 이상함을 느낄 수가 없다. 배포판마다 기본으로 포함된 라이브러리 등 의존성이 안 맞아서 CentOS에선 돌아가는 게 Ubuntu에선 안 돌아가거나, 그 반대거나 하는 일이 꽤 자주 있기 때문이다.

APT 공격 같은 경우에는 당연히 피해자에 대한 사전 조사가 들어가기 때문에 리눅스를 써도 당할 수밖에 없겠지만, 보통 절대다수의 바이러스는 사용자가 많은 WinNT 커널 용으로 컴파일 및 배포된다. 리눅스는 커널 구조부터 다르기 때문에 전혀 작동하지 않는다. 일부러 실행하려고 해도 앞서 언급한 가상의 사례처럼 의존성이 꼬여서 실행이 안 될 가능성도 있다.

물론 이건 데스크탑 이야기고, 서버 분야에서는 리눅스가 윈도우를 압도하기 때문에 리눅스를 타깃으로 한 공격이 활발히 일어나는 편이다. 당장 적당한 업체에서 VPS를 하나 구해서 웹 서버 데몬을 설치하고, 액세스 로그를 보고 있으면 별의별 창의적인 공격 시도들을 볼 수 있다. 데스크탑에서도 리눅스용 멀웨어는 존재한다.

정 불안하면 ClamAV 같은 걸 깔면 되겠지만, 리눅스용 백신들은 감염된 파일이 네트워크에 전파되는 걸 막기 위한 목적이 더 크다. 리눅스는 기본적으로 서버 등 서비스를 제공하는 걸 상정하기 때문에, 감염된 파일이 그대로 제공되면 대재앙이 벌어지기 때문이다.

조심할 것은 root이다. 리눅스의 root는 윈도우의 Administrator보다 비교할 수 없을 정도로 강력한 권한을 가지고 있기 때문에, root가 뚫리면 시스템은 그날로 끝장난다고 보면 된다.

완성된 아치 리눅스

I use Arch on KDE, btw
I use Arch on KDE, btw

KDE Plasma 환경의 훌륭한 작업용 노트북이 완성되었다.

  1. https://en.wikipedia.org/wiki/List_of_Linux_adopters ↩︎
  2. https://www.washingtonpost.com/technology/2019/06/21/google-chrome-has-become-surveillance-software-its-time-switch/ ↩︎
  3. https://wisdateline.org/13525/op-ed/opinion-op-ed/google-chrome-is-spying-on-you/ ↩︎
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x