Journey to Security/리눅스 34

파이썬으로 소켓 통신 연결 구현하기

네트워크 프로그래밍이란 결국 프로세스 간의 통신을 의미하며, 이를 가능하게 하는 핵심 도구가 바로 소켓(Socket)이다.파이썬 socket 모듈을 활용하면 리눅스 환경에서 서버와 클라이언트를 직접 구현하고 데이터를 주고받는 과정을 명확히 이해할 수 있다. 1. 소켓 통신의 기본 개념소켓은 네트워크상의 두 프로그램이 서로 데이터를 주고받을 수 있도록 연결해 주는 통신 종착점(Endpoint)을 의미한다.서버와 클라이언트는 각각 역할에 맞는 소켓을 생성하여 통신에 참여한다.🟢 서버와 클라이언트의 역할서버(Server): 클라이언트의 연결 요청을 기다리다가 요청이 오면 수락하여 통신용 소켓을 생성한다. 연결을 기다리는 소켓을 리스닝 소켓, 연결된 클라이언트와 통신하는 소켓을 커넥션 소켓이라고 한다.클라이언..

구형 노트북에 Rocky Linux 9 서버 설치하기 (+wifi 연결)

노트북에 리눅스 설치를 시도한 것은 사실 이번이 두번째다. 첫 설치 시도 중 노트북에 내장된 m-SATA가 죽어버렸기 때문이다...😅 SSD가 죽었다는 사실을 확인한 과정도 정말 지난했는데, 굳이 글로 기록하진 않겠지만 사진 한 장으로 요약이 가능할 것 같다. 그렇다고 이것 때문에 SSD를 사기에는... SSD가 생각보다 너무 비쌌다.이 상태로 설치를 중단하고 두어달 방치하고 있었는데, 이번에 동생에게 안 쓰는 노트북을 하나 달라고 해서 그 노트북 안에 있던 HDD를 하나 뜯어냈다. 요즘 아무리 옛날 노트북이라도 HDD는 보기 힘든데, 진짜 옛날 노트북이긴 한가보다.안타깝게도 SSD와 규격이 맞질 않으니 노트북 안에 넣을 수는 없고, 그냥 리더기를 하나 사서 외장으로 쓰기로 했다. 어쨌든 다시 한 번..

OpenSSL로 Apache HTTPS 인증서 생성하기 (2) 루트 인증서 등록

지난 포스팅에서는 자가 서명 인증 방식으로 단일 도메인 인증서와 멀티 도메인 인증서를 생성하는 방법을 알아보았다.자가 서명 인증서는 스스로 CA(Certificate Authority) 역할을 하기 때문에 기본적으로 클라이언트 사이드에 신뢰할 수 있는 루트 인증기관(CA) 인증서로 등록되어 있지 않다. 따라서 클라이언트 브라우저에서 '안전하다'고 인식하지 않아 다음과 같은 경고가 뜬다. 이러한 자가 서명 인증서도 '신뢰할 수 있는 루트 인증 기관'으로 수동 등록하면 브라우저에서 안전한 인증으로 인식할 수 있다. 5. 신뢰할 수 있는 루트 CA 인증서로 등록하기 1️⃣ 인증서 복사 (서버)클라이언트에서 서버의 인증서를 웹 경로로 다운받을 수 있도록 웹 디렉터리에 복사한다.cp /etc/pki/tls/ce..

OpenSSL로 Apache HTTPS 인증서 생성하기 (1) SAN, 와일드카드 인증서

웹 서비스를 운영할 때 HTTPS(HyperText Transfer Protocol Secure)는 필수다.HTTP는 데이터를 평문으로 전송하기 때문에 스니핑(Sniffing) 위협에 노출되어 있지만, HTTPS는 SSL/TLS 프로토콜을 통해 데이터를 암호화하여 보안성을 확보한다. Rocky Linux 9 환경에서 Apache 웹 서버를 이용해 단일 도메인, 멀티 도메인(SAN), 그리고 와일드카드(*) 인증서를 생성하고 적용하는 과정을 실습하고, 실무에서 인증서가 어떤 과정을 거쳐 발급되는지, 그리고 그 과정에서 핵심 역할을 하는 CSR(Certificate Signing Request)이 무엇인지도 살펴보자. 1. SSL/TLS 인증서의 기본 개념 및 체계인증서는 클라이언트(브라우저)와 서버 간의 ..

[시스템] C 프로그램으로 이해하는 멀티쓰레드

