전체 글 259

네트워크 기초 정리 :: NAT와 포트포워딩

네트워크 기초 정리 :: NAT와 포트포워딩NAT(Network Address Translation)란사설 IP 주소를 공인 IP 주소로 바꿔주는 기술전 세계에서 쓸 수 있는 공인 IP는 한정되어 있어서, 내부에서는 사설 IP(192.168.x.x, 10.x.x.x 등)를 쓰고 외부로 나갈 때만 공유기나 서버가 공인 IP 하나로 대신 변환해서 내보냄기본 동작 원리내부 기기들이 각자 사설 IP를 가짐기기가 인터넷에 요청을 보내면, 공유기(라우터)가 출발지 IP를 자신의 공인 IP로 바꿔서 내보냄응답이 돌아오면, 공유기가 원래 요청한 내부 기기를 기억해뒀다가 다시 사설 IP로 돌려줌외부에서는 공인 IP 하나만 보이고, 내부에 몇 대가 있는지는 안 보임지금 VM 환경에서 확인하기VM 내부 IP 확인ip a외부..

Network 11:15:58

SSH와 Telnet 정리 :: 원격 접속 프로토콜 비교와 실습 (평문 노출, 키 인증, 포트 포워딩)

SSH와 Telnet 정리 :: 원격 접속 프로토콜 비교와 실습 (평문 노출, 키 인증, 포트 포워딩)SSH와 Telnet: 원격으로 다른 컴퓨터/서버에 접속해서 명령어를 실행하기 위한 프로토콜차이는 암호화 여부* Telnet: 가장 오래된 원격 접속 프로토콜 중 하나로, 포트는 23사용통신 내용이 전부 평문으로 전송 (아이디, 비밀번호, 명령어 전부 노출)패킷 캡처하면 로그인 정보까지 노출되어 보안 문제로 사용하지 않음* SSH (Secure Shell): Telnet을 대체하기 위해 나온 프로토콜로, 22번 포트 사용모든 통신이 암호화 (공개키/개인키 기반 인증 및 대칭키로 세션 암호화)로그인 방식1. 비밀번호 인증: 아이디+비밀번호 입력2. 공개키 인증: 미리 등록한 공개키로 인증해 비밀번호 없이 ..

보안 2026.09.09

네트워크 기초 정리 :: traceroute로 경로 추적하기

네트워크 기초 정리 :: traceroute로 경로 추적하기설치 (없는 경우)sudo apt install traceroute -y정상 경로 확인traceroute 8.8.8.8결과: 목적지까지 거쳐가는 라우터(홉)들이 순서대로, 각 홉의 응답 시간과 함께 출력국내/해외 목적지 비교traceroute 8.8.8.8traceroute naver.com결과: 해외(8.8.8.8)는 국제 게이트웨이, 해저 케이블, 상대국 백본망까지 여러 구간을 거치기 때문에 홉 수가 많고 응답 시간도 긴 경향. 국내(naver.com)는 상대적으로 적은 구간만 거쳐서 홉 수가 적고 빠름응답 없는 구간(* * *) 관찰traceroute 8.8.8.8결과: 중간 홉에서 * * * 로 표시되는 구간이 나타날 수 있음. 해당 라우..

Network 2026.09.04

웹서버 성능 비교 정리 :: nginx vs Apache 응답 속도 실측

웹서버 성능 비교 정리 :: nginx vs Apache 응답 속도 실측nginx vs Apache 응답 속도 비교nginx는 비동기 이벤트 기반, Apache는 프로세스/스레드 기반이라는 구조 차이가 있음* Apache (프로세스/스레드 기반)요청이 하나 들어오면, 그 요청을 전담할 프로세스나 스레드를 하나 배정요청 100개가 동시에 오면 프로세스(또는 스레드) 100개가 각각 하나씩 붙어서 처리* nginx (비동기 이벤트 기반): 적은 수의 워커 프로세스(보통 CPU 코어 수만큼)가, 요청 하나에 매달리지 않고 여러 요청을 번갈아가며 처리어떤 요청이 파일 읽기나 DB 응답을 기다리는 동안 그 워커는 놀지 않고 다른 요청을 처리nginx 설치sudo apt install nginx -yApache 설..

