• [리눅스 기초] 쉘 스크립트란 무엇인가?

    예전의 포스트에서 운영체제의 쉘(shell)이 도대체 무엇인지에 대해 설명했다. [리눅스 기초] 쉘의 이해(Linux Shell) 쉘을 이해하는데 성공했다면 다음 단계는 쉘 스크립트(Shell Script)에 대해 공부하는 것이 일반적인 Unix/Linux 운영체제를 공부하는 순서라고 할 수 있다. 쉘 스크립트(Shell Script)란 ? 쉘 스크립트를 이해하려면 먼저 스크립트(Script)가 무엇인지 이해해야 한다. 스크립트란 일반적으로 인터프리트(interpret:대화) 방식으로 동작하는 컴파일하지 않는 프로그램이라고 이해하 …

  • [리눅스 기초] 쉘의 이해 (Linux Shell)

    유닉스나 리눅스를 공부하는 많은 초심자들이 처음으로 부닥치는 어려움이 바로 Shell(쉘) 이다. 쉘의 이해가 부족하면 유닉스나 리눅스 서버에서 주로 업무를 하는 엔지니어가 되고자 하나 초심자 수준를 벗어날 수 없다. 그만큼 쉘을 정확하게 이해한다는 것은 유닉스나 리눅스의 운영체제를 얼마나 이해하고 있는지에 대한 수준을 가늠하는 하나의 지표로 써도 될만큼 중요하다. Linux / Unix 운영체제에서 쉘(Shell)의 정의 쉘(Shell)은 운영체제에서 사용자가 입력하는 명령을 읽고 해석하여 대신 실행해주는 프로그램이다. 여기서 …

  • ssh 포트 변경 후 sshd 서비스 시작 오류 (Permission Denied)

    Rocky Linux 또는 기타 리눅스 배포본을 설치한 다음 꼭 해줘야 하는 작업 중 하나가 바로 SSH 포트 변경이다. 즉 기본 Port 번호인 22에서 다른 번호로 변경해주는 작업이다. 물론 구글 OTP 또는 기타 인증을 강화하여 SSH 접속을 통제하는 방법도 있지만 ssh 서비스 포트를 22번으로 두고 인터넷에 공개하는 것은 "어린아이를 물가에 내어 놓는" 짓이나 다름이 아니다. 사용자 인증의 강화와 ssh 서비스 포트를 변경하는 취약점 제거는 상호 보완적인 보호대책이기 때문이다. 둘 중 하나를 적용했다하여 어느 하나를 하지 …

  • yum update 또는 dnf update 명령에서”cannot install the best..” 에러

    오라클 클라우드에서 무료 프로모션 중인 ARM 계열 가상머신을 하나 사용하고 있다. oCPU 4개에 메모리 24G를 무료로 평생 사용할 수 있는 프로모션이다. ARM 계열의 리눅스를 한번 쯤 써보기 위해 CentOS의 다음 버전인 Rocky 리눅스를 설치했는데 yum update 명령을 실행하니 "cannot install the best update candidate..." 에러가 발생했다. yum update에서 "cannot install the best update candidate for package..." 에러 yum …

  • CentOS 7.9 네트워크 설정 (고정 IP 설정)

    이런저런 테스트 용으로 사용하고 있는 VMWare ESXi를 6.7에서 8 버전으로 업그레이드 한 뒤 pfSense에 UI를 입혔다는 오픈소스 방화벽 OPNsense를 가상머신으로 올려 테스트를 진행했다. OPNsense의 LAN 인터페이스에 연결해 내부망으로 사용하기 위한 표준 가상스위치와 포트그룹을 생성한 뒤 OPNsense를 설치하는 가상머신에 네트워크 어댑터 두개를 생성해 WAN 인터페이스는 VM Nework 1에 연결하고 LAN 인터페이스는 새로 생성한 가상스위치를 연결하고 설치를 진행했다. 결과적으로 OPNsense가 …

  • 리눅스 SSH 접속 시 MFA (OTP) 적용하기

    리눅스 서버의 운영체제에 접속하기 위해 대부분은 SSH(Secure Shell)을 사용한다. 하지만 서버가 인터넷에 노출되어 있는 리눅스 서버의 경우 이렇게 SSH서비스 접속을 허용하는 것은 꽤나 큰 위험이 된다. 더군다나 그 웹서버가 개인정보처리시스템이라면 이는 "위법"이 될 가능성이 매우 높다. 개인정보보호법에서는 개인정보처리시스템을 원격에서 접속할 때 대부분의 경우 안전한 인증수단의 적용을 요구하고 있기 때문이다. 더불어 ISMS 인증을 받고자 한다면 보다 엄격한 통제를 요구하고 있기도 하다. 이 때 가장 손쉽게 적용할 수 …

  • WSL2 리눅스 설치 경로 변경 (Windows Subsystem for Linux)

    WSL(Windows Subsystem for linux)은 내가 무척 오랫동안 상상만 해오던 것을 조금씩 현실에서 구현해 주고 있다. 먼저 Windows에서 가상머신을 별도로 실행시키지 않고도 Linux를 사용할 수 있게 해준 것이 WSL Version 1이다. 하지만 WSL version 1에서는 단순히 리눅스의 바이너리 명령어가 실행되는 정도의 수준이었다. 그리고 최근에 WSL version 2가 릴리즈되면서 커널 레벨 수준까지 리눅스 운영체제가 그대로 실행되도록 구현하였다는 놀라운 소식이 전해졌다. 게다가 2021년 10월 …

  • Apache 웹서버에 MPM 설정으로 성능 개선하기 (prefork , worker, event)

    아파치 웹서버의 다중처리모듈(MPM)이란 ? Apache 웹서버를 설치하면 기본적으로 다중처리모듈은 전통적인 다중요청 처리방식인 prefork 방식으로 동작하도록 설치된다. 다중처리모듈(Multi-Processing-Module) 이란, 여러 이용자(웹브라우저)가 동시에 웹서버에 접속하여 웹페이지를 요청하였을 때 이 요청들을 동시에 처리할 수 있도록 해주는 아파치 웹서버의 모듈이다.  MPM 모듈은 아파치 서버의 다른 모듈들과 마찬가지로 Shared Object 파일 (.so)로 만들어져 아파치 웹서버에 Load 된다. …

  • 커버로스 인증서버 구축하기(kerberos / KDC)

    여러 대의 서버를 운영하다 보면 맞닥뜨리는 어려움 중 하나가 바로 ID와 비밀번호의 관리다. 많은 엔지니어들과 많은 서버... 그리고 각 서버마다 접근권한을 어떻게 관리할 것인가하는 문제는 보안 관점에서 매우 골치아픈 문제다. 이 문제를 해결하기 위해 사용되는 여러 솔루션들이 있는데 그 중 하나가 바로 커버로스(Kerberos)다. 커버로스는 "티켓"을 기반으로 동작하는 컴퓨터 네트워크 인증 암호화 프로토콜로서 비보안 네트워크에서 통신하는 노드(서버)가 안전하게 다른 노드(서버)를 식별할 수 있게 허용한다. 클라이언트 서 …

  • 오라클 클라우드에 서버 구축하기 – 3. Private 서브넷의 서버에 SSH 접속하기

    오라클 클라우드의 계정에서 생성한 클라우드 네트워크인 VCN은 Public 서브넷(DMZ와 동일함)과 Private 서브넷(내부망)을 분리할 수 있다. 퍼블릭 서브넷과 프라이빗 서브넷 Public 서브넷에 설치하는 인스턴스(서버)에는 공인IP를 1대1 NAT로 설정하여 외부에서 접속할 수 있다. 즉 인터넷에 공개할 웹서버나 API서버는 Public 서브넷에 구축한다. 그리고 Private 서브넷에는 인터넷에서 직접 접속은 금지하고 Public 서브넷의 인스턴스만 접속하도록 제한하여야 하는 DB서버 등을 설치하게 된다. (기업에서 …