1. 쓰레드(Thread)란 무엇인가?쓰레드는 프로세스 내부에서 실제로 작업을 수행하는 실행 흐름의 단위다.프로세스가 운영체제로부터 자원을 할당받는 작업의 단위라면, 쓰레드는 그 자원을 이용하여 실제로 코드를 실행하는 주체다.멀티쓰레드의 필요성하나의 프로그램 안에서 다음과 같은 작업들을 동시에 수행해야 할 때 멀티쓰레드 구조를 사용한다.키보드 입력 대기화면 인터페이스(UI) 갱신네트워크 데이터 송수신대용량 파일 읽기/쓰기프로세스 vs 쓰레드구분프로세스 (Process)쓰레드 (Thread)정의실행 중인 프로그램의 인스턴스프로세스 내의 실행 흐름메모리독립된 메모리 공간을 가짐프로세스 내 메모리를 공유 (Stack 제외)자원 공유IPC(Inter-Process Communication) 필요직접 공유 가능 ..

[서버 보안] 리눅스 SSH 백도어 점검 및 삭제하기

리눅스 서버 침해 사고가 발생했을 때, 공격자가 가장 먼저 수행하는 작업 중 하나는 지속성 확보이다.관리자가 비밀번호를 바꿔도 언제든 재접속할 수 있도록 authorized_keys 파일에 자신의 공개키를 슬쩍 끼워넣는 방식이다.보안 관리자는 root 권한을 이용해 서버 내 모든 사용자의 SSH 키 상태를 주기적으로 모니터링하고, 인가되지 않은 키를 식별하여 제거해야 한다.https://m.boannews.com/html/detail.html?idx=126315 리눅스에 백도어 계정 설치하는 사이버 공격 발견... 다양한 악성코드 추가 설치리눅스 SSH 허니팟을 활용해 불특정 다수의 리눅스 시스템을 대상으로 한 공격이 발견됐다. 공격자는 기본 설정이나 단순한 형태의 비밀번호를 사용하는 등 부적절하게 관리..

[서버 보안] Brute Force 공격과 무단 공개키 삽입(SSH 백도어)

서버 보안에서 가장 빈번하게 발생하는 위협 중 하나는 SSH를 통한 무차별 대입 공격(Brute Force Attack)이다.칼리 리눅스의 Hydra를 이용한 실습을 통해 공격자가 무차별 대입 공격으로 서버에 침입하는 루트를 확인하고, 이와 같은 공격을 방지하고 또 대응하기 위한 방법에 대해 알아보자.1. Brute Force Attack이란?Brute Force Attack(무차별 대입 공격)이란 공격자가 사용자 ID와 비밀번호의 가능한 모든 조합을 반복적으로 대입하여 올바른 계정 정보를 찾아내는 공격 방식이다.단순한 방법이지만 비밀번호가 짧거나 유추하기 쉬운 경우 성공 확률이 매우 높은 강력한 공격이다.서버 관리자가 초기 설정 시 단순한 비밀번호를 사용하거나, 습관적으로 동일한 비밀번호를 여러 계정에..

리눅스 파티션 분할로 서버 보안과 안정성 챙기기 (+Rocky Linux 9 파티션 분할 설치 방법)

리눅스 서버를 구축할 때 가장 먼저 디스크 공간을 어떻게 나눌 것인지 고민해야 한다.파티션 분할은 단순히 용량을 배분하는 문제를 넘어 시스템의 운영 안정성, 보안, 백업 효율성, 그리고 장애 대응 능력과 직결된다. 실무 관점에서 파티션 분할의 필요성을 살펴보고, 로키 리눅스 9(Rocky Linux 9)를 이용해 실제로 파티션을 나누어 설치해보자. 1. 왜 리눅스에서 파티션을 분할할까?단일 파티션(/ 하나에 모든 디렉터리를 포함)으로 구성된 시스템은 관리가 편해 보이지만, 보안 사고나 시스템 장애 발생 시 치명적인 약점이 된다.장애 확산 방지 및 보안 강화특정 서비스에서 로그 파일이 폭증하거나 사용자가 대용량 파일을 업로드하여 디스크가 꽉 차는 상황이 발생할 수 있다.이때 파티션이 분리되어 있지 않으면 ..

passwd --stdin 옵션을 활용한 비밀번호 변경 자동화

리눅스 시스템 관리 과정에서 대량의 사용자 계정을 생성하거나 비밀번호를 일괄적으로 변경해야 할 때가 있다.이때 passwd 명령어의 --stdin 옵션을 활용하면 인터렉티브한 입력 과정 없이 파이프와 스크립트만으로 자동화 처리가 가능하다. 1. --stdin 옵션 이해하기일반적으로 passwd 명령어를 실행하면 비밀번호를 두 번 입력하는 대화형(Interactive) 과정을 거친다.하지만 --stdin 옵션을 사용하면 표준 입력(Standard Input)을 통해 비밀번호를 전달받을 수 있다.주로 파이프(|)와 함께 사용하며, 셸 스크립트 내에서 자동화 처리를 할 때 필수적인 옵션이다. 2. 기본적인 사용법먼저 --stdin 옵션을 사용하여 수동으로 비밀번호를 입력하는 방식이다.명령어를 실행하면 비밀번호..

1 2 3 4