복제(Replication)는 DB 데이터를 두 대 이상에 복제해 두는 방식이다. 가장 기본 구성은 마스터(master) 1대 + 슬레이브(slave) 1대이고, master-master, 다중 slave 로도 쓴다. 비동기 방식이라 마스터의 변경이 슬레이브에 약간의 지연을 두고 반영된다.
왜 쓰나
실시간 백업 — 마스터가 원본, 슬레이브가 백업. 마스터 장애 시 슬레이브로 전환
부하 분산 — 마스터는 쓰기(insert·update·delete), 슬레이브는 읽기(select) 로 나눠 받음
마스터와 슬레이브의 역할
마스터: 데이터 변경(등록·수정·삭제)이 생기면 바이너리 로그(binary log) 에 기록하고 슬레이브에 전달한다. 마스터는 슬레이브가 몇 대인지 등은 모른다.
슬레이브: 마스터에서 받은 바이너리 로그를 자기 DB 에 반영한다.
바이너리 로그와 복제 형식
바이너리 로그(binlog) 는 DB 에서 일어난 모든 변경 내역이 기록되는 파일이다. 기본은 꺼져 있어서 켜 줘야 한다. 복제 형식은 세 가지다.
Ubuntu 서버의 기본 보안을 단계별로 잡는 가이드다. 원문(The Fan Club, 2012)은 Ubuntu 12.04 기준이라, 지금 LTS(22.04/24.04)에서 달라진 부분을 반영해 정리했다. 모든 명령은 sudo 권한으로, 바꾸기 전에 설정 파일을 백업하고, 특히 SSH·방화벽은 접속이 끊길 수 있으니 콘솔 접근 수단을 확보한 뒤 진행한다.
1. 방화벽 – UFW
UFW(Uncomplicated Firewall)로 시작한다. 방화벽을 켜기 전에 SSH 부터 허용해야 접속이 끊기지 않는다.
Shell
1
2
3
4
5
6
sudo apt install ufw
sudo ufw allow OpenSSH# 또는 sudo ufw allow 22/tcp
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
sudo ufw status verbose
2. 공유 메모리 보호 – /etc/fstab
실행 중인 서비스를 노리는 공격에 공유 메모리가 쓰일 수 있다. 다만 일부 앱(크롬, 일부 DB)이 /dev/shm 실행을 필요로 해서 부팅이 꼬일 수 있으니, 재부팅 후 서비스가 정상인지 꼭 확인한다.
Shell
1
2
# /etc/fstab 에 추가 (지금 Ubuntu 는 /dev/shm 대신 /run/shm 이 심볼릭 링크)
tmpfs/run/shm tmpfs defaults,noexec,nosuid00
3. SSH 강화 – 키 로그인, root 차단
가장 확실한 건 공개키/개인키 로그인이다. 비밀번호 로그인을 쓴다면 최소한 root 로그인을 막는다. 지금 Ubuntu 는 /etc/ssh/sshd_config.d/ 에 조각 파일을 두는 방식을 권장한다.
※ 참고SSH 포트 변경은 선택. 자동 스캔 로그를 줄이는 효과는 있지만 실제 보안은 거의 높이지 않고, 1024 미만 특권 포트가 아닌 곳으로 옮기면 오히려 위험할 수 있다는 반론도 많다. 포트를 바꾼다면 방화벽에서 새 포트를 열고 22 를 닫는 것을 잊지 말 것. 키 로그인 + fail2ban 이 포트 변경보다 효과가 크다.
4. su / sudo 접근 제한
관리자 그룹에게만 권한을 준다. 지금 Ubuntu 는 관리자 그룹이 sudo 다(옛 가이드의 admin 그룹이 아님). 평소 작업은 su 보다 sudo 를 쓴다.
/etc/sysctl.d/99-hardening.conf 에 넣고 sudo sysctl --system 으로 적용한다. (옛 가이드는 /etc/sysctl.conf 에 직접 넣지만, 지금은 /etc/sysctl.d/ 조각 파일이 깔끔하다.)
INI
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#IP스푸핑방지(역경로필터)
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter=1
#ICMP브로드캐스트무시
net.ipv4.icmp_echo_ignore_broadcasts=1
#소스라우팅비활성
net.ipv4.conf.all.accept_source_route=0
net.ipv6.conf.all.accept_source_route=0
#redirect무시
net.ipv4.conf.all.accept_redirects=0
net.ipv6.conf.all.accept_redirects=0
net.ipv4.conf.all.send_redirects=0
#SYN공격방어
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_max_syn_backlog=2048
net.ipv4.tcp_synack_retries=2
#이상패킷로그
net.ipv4.conf.all.log_martians=1
net.ipv4.icmp_ignore_bogus_error_responses=1
Shell
1
sudo sysctl--system
※ 참고net.ipv4.icmp_echo_ignore_all = 1(ping 전부 차단)은 모니터링·헬스체크를 막을 수 있어 뺐다. 필요하면 추가한다.
6. BIND DNS – 재귀 질의 차단, 버전 숨김
권한 있는(authoritative) DNS 서버만 운영한다면 재귀 질의를 끈다. (DNS 서버를 안 돌리면 이 단계는 건너뛴다.)
Shell
1
2
3
# /etc/bind/named.conf.options 의 options { } 안에
recursion no;
version"Not Disclosed";
Shell
1
sudo systemctl restart named# 예전 bind9
7. host.conf
옛 가이드의 nospoof on 은 glibc 에서 더 이상 의미가 없다(무시됨). IP 스푸핑 방어는 5번의 rp_filter 로 충분하다. 이 단계는 지금은 건너뛰어도 된다.
8. PHP 보안 설정
PHP 버전에 맞는 php.ini 를 연다(예: /etc/php/8.3/apache2/php.ini, FPM 이면 /etc/php/8.3/fpm/php.ini). 바꾼 뒤 웹서버(또는 php-fpm)를 재시작한다.
옛날 가이드에 자주 나오지만 지금은 넣으면 안 되는 것 — safe_mode, register_globals, magic_quotes_gpc, mysql.trace_mode 는 모두 PHP 5.4~7 에서 제거되었다. 지금 php.ini 에 넣어도 효과가 없고, 특히 magic_quotes 는 SQL Injection 을 제대로 막지도 못했다. SQL Injection 방어는 php.ini 설정이 아니라 준비된 구문(prepared statement, 파라미터 바인딩) 으로 한다.
정보 노출 차단 — 에러 메시지에 파일 경로, 쿼리, DB 구조가 드러나면 공격의 단서가 된다. 운영 서버는 화면에 안 띄우고 로그로만 남긴다.
INI
1
2
3
4
5
expose_php=Off; 응답 헤더의 PHP 버전 숨김
display_errors=Off; 에러를 화면에 안 보임 (운영 필수)
display_startup_errors=Off
log_errors=On; 에러는 로그로
error_log=/var/log/php_errors.log
원격 파일 포함(RFI) 차단 — include($_GET['x']) 같은 코드에 ?x=http://악성/shell.txt 를 넣어 외부 코드를 실행시키는 공격을 막는다. allow_url_include 가 핵심이다.
INI
1
2
allow_url_fopen=Off; URL 을 파일처럼 여는 기능 (외부 호출 필요 없으면 Off)
allow_url_include=Off; include/require 로 URL 을 불러오는 것 차단 (반드시 Off)
※ 참고 ModSecurity 기본 규칙은 WordPress·Drupal 같은 CMS 를 막는 경우가 있다(403 Forbidden). 사이트가 막히면 해당 규칙을 예외 처리한다. 이것도 오늘 다룬 anyons.net 의 Wordfence 와 역할이 겹치니, 둘 다 쓸지 하나만 쓸지는 정해서 간다.
12. 로그 감시·차단 – Fail2Ban
옛 가이드의 DenyHosts 는 거의 관리가 끊겼으니 Fail2Ban 만 쓴다. Fail2Ban 은 로그를 보고 비밀번호 실패·익스플로잇 시도가 많은 IP 를 방화벽에서 일정 시간 차단한다.
Nmap 프로젝트가 보안 커뮤니티의 투표로 정리하는 네트워크 보안 도구 목록(sectools.org) 상위 50개를 정리했다. 원래 목록은 2013년 기준이라, 지금 이름이 바뀌었거나 개발이 멈춘 도구는 “지금 상태”에 적었다. Nmap 자체와 Ncat, Nping 은 Nmap 프로젝트 도구라 목록에서 빠져 있다.
1 ~ 25위
#
도구
분야
설명
지금 상태
1
Wireshark
패킷 분석
실시간 네트워크나 캡처 파일의 패킷을 프로토콜 단위로 분석한다. 필터와 TCP 스트림 재조립이 강력하다. 콘솔 버전은 tshark.
2
Metasploit
침투 테스트
익스플로잇을 만들고 시험하고 실행하는 프레임워크. 연습용 취약 VM 인 Metasploitable 도 있다.
Framework 는 오픈소스, 상용판은 Rapid7
3
Nessus
취약점 스캐너
원격·로컬(인증) 점검을 하는 대표적인 취약점 스캐너. 플러그인이 계속 갱신된다.
상용. 무료판은 Nessus Essentials
4
Aircrack-ng
무선
802.11 패킷을 캡처(airodump)·주입(aireplay)하고 WEP/WPA-PSK 키를 복구(aircrack)하는 도구 모음.
지금 이름은 Aircrack-ng
5
Snort
침입 탐지(IDS/IPS)
규칙 기반으로 웜, 익스플로잇 시도, 포트 스캔 같은 수상한 트래픽을 탐지하고 기록한다.
지금은 Cisco 소유, Snort 3
6
Cain and Abel
암호 복구 (Windows)
네트워크 스니핑, 사전·무차별 대입으로 암호를 찾고 VoIP 녹음, 라우팅 프로토콜 분석도 한다.
개발 중단
7
BackTrack
보안 점검용 리눅스
보안·포렌식 도구가 들어 있는 부팅 가능한 리눅스 배포판.
Kali Linux 로 대체
8
Netcat
네트워크 연결
TCP/UDP 로 데이터를 읽고 쓰는 단순한 도구. 포트를 열어 연결을 받는 것도 된다. 디버깅과 스크립트에 많이 쓴다.
현대판은 Ncat, Socat, OpenBSD nc
9
tcpdump
패킷 캡처
Wireshark 이전부터 쓰던 콘솔 패킷 캡처 도구. 가볍고 보안 위험이 적다. libpcap 이 여기서 나왔다.
10
John the Ripper
암호 크래킹
약한 암호를 찾기 위해 여러 형식의 암호 해시를 사전 대입으로 깨 본다.
11
Kismet
무선
수동으로 스니핑해서 무선 네트워크를 찾아내는 탐지기·스니퍼·IDS. 숨긴 SSID 도 찾는다.
12
OpenSSH / PuTTY
원격 접속
암호화된 원격 로그인과 명령 실행. telnet, rlogin, rsh 를 대체한다. Windows 에서는 PuTTY, WinSCP.
Windows 10 부터 OpenSSH 기본 포함
13
Burp Suite
웹 해킹
웹 애플리케이션을 점검하는 통합 도구. 프록시로 요청을 가로채 고치고 스캔한다.
무료 Community, 유료 Professional
14
Nikto
웹 서버 스캐너
위험한 파일·CGI, 오래된 서버 버전, 설정 문제를 점검한다.
15
Hping
패킷 생성
ICMP, UDP, TCP 패킷을 직접 만들어 보내고 응답을 본다. 방화벽 뒤 호스트를 탐색하거나 방화벽 규칙을 알아낼 때 쓴다.
오래 갱신 없음, 비슷한 도구는 Nping
16
Ettercap
중간자 공격(MITM)
LAN 에서 연결을 가로채 스니핑하고 내용을 바꾸는 도구.
17
Sysinternals
Windows 진단
Process Explorer(열린 파일, lsof 같은 기능), PsTools(원격 프로세스 관리), Autoruns(자동 실행 항목), TCPView(netstat 같은 기능) 등.
Microsoft 무료 배포
18
w3af
웹 취약점
웹 애플리케이션 취약점을 찾고 공격하는 플러그인 프레임워크. 웹용 Metasploit 같은 도구.
개발 거의 멈춤
19
OpenVAS
취약점 스캐너
Nessus 가 상용으로 바뀔 때 마지막 무료 버전에서 갈라져 나온 오픈소스 스캐너.
지금은 Greenbone
20
Scapy
패킷 조작
Python 으로 패킷을 만들고 보내고 받는 저수준 도구. 스캐너, 스니퍼로도 쓴다.
21
ping, telnet, dig, traceroute, whois, netstat
기본 명령
운영체제에 기본으로 들어 있는 기초 도구. 급할 때 가장 먼저 쓴다. (Windows 는 tracert, whois 없음)
22
THC Hydra
온라인 암호 대입
telnet, ftp, http, smb, DB 등 30 여 개 프로토콜에 사전 대입 공격을 한다. 비슷한 도구는 Medusa, Ncrack.
23
Perl / Python / Ruby
스크립트 언어
기성 도구로 안 되는 일을 직접 만든다. Scapy 는 Python, Metasploit 모듈은 Ruby, Nmap 스크립트는 Lua 로 쓴다.
24
Paros proxy
웹 프록시
HTTP/HTTPS 요청을 가로채 쿠키·폼 값을 바꾸고 SQL Injection, XSS 를 점검하는 Java 프록시.
개발 중단, OWASP ZAP 이 후속
25
NetStumbler
무선 (Windows)
열린 무선 AP 를 찾는 Windows 도구. Kismet 보다 능동적인 방식이다.
개발 중단
26 ~ 50위
#
도구
분야
설명
지금 상태
26
Google
정보 수집
site:도메인 같은 검색 연산자로 직원 이름, 실수로 노출된 문서, 취약한 웹 프로그램이 설치된 서버 등을 찾는다. Google Hacking Database 참고.
GHDB 는 지금 Exploit-DB 에서 관리
27
OSSEC HIDS
호스트 침입 탐지
로그 분석, 파일 무결성 검사, 루트킷 탐지, 경보와 자동 대응. 방화벽·웹 서버·인증 로그 분석에 많이 쓴다.
활발한 후속은 Wazuh
28
WebScarab
웹 프록시
HTTP(S) 요청과 응답을 기록하고 살펴보는 OWASP 도구.
개발 중단, OWASP ZAP 으로 대체
29
Core Impact
침투 테스트 (상용)
상용 익스플로잇 도구. 한 서버를 뚫은 뒤 그 서버를 거쳐 다른 서버로 들어가는 기능이 있다. 비슷한 도구는 Metasploit, Canvas.
30
sqlmap
SQL Injection
SQL Injection 취약점을 자동으로 찾고 DB 정보 확인, 데이터 추출, 파일 시스템 접근, OS 명령 실행까지 해 본다.