728x90

리눅스는 참 요물입니다.
확장 가능한 지점들이 참 많아서 매력적이기도 하구요. 
최근에 기본적인 쉘 인증 이외에 
MFA 적용 방법을 찾다가 PAM을 처음 접해봤습니다. 

What is PAM?
Pluggable Authentication Module의 약어로 리눅스 시스템이 사용자 인증에 대한 정책을 정의하고 인증 방법 및 절차에 대한 구성을 할 수 있게 해주는 모듈. 이름에 적혀 있는 것처럼 Pluggable이기 때문에 3rd party의 다양한 인증, 인가 솔루션들을 연동하는 지점이 되기도 함 

PAM 의 기본 구성 

PAM은 다양한 서버의 기능별로 구성이 가능합니다. 
/etc/pam.d/ 경로 하위에는 인증을 요구하는 
여러가지 서버, 애플리케이션에 대한 구성 파일이 존재합니다. 
가령, 쉘 접근의 인증과 관련된 구성은 /etc/pam.d/sshd 에 위치하고 있습니다. 
ChatGPT 가 알려준 sshd PAM 구성 파일은 다음과 같을 수 있습니다.

#%PAM-1.0
auth       required     pam_sepermit.so
auth       include      password-auth
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
session    optional     pam_keyinit.so force revoke
session    include      password-auth

암호처럼 보이는 이 문서는 컬럼별로 다음과 같이 이해하면 됩니다.

# Module Type   # Control Flag    # Module Name        # Module Argument
auth            required          pam_sepermit.so
account         required          pam_nologin.so
password        include           password-auth
session         optional          pam_keyinit.so       force revoke

 

Module Type

모듈의 타입은 크게 4가지가 있습니다. 
인증을 요청하고 검증하는 방법을 정의하는 auth 
계정에 대한 접근 통제 및 정책을 관리하는 account
비빌번호 갱신 등에 관한 내용을 관리하는 password
인증 전후 수행해야 하는 일을 정의하는 session

Control Flag

제어 플레그는 지정된 모듈을 반드시 수행해야 하는지 
아니면 옵셔널하게 수행해야 하는지 등을 정의합니다. 

Module Name

모듈 이름은 실행할 모듈의 이름입니다. 
리눅스에 내장된 모듈도 있을 수 있고 
서드파티 사업자가 제공했거나 
직접 만든 모듈을 지정할 수도 있습니다. 

Module Argument 

모듈 실행시 필요한 매개변수를 전달할 수도 있습니다. 
이는 필수는 아니며 모듈에 따라 달라지게 됩니다. 


https://medium.com/@avirzayev/linux-pam-how-to-create-an-authentication-module-cc132115bdc5

728x90
728x90

여러 보안 도구들은 패키지를 최신 버전으로 유지할 것을 강요(?)합니다.
아무래도 노출된 취약점들이 구버전 패키지에 대한 경우가 많기 때문이죠.
어김 없이 기억력은 쇠퇴하고 또 한번 yum 으로 패키지 설치에 실패하여 기록을 남겨둡니다.


yum 업데이트시 에러 : Error unpacking rpm package...

보통은 yum 으로 패키지 설치가 잘 됩니다. 
권한 문제가 있더라도 sudo로 왠만하면 설치가 됩니다. 
하지만 간혹 이유 없이 되지 않을때가 있습니다. 
다음과 같은 에러와 함께...

$ sudo yum update openssh-clients
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Resolving Dependencies
...
...
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : openssh-clients-7.4p1-23.el7_9.x86_64                                                            1/2
Error unpacking rpm package openssh-clients-7.4p1-23.el7_9.x86_64
error: unpacking of archive failed on file /etc/ssh/ssh_config: cpio: rename

압축 해제가 되지 않았다의 메세지가 눈에 보입니다. 
그리고 특정한 경로의 파일도 언급됩니다. 
원인이 뭘까요? 정답은 파일의 속성 문제였습니다.

속성 확인 : lsattr / 속성 교체 : chattr

파일의 속성을 확인하는 명령은 lsattr입니다.
아마도 불변(immutable) 속성이 지정되어 있어서 
파일의 교체가 실패했을 거라고 추정이 됩니다.

확인하고 교체해 보겠습니다.

$ sudo lsattr /etc/ssh/ssh_config
----i----------- /etc/ssh/ssh_config
$ sudo chattr -i /etc/ssh/ssh_config
$ sudo lsattr /etc/ssh/ssh_config
---------------- /etc/ssh/ssh_config

