Vault 를 사용한 TrustedUserCAKeys 기반 SSH 인증 구현

LDAP 또는 Kerberos 같은 통합인증(Single Sign-On)을 사용하지 않는 환경이라면 password 인증 또는 authorized_keys 인증을 주로 사용할 것이다. 팀 구성원에 변화(입사/퇴사)가 생기는 경우 password 를 변경하거나, 사용자의 public key 를 authorized_keys 에서 제거 또는 추가를 해야 한다. ansible 같은 도구를 통해 관리를 해 나갈수 있지만 쉽지만은 않다. 게다가 인프라가 지속적으로 늘어나기에 이상적으로 관리하는 것은 쉽지 않은것 같다. 그래서 보통은 private key 를 공유해서 사용하는 경우가 빈번한것 같다. CA(Certificate Authority) 기반 인증 CA 서버를 통해서 각 사용자의 public key 에 대한 서명된 인증서를 발급받아 SSH 인증에 사용하는 방법이다....

October 22, 2020 · foobargem

RPi3로 wifi extender 만들기

굴러다니는 RPi3 를 활용해서 wifi extender (wifi 拡張ポイント)를 만들어 보았다. LAN cable 을 연장하기 싫어서 wireless nic 2개로 bridge 구성을 했다. 처음에는 단순하게 hostapd 를 사용하여 wlan1 을 ap 로 구성하고, br0(linux-bridge) 에 wlan0 를 추가해주면 끝날것으로 생각했다. 그러나 wlan0 를 br0 에 추가하면 아래와 같이 실패가 된다. # brctl addif br0 wlan0 can't add wlan0 to bridge br0: Operation not supported 좋은 방법이 없을까 고민을 하다가 openvswitch 로 시도를 해보았다....

June 1, 2020 · foobargem

v4.19 kernel 에서 xfs 의 barrier/nobarrier mount option 이 제거됨

kernel 변화에 따른 성능변화를 측정하기 위해서 CentOS 7.4 / 3.10.0-693.21.1.el7.x86_64 기반의 시스템에 elrepo 의 kernel(5.5.x) 을 설치하고 재부팅을 했다. 그런데, 오랜 시간이 지나도 ssh 접속이 되지 않았다. (beta 장비라서 OOB 구성이 안되어 있음) 어쩔수 없이 IDC 엔지니어에게 요청을 해서 다시 3.10.0-693.21.1.el7.x86_64 로 부팅을 했다. 동일 형상의 VM 을 가지고 elrepo 의 kernel 을 설치하고 console 화면을 확인해보니 부팅 중에 root filesystem 을 마운트 하지 못하여 maintenance mode 가 되어 있는게 원인이었다....

March 31, 2020 · foobargem

데스크탑 PC 의 microcode update

kernel-5.4.13 빌드를 한뒤 부팅하고 dmesg 와 sysfs 를 확인해보니 역시나 새로운 intel cpu 취약점을 알려주고 있었다. # dmesg | grep -i micro [ 0.172428] TAA: Vulnerable: Clear CPU buffers attempted, no microcode [ 0.172429] MDS: Vulnerable: Clear CPU buffers attempted, no microcode [ 6.553483] microcode: sig=0x506e3, pf=0x2, revision=0xc6 [ 6.553702] microcode: Microcode Update Driver: v2.2. # grep . /sys/devices/system/cpu/vulnerabilities/* /sys/devices/system/cpu/vulnerabilities/itlb_multihit:KVM: Mitigation: Split huge pages /sys/devices/system/cpu/vulnerabilities/l1tf:Mitigation: PTE Inversion; VMX: conditional cache flushes, SMT vulnerable /sys/devices/system/cpu/vulnerabilities/mds:Vulnerable: Clear CPU buffers attempted, no microcode; SMT vulnerable /sys/devices/system/cpu/vulnerabilities/meltdown:Mitigation: PTI /sys/devices/system/cpu/vulnerabilities/spec_store_bypass:Mitigation: Speculative Store Bypass disabled via prctl and seccomp /sys/devices/system/cpu/vulnerabilities/spectre_v1:Mitigation: usercopy/swapgs barriers and __user pointer sanitization /sys/devices/system/cpu/vulnerabilities/spectre_v2:Mitigation: Full generic retpoline, IBPB: conditional, IBRS_FW, STIBP: conditional, RSB filling /sys/devices/system/cpu/vulnerabilities/tsx_async_abort:Vulnerable: Clear CPU buffers attempted, no microcode; SMT vulnerable microcode 를 업데이트 하면 일부는 완화될것으로 생각이 되어 업데이트를 시도!...

January 23, 2020 · foobargem

Anaconda 디버깅 - anaconda 가 거짓말을 했어