Web Server 2026.09.02

SQL 기초 실습 노트 6편: SQL Injection 직접 검증하기

SQL 기초 실습 노트 6편: SQL Injection 직접 검증하기준비: 실습용 테이블과 계정 데이터 만들기sudo mysqlCREATE DATABASE login_test;USE login_test;CREATE TABLE accounts (id INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50),password VARCHAR(50)); >> accounts라는 이름의 테이블을 생성id, username, password라는 세 개의 컬럼 생성id 컬럼은 정수형(INT)으로 저장되며, PRIMARY KEY로 설정되어 각 계정을 구분하는 고유한 값이 된다.또한 AUTO_INCREMENT 옵션을 사용하여 새로운 계정 데이터가 추가될 때마다 번호가 자동으로 1씩 증가..

SQL 기초 실습 노트 5편: 백업과 복구

SQL 기초 실습 노트 5편: 백업과 복구백업이 왜 필요한가랜섬웨어 노트에서 다뤘던 것처럼, 데이터가 손상되거나 삭제됐을 때 되돌릴 수 있는 유일한 안전장치가 백업DB는 특히 실수로 WHERE 없이 DELETE/UPDATE 날리는 사고가 자주 나기 때문에, 백업과 복구를 직접 손으로 해보는 게 중요백업 대상 확인USE practice_db;SELECT * FROM students;지금 있는 데이터 상태를 먼저 눈으로 확인해두기데이터베이스 전체 백업 뜨기터미널에서 (mysql 접속 상태가 아니라 일반 쉘에서) 실행mysqldump -u root -p practice_db > practice_db_backup.sql백업 파일이 잘 만들어졌는지 확인ls -l practice_db_backup.sqlcat pr..

SQL 기초 실습 노트 4편: 계정과 권한 관리

SQL 기초 실습 노트 4편: 계정과 권한 관리계정 권한 관리가 왜 중요한가DB에 접속하는 모든 사람이나 애플리케이션이 root처럼 모든 권한을 가지면, 실수든 침해든 한 번에 전체 데이터가 위험해짐최소 권한 원칙을 DB 레벨에서 실제로 적용해보는 게 이번 실습의 핵심현재 계정 목록 확인sudo mysqlSELECT user, host FROM mysql.user;기존에 어떤 계정들이 있는지 먼저 확인읽기 전용 계정 만들기CREATE USER ‘staff_user’@‘localhost’ IDENTIFIED BY ‘Test1234!’;비밀번호는 예시이며, 실제로는 더 복잡하게 설정 권장SELECT 권한만 부여GRANT SELECT ON practice_db.* TO ‘staff_user’@‘localhos..

SQL 기초 실습 노트 3편: 인덱스와 실행계획

SQL 기초 실습 노트 3편: 인덱스와 실행계획인덱스란테이블에서 특정 컬럼으로 데이터를 찾을 때, 처음부터 끝까지 다 뒤지지 않고 빠르게 찾을 수 있게 만든 별도의 자료구조책의 맨 뒤에 있는 찾아보기(색인)와 같은 개념. 색인 없이 책 내용을 처음부터 넘기며 찾는 것과, 색인에서 페이지 번호를 바로 찾아 넘기는 것의 차이실습용 대용량 데이터 준비USE practice_db;대량 데이터용 테이블 생성CREATE TABLE members (id INT PRIMARY KEY AUTO_INCREMENT,email VARCHAR(100),name VARCHAR(50));>> members라는 이름의 테이블을 생성하는 명령어로, 테이블에는 id, email, name이라는 세 개의 컬럼 생성id 컬럼은 정수형(IN..