네, 이후 yum 명령으로 업데이트가 잘 되는 것을 확인할 수 있었습니다. 
아마도 어떤 이유로든 immutable 이 지정된 것일 수 있으니
관리자와 싸우지 않기 위해 다시 속성을 걸어줍니다.

$ sudo chattr +i /etc/ssh/ssh_config
$ sudo lsattr /etc/ssh/ssh_config
----i----------- /etc/ssh/ssh_config

뺄때 -i 였으니 본능적으로 +i 를 하니 잘 수행됩니다. 
다시 immutable 상태가 되었으니 작업을 마무리하고 커피 한잔...

#linux #lsattr #chattr #immutable #yum #yum_error

728x90
728x90

리눅스는 모든 것을 파일처럼 취급합니다.
실제 파일은 물론이고 주변 장치도 파일처럼 취급합니다. 
가령 dev 디렉터리는 device의 약어로 하위에 연결된 장치들이 파일처럼 위치하게 됩니다.

이것은 입력, 출력에도 동일하게 해당됩니다. 
입력과 출력은 입력 스트림, 출력 스트림의 약어로 
입력 스트림의 대표적인 것은 키보드이고
출력 스트림의 대표적인 것은 모니터입니다.

입력 스트림은 stdin(standard input)이며 
출력 스트림은 stdout(standard output)입니다. 
에러도 출력 스트림이지면 특별히 stderr(standard error)로 정의해 두었습니다.

이 각각도 파일처럼 취급되기 때문에 
파일에 접근할 때 사용하는 파일 디스크립터(File Descriptor)가 할당되어 있습니다. 
stdin, stdout, stderr은 시스템의 기본적인 입출력 스트림이기 때문에 
파일 디스크립터가 고정값으로 지정되어 있습니다. 

stdin = FD0
stdout = FD1
stderr = FD2

파일 디스크립터를 이용하면 재지정(redirect)을 할 수 있습니다.
가령 stderr을 stdout 으로 보내고 싶으면 2>1 이 됩니다.

$ curl https://www.google.com 2> response.txt

재지정의 기본 값은 1이기 때문이 1> 과 > 는 동일한 의미가 됩니다. 
입출력 스트림의 파일 디스크립터는 사용하는 프로그램이 
어떤 출력으로 어떤 값을 내보내는지를 이용하여
다른 애플리케이션 등으로 연동할 때 유용하게 쓸 수 있습니다.

#리눅스 #기본명령어 #스트림 #입출력스트림 #파일디스크립터 #fd #stdin #stdout #stderr

728x90
728x90

 

올해 첫 번역서가 예약판매를 시작했습니다.
직전에 번역했던 <관찰 가능성 엔지니어링>의 연장선상에서 진행한 작업인데요
전작이 OpenTelemetry의 응용에 집중하고 있는 책이라면 
이 번 번역서는 사례와 문화를 중심으로 실무 적용과 관련한 이야기들을 많이 풀어내고 있습니다. 

 

데브옵스 엔지니어를 위한 실전 관찰 가능성 엔지니어링 - 예스24

관찰 가능성은 복잡한 최신 시스템의 소프트웨어를 구축, 수정, 이해하는 데 매우 중요한다. 관찰 가능성을 채택한 팀은 코드를 신속하고 자신 있게 배포할 수 있으며, 이상값과 비정상적인 동

www.yes24.com

 

전작과는 다소 다른 관점의 책이기 때문에 
"관찰 가능성"을 공부하거나 도입을 생각하고 있다면 
두권의 책을 모두 읽어보실 것을 권해드립니다!

728x90
728x90
728x90
728x90
728x90
728x90
728x90
728x90

 

리인벤트 2023의 키노트 중 하나입니다.
David Brown 님의 세션을 들으며 메모해 봅니다.

`Networking is about connections`

역시나 쩌는 AWS global backbone network
AWS AS 들고 계신 분은 세상을 다 가진 기분일 듯
AZ와 Edge Location을 연결하고 있다!
2030년에는 96% 이상의 차량이 네트워크에 연결되어 있을 것이다.

뉴질랜드, 캐나다, 말레이시아, 태국에 새로운 리전이 런칭예정