회사에서 PM 은 PXE 로 anaconda 를 구동하여 kickstart 기반으로 OS(CentOS7) 설치를 하고 있다. kickstart 의 pre script, post script 의 조합으로 OS 구성을 하게 되는데, 잘 동작하면 괜찮지만 script 실행중에 실패가 발생하면 디버깅을 하기가 매우 어렵게 되어있다. 오늘도 동료가 진행하는 서버 구성중 OS 설치가 지속적으로 실패를 했고 디버깅을 하는 과정에서 anaconda(CentOS installer) 의 황당한 버그(?)를 발견하여 간략히 정리를 해둔다. kickstart 의 post script 선언부에서 logging 설정을 넣으면 post script 실행 과정에 대한 log 를 남기게 된다....

September 20, 2019 · foobargem

Intel x86 CPU 취약점에 대한 Linux kernel 의 기능들

몇년 전부터 x86 CPU 의 취약점들이 - Meltdown and Spectre 등 - 지속적으로 발견 및 보고되고 있다. 최근 MaaS - Metal as a Service 를 검토하던중 우연히 /proc/cpuinfo 의 항목중 bugs 라는게 생긴것과 sysfs 에 cpu 에 대한 취약점 디렉토리 /sys/devices/system/cpu/vulnerabilities/ 가 추가 된 것을 알게 되었다. /proc/cpuinfo 의 bugs flag CPU 버그에 대한 workarounds 를 감지 또는 적용했음을 표시해준다. 무려 5년전(2014년 6월)에 commit 된 기능이다. 회사에서는 주로 CentOS7 을 다루다 보니 발견할 수 없었다....

September 13, 2019 · foobargem

Build a kernel module on CentOS

발단 bcache (Linux kernel block layer cache) 를 적용하려고 알아보니 CentOS 7 의 커널은 bcache module 이 disabled 였다. 그래서 kernel source 를 받아서 bcache module 을 build 시도했다. 경험하면 할 수록 CentOS 는 서버환경에서 별로이다. - Debian 추천!! :) Build 환경 구축 required packages 설치 # yum install rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed pesign xmlto \ audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel \ ncurses-devel newt-devel numactl-devel pciutils-devel python-devel zlib-devel kernel source 다운로드 http://vault....

June 11, 2016 · foobargem

RPM packaging

배경 VMware VM 중 1대의 Disk 공간이 부족해서 resize 를 하려고 했는데 parted-3.1 (CentOS 7) 에는 resize command 가 없어졌다. 구글링을 해보니 parted-3.2 에 resizepart 가 추가되었다고 한다. http://savannah.gnu.org/forum/forum.php?forum_id=8042 그래서 소스코드를 직접 빌드하고서 내친김에 rpm packaging 까지 하게 되었다. rpm 패키징 Build directory 생성 $ mkdir rpmbuild $ cd rpmbuild $ mkdir SOURCES SPECS BUILD BUILDROOT RPMS SRPMS $ ls BUILD BUILDROOT RPMS SOURCES SPECS SRPMS Spec file 작성 $ cd SPECS $ vim parted-3....

June 11, 2016 · foobargem

LG 그램 랩탑에서 Linux kernel 빌드하기

회사에서 지급받은 랩탑은 LG 그램이다. OS는 LMDE(Linux Mint Debian Edition) 을 설치해서 잘 쓰고 있다. 처음에는 i915 driver 버그로 LED 밝기조절이 안되고 밝기조절 기능을 활성화 하는경우 시스템이 멈추는 문제가 있었다. 삽질을 하던중 KLDP 에서 커널 업데이트하면 해결된다는 정보를 알게 되었다. https://kldp.org/node/151205 읽고서 바로 3.18.8 커널로 빌드를 했고 문제는 깔끔하게 해결되었다. :D 커널 업데이트 후 wireless device (Intel Wireless 7620) 가 인식이 안되었는데 원인은 firmware 버전이 맞지 않아서였다. 그래서 linux wireless driver website 에서 커널버전에 맞는 firmware 를 다운로드 받아 설치를 했고 잘 동작함을 확인했다....

July 4, 2015 · foobargem

Multipath

컴퓨터 스토리지에서 multipath I/O 는 결함감내시스템(Fault tolerance) 과 성능(Performance) 향상을 위한 기술을 말한다. 버스(buses), 컨트롤러(controllers), 스위치(switches), 브리지 장치(bridge devices) 로 구성된 대량의 스토리지 장치(mass storage devices)와 컴퓨터 시스템의 CPU 사이에 한개 이상의 경로(path)를 두어서 구성을 한다. 예를 들면 하나의 SCSI 디스크가 연결된 두개의 SCSI 컨트롤러(controllers) 가 같은 컴퓨터에 장착되어 있거나 두개의 파이버 채널(Fiber Channel) 포트(port)가 연결되어 있는 것을 말한다. 만약 한개의 컨트롤러나 포트 또는 스위치가 장애가 발생하면 운영체제(OS)는 장애가 나지 않은 다른 컨트롤러를 통해서 반드시 I/O 작업이 이뤄져야 한다....

August 27, 2014 · foobargem