전체 글 275

SQL 기초 실습 :: AES_ENCRYPT로 민감 데이터 암호화

SQL 기초 실습 :: AES_ENCRYPT로 민감 데이터 암호화컬럼 암호화의 필요성: 데이터 자체를 암호화된 형태로 저장하는 방법으로, 파일이 유출되더라도 암호화 키가 없는 이상 내용을 바로 알아볼 수 없음* AES_ENCRYPT / AES_DECRYPT: MariaDB/MySQL에 내장된 함수로, 대칭키 암호화(AES)를 SQL 안에서 바로 쓸 수 있게 해줌AES_ENCRYPT(원본값, 키)로 암호화해서 저장하고 조회할 때 AES_DECRYPT(암호화된값, 키)로 다시 원본 복원실습용 테이블 준비USE practice_db;CREATE TABLE employees_secure (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),department VARCHAR..

네트워크 기초 정리 :: FTP 익명 접속(Anonymous FTP) 위험성

네트워크 기초 정리 :: FTP 익명 접속(Anonymous FTP) 위험성익명 FTP란아이디/비밀번호 없이 anonymous라는 계정으로 누구나 접속할 수 있게 설정하는 기능파일을 공개적으로 배포할 목적으로 예전에 많이 쓰였지만, 잘못 설정하면 심각한 정보 유출 경로가 됨실습: 익명 접속 활성화하고 위험성 확인하기vsftpd 설정 파일 열기sudo vi /etc/vsftpd.confvsftpd 설정 파일 편집익명 접속 활성화anonymous_enable=YES익명 로그인을 허용하는 설정(위험한 설정이라는 걸 확인하기 위해 일부러 켬)서비스 재시작sudo systemctl restart vsftpd설정 적용익명으로 접속 시도ftp 서버IPName: anonymousPassword: (아무거나 또는 빈 값..

운영체제/Linux 2026.10.16

네트워크 기초 정리 :: DDos, QoS와 Rate Limiting

네트워크 기초 정리 :: DDos, QoS와 Rate Limiting DDoS(Distributed Denial of Service): 서비스 거부 공격의 일종으로 다수의 시스템에서 동시에 트래픽을 퍼부어서 서버나 네트워크가 정상 요청을 처리하지 못하게 마비시키는 공격DoS(단일 출발지)와 다르게 DDoS는 여러 대(보통 봇넷)에서 분산 공격하기 때문에 IP 하나 차단으로는 막기 어려움봇넷: 악성코드에 감염된 다수의 좀비 PC나 IoT 기기들을 공격자가 원격으로 조종하는 네트워크대표 공격 유형1. 볼륨 기반 공격: UDP Flood, ICMP Flood(Ping Flood)로 대역폭 자체를 포화시킴2. 프로토콜 공격: SYN Flood로 TCP 연결 처리 자원을 소진3. 애플리케이션 계층 공격: HTTP..

보안 2026.10.14

WAS 정리 :: Tomcat 배포와 nginx 리버스 프록시 연결

WAS 정리 :: Tomcat 배포와 nginx 리버스 프록시 연결Tomcat 자바 애플리케이션 배포와 nginx 리버스 프록시 연결* Tomcat: 자바(Java) 애플리케이션을 실행하는 WAS(Web Application Server)으로, nginx나 Apache와 달리 정적 파일 서비스보다는 자바 서블릿·JSP 실행이 목적이라 역할이 다름* 리버스 프록시: 리버스 프록시(Reverse Proxy)는, 클라이언트의 요청을 대신 받아서 뒤에 있는 실제 서버로 전달해주고, 그 응답을 다시 클라이언트에게 돌려주는 중계 역할을 하는 서버Tomcat 설치sudo apt install tomcat10 -y서비스 상태 확인sudo systemctl status tomcat10기본 접속 확인curl http://..

Web Server 2026.10.14

제목 : Flask + MySQL 연동 실습 :: 마당서점 도서목록/상세 페이지 구현

실습 목표 Flask 웹서버와 MySQL(MariaDB) 연동 pymysql로 DB 조회 후 Jinja2 템플릿에 결과 전달 도서 목록 페이지, 도서 상세 페이지 2개 라우트 구현 사용 기술 Python 3, Flask pymysql Jinja2 템플릿 엔진 MySQL(madangdb), Book 테이블 폴더 구조 madangweb/ index.py templates/ booklist.html bookview.htmlFlask는 render_template() 호출 시 실행 파일(index.py) 기준으로 같은 위치의 templates 폴더 안에서 html을 찾음 index.py와 templates 폴더가 같은 위치에 있어야 정상 동작 index.py 코드>> Book 테이블에 저장된 도서를 읽어와 웹 ..

카테고리 없음 2026.10.13

네트워크 기초 정리 :: DHCP (동적 호스트 설정 프로토콜)

네트워크 기초 정리 :: DHCP (동적 호스트 설정 프로토콜)DHCP(Dynamic Host Configuration Protocol)란기기가 네트워크에 연결될 때 IP 주소를 자동으로 할당해주는 프로토콜DHCP가 없으면 관리자가 모든 기기에 IP를 일일이 수동으로 설정해야 함집에서 와이파이에 연결하면 별다른 설정 없이 자동으로 인터넷이 되는 것도 이 DHCP 덕분왜 필요한가네트워크에 연결되는 기기는 계속 늘어나고 줄어듦(노트북을 껐다 켜고, 손님이 와이파이에 접속했다 나가고)매번 사람이 IP를 배정하면 관리가 불가능할 정도로 번거로움DHCP 서버(보통 공유기)가 사용 가능한 IP 목록을 갖고 있다가, 필요할 때마다 자동으로 하나씩 빌려줌동작 과정 — DORA기기가 네트워크에 처음 연결됐을 때 IP를 ..

Network 2026.10.12

로그 분석 실습 :: auth.log부터 상관 분석

로그 분석 실습 :: auth.log부터 상관 분석1. auth.log로 로그인 시도 분석auth.log: 리눅스 시스템에서 로그인, sudo 사용, SSH 접속 시도 같은 인증 관련 이벤트가 전부 기록되는 로그 파일로 공격자가 시스템에 침투를 시도할 때 가장 먼저 흔적이 남는 곳 중 하나로그인 실패 기록 확인sudo cat /var/log/auth.log | grep “Failed password”결과: 실패한 로그인 시도가 있으면 시간, 사용자명, 시도한 IP가 한 줄씩 출력(정상적인 상황이면 결과가 아예 없거나 몇 건 안 됨)IP별 실패 횟수 집계sudo grep “Failed password” /var/log/auth.log | awk ‘{print $11}’ | sort | uniq -c | s..

카테고리 없음 2026.10.09

SQL 기초 실습 :: SQL 감사 로그(Audit Log) 설정

SQL 기초 실습 :: SQL 감사 로그(Audit Log) 설정감사 로그 필요 이유: 실제로 누가 언제 무엇을 했는가”를 전부 기록으로 남길 수 있음권한 설정이 아무리 잘 되어 있어도, 허용된 범위 안에서 이상한 행동(대량 조회, 의심스러운 시간대 접근 등)을 하는 걸 잡아내려면 기록이 있어야 함MariaDB Audit Plugin: 누가(어느 계정, 어느 IP에서), 언제, 어떤 쿼리를 실행했는지 전부 로그 파일에 기록해주는 플러그인플러그인 활성화sudo mysqlINSTALL PLUGIN server_audit SONAME ‘server_audit.so’;>> MariaDB에 server_audit이라는 플러그인을 등록해서 켜는 SQL문으로, MariaDB가 그 .so 파일을 메모리에 로드해서 감사..