Latency를 더 줄이기 위해 도입한 AWS Local Zone은 벌써 35개
아직 데이터 전송 속도를 빛의 속도까지 끌어올리진 못한 인간의 한계를 극복하자 ㅎㅎ
9개의 Local Zone이 추가로 준비중

LA에 있는 엔드유저 입장에서 오레곤 리전과 LA Locla Zone의 RTT차이
안쓸수가 없음 !!

Direct Connect 로케이션은 130개 이상
회사 규모가 좀 있고 AWS 쓰고 AS 있다면 안쓸 이유가 없는 서비스.
가격은 제 알바는 아닙니다만... ㅎㅎ
올해 20개 이상 추가로 생긴다고..

클라우드프론트 팝이 이렇게 많이 늘었나..
2018년에 150개에서 2023년 기준 600개

AWS Nitro 칩이 하이퍼바이저에 오래전부터 이용중이었구나...
관심 없었던 부분이라 흐흐...

이런게 Nitro 때문에 가능하다고 이야기 하는 중.
AI/ML은 엄청난 대역폭이 필요함

기존 CLOS 네트웍 환경에 AI/ML 인스턴스가 배치되었을때 발생 가능한
네트워크 컨제스쳔 회피를 위해 울트라 클러스터를 만들었음

1.0의 한계 극복을 위해 울트라 클러스터 2.0을 만들었음

Topology API 를 새로 내놓았고,
이를 통해 최적의 Hop 을 갖는 GPU 인스턴스에 Job 을 배치할 수 있게 되었음 
즉, 울트라 클러스터 내에서의 효율성 증대를 위한 목적의 API

전통적인 라우팅 경로상의 특정 장비 문제로 인한 대규모 장애를 막기 위한 라우팅 설계

58개 이상의 인스턴스 타입에서 이용할 수 있음 
ENA Express (SRD) 라는 옵션만 키면 되고
결정적으로 무료!

 

Cloud WAN은 아직 잘 모르겠습니다. 
아마도 회사 네트워크 담당자들은 좀 더 큰 관심이 있을 것 같죠?
에코시스템이 있고, 대부분의 네트워크 벤더들이 들어가 있는 듯 싶습니다. 

이러나 저러나 모두에게 IP 주소 관리는 여전히 일
기존에 제공되는 IPAM 보다 향상된 제품이 나온 느낌.
참고 삼아 들어봤습니다!

IPv6 도입하느라 정말 고생했는데 (네트워크실 멤버에 비하자면 세발의 피지만...)
뭔가 Natively v6 지원에 진심인 AWS를 보고 있으면 무척 흥미진진합니다. 

인프라의 꽃은 LB 입니다. 
네, 개인적인 생각이지만 LB가 꽃인 것 분명합니다 
ELB는 그 정점에 서있고, 이번에도 흥미로운 기능을 발표했군요.
Automatic이 늘 좋은 것은 아니지만, 쓸모 있는 시나리오들이 종종 생기죠. 
자동으로 Target의 Weight를 조정할 필요는 많이들 느끼셨을겁니다.ㄹ
상세한 내용을 좀 들여다 볼 신기능이네요!

S2N? 뭔지 좀 찾아봐야겠다.

LB 에서 mTLS 도 구현해 뒀군요. 
이것도 종종 퍼블릭으로 배포된 Embedded Device 에서 이용하고자 하는 수요가 있어서
LB 레벨에서 지원해 주는 건 여러가지로 쓸모가 많을 것 같습니다. 
AWS Private CA도 지원하는군요. (당연하게도)

뭔가 VPC 애드온 같은 상품인데... Overall 한 관리를 하게 해주나 봅니다.
일단 참고하기 위해 제품명만 기억해 둡니다. 
서비스 네트워크의 생성과 정책의 정의는 네트워크 어드민이,
서비스 오너나 개발자는 그 위에서 서비스를 만드는 개념

전통적인 NW Firewall 의 AWS 버전인듯 합니다.
보안은 중요하지만 일단 머리가 아프니 ㅎㅎ..

아카마이 EA와 비슷한 느낌이네요.
Duo나 okta도 결국 비슷한 형태이긴 한데...
요즘은 이런 형태의 제품이 많이 나오는 것 같습니다.
마침내 아마존에도 ㅎㅎ


풀 영상은 아래에 붙여 두었습니다.
대략 위의 내용 보시고 영상 보시면 더 좋을 것 같네요!

 

728x90

+ Recent posts