본문 바로가기
  • 오늘처럼

소프트웨어 아키텍처74

strace 를 통한 syscall 확인과 seccomp Kernel 과 system call 리눅스 운영체제에서 핵심이되는 프로그램은 커널(kernel) 이다. 커널은 하드웨어 장치와 어플리케이션(소프트웨어) 사이에서 동작하며 두 계층 사이의 인터페이스를 담당한다. 그 외에도 메모리 관리, I/O 장치 관리 등 하드웨어의 모든 주요 기능을 제어하면서 효율적인 자원 관리를 수행하게 된다. 운영체제의 자원인 메모리 영역은 크게 2가지 공간인, Kernel space(커널 공간) 와 User space(사용자 공간) 로 구분할 수 있다. 사용자가 작성한 프로그램이나 어플리케이션들은 이 사용자 공간의 메모리를 사용하게 되고, 커널 자체의 코드에 대한 부분이나 커널 확장 등의 경우 커널 공간의 메모리를 사용한다. 또한 이 커널 공간에는 시스템 내부적인 제어를 위해 시.. 2022. 9. 22.
[Ubuntu] 우분투 UFW 방화벽 사용하기 UFW(Uncomplicated Firewall) 소개 어플리케이션이 구동되는 서버는 서비스를 위하여 통신 포트를 외부에 노출해야 하지만, 이 때 보안 취약점에 유의해야 한다. 모든 포트를 노출해서는 안되며, 노출되는 포트 또한 특정 사용자(IP Address Range)에게만 허용이 되야 한다. Linux Kernel 에 있는 '네트워크 패킷 필터(이하 Netfilter)' 라는 내부 패킷 필터링 시스템(Network framework)을 통해, 위와 같은 네트워크 패킷에 대한 접근 제어를 수행할 수 있다. 이 'Netfilter' 와 인터페이스 하기 위해 가장 많이 사용되는 툴이 iptables 이다. 그런데 iptables 의 경우 범용성으로 인해 사용 난이도가 다소 높은, 다시말해 러닝커브가 높은.. 2022. 9. 19.
Linux - sudo 와 su 명령어의 차이 리눅스 계열의 OS 를 사용하다보면, sudo 명령어나 su 명령을 자주 사용하게 된다. 1. 리눅스 계정 먼저 리눅스 운영체제에서 사용자(계정)는 다음의 4가지 타입으로 구분된다. Normal User account adduser 등의 명령어로 생성 가능한 일반 유저 ex) harang, tester1, user1, .... Superuser account 리눅스 시스템의 루트 유저로 UID 0번으로 지정. 시스템 내 제한 없는 권한을 보유 ex) root System account 주로 운영체제의 설치 과정에서 생성되는 계정으로, superuser 로 동작하지 않아도 되는 소프트웨어나 서비스에 사용 ex) ssh, mail Service account system account 와 유사하며, 서비스나.. 2022. 9. 8.
Kubernetes 인그레스(Ingress) 1. Ingress 의 역할 Kubernetes 인그레스(Ingress)에 대하여 알아보기 위해, 먼저 웹 서비스를 kubernetes 클러스터에 배포하는 시나리오를 가정해보자. 웹서버를 개발하여 배포/운영하는 사용자는, 소스 코드를 작성하고 빌드 후에 도커 이미지를 빌드하여 파드로 구성한다. Persistent layer(영속 영역)의 처리를 위하여, 데이터베이스가 필요하며 이 또한 클러스터 안에 파드로 구동한다. 클러스터 내부에서 web service 파드가 database 파드에 접근하기 위하여, database 파드를 가리키는 서비스를 ClusterIP 타입으로 생성한다. ClusterIP는 클러스터 내부 IP로 노출되는 서비스 타입으로 클러스터 안에서만 접근할 수 있으며, kubernetes 서.. 2022. 9. 5.
Serverless 아키텍처와 FaaS 1. 클라우드 서비스 패러다임 1-1. 기존의 관리방식 (Traditional On-Premise) 인터넷이나 인트라넷 환경의 사용자에게 웹 서비스를 제공하기 위해서는 해당 웹 서비스가 구동되기 위한 물리적인 서버가 필요하다. 기존에는 이 물리 서버를 전산실이나 데이터 센터 등의 공간에 두고 전담인력이 직접 관리하였다. 서버에 대한 관리 뿐만 아니라, 물리 서버가 사용하는 스토리지와 서버 간의 통신을 위한 네트워크에 대한 기술적인 관리 또한 웹 서비스를 제공하는 측에서 관리 하였다. 서비스의 규모가 커지고 범위가 늘어나게 되면서, 물리 서버를 계속 확장하는 기존 방식의 개선이 필요했다. 물리 서버의 경우 서비스의 규모가 커질 때 서버 또한 추가로 구매를 해야 하는데, 이후 여러가지 이유로 서비스의 사용량.. 2022. 9. 5.
Kubernetes package binary 파일 정합성 확인하기 Kubernetes 설치에 필요한 패키지들은 다음의 공식 github 페이지에서 다운로드가 가능하다. https://github.com/kubernetes/kubernetes/releases Releases · kubernetes/kubernetes Production-Grade Container Scheduling and Management - kubernetes/kubernetes github.com 바이너리 파일은 인터넷 서버에 위치하여 사용자는 브라우저 다운로드나 curl, wget 등의 os tool 로 다운로드 받을 수 있다. 그런데 이렇게 네트워크 망을 통해 다운로드를 받을 때 중간에 공격자에 의해서 파일이 변조 될 수 있다. 변조 된 파일로 설치한 kubernetes 클러스터에는 의도되지 .. 2022. 7. 25.