H Scenario — SSH Remote Administration

복잡한 명령어 대신,
대화로 서버를 다룬다

보안 감사, 방화벽, 성능 분석, 커널 튜닝, 백업 자동화까지.
13턴의 대화로 신규 서버 인수 점검을 완료합니다.

01 — Why

왜 wiiiv로 서버를 관리하는가

서버를 새로 인수했습니다. SSH 로그인 실패 IP를 추적하고, 방화벽을 구축하고, 성능 병목을 진단하고, 커널 파라미터를 튜닝하고, 백업을 자동화해야 합니다. 각각의 작업에 journalctl, nftables, vmstat, sysctl, crontab 명령어를 알아야 합니다.

wiiiv에서는 "최근 7일간 SSH 로그인 실패 로그를 분석해줘"라고 말하면 됩니다. AI가 journalctl + awk 파이프라인을 만들고, SSH로 서버에서 실행하고, 공격 IP를 빈도순으로 정리해 보여줍니다.

접속 정보 보호

SSH 비밀번호는 세션 안에서만 사용됩니다. wiiiv의 SSH 호스트 사전 등록 기능을 사용하면, 대화에 비밀번호를 입력하지 않아도 접속할 수 있습니다.

sudo 권한 관리

방화벽 설정, 커널 튜닝, cron 등록처럼 관리자 권한이 필요한 작업도 대화로 수행합니다. sudo 비밀번호는 접속 시 한 번만 제공하면 세션 내에서 재사용됩니다.

위험 명령 차단

rm -rf, dd if=/dev/zero 같은 파괴적 명령은 OsHazardGuard가 자동 감지합니다. 사용자가 직접 승인하지 않으면 실행되지 않습니다.

이 가이드의 모든 명령과 출력은 2026년 7월 12일 실제 wiiiv 실행 결과입니다. Rocky Linux 9.5 서버에 SSH로 접속해 13턴의 대화로 서버 인수 점검을 수행했습니다.
02 — Server

대상 서버

이 가이드에서 점검할 서버입니다. 접속 정보를 알려주면, 이후 모든 작업은 대화로 진행됩니다.

호스트명
rocky95
OS
Rocky Linux 9.5 (Blue Onyx)
커널
5.14.0-503.40.1.el9_5.x86_64
접속 주소
myserver.example.com:22
CPU / 메모리
4 cores / 3.6 GiB
업타임
3 weeks, 1 day
13
전체 턴
22일
서버 가동
2
HazardGuard 감지
11분
총 소요
03 — Full Execution (13 Turns)

13턴 전체 실행 흐름

신규 서버를 인수한 상황입니다. 접속부터 보안 감사, 성능 진단, 자동화, 위험 작업 통제까지 — 실전 점검의 전체 과정을 대화로 수행합니다.

T0
SSH
접속
T1
시스템
종합
T2
보안
감사
T3
포트
분석
T4
방화벽
구축
T5
성능
분석
T6
DNS
진단
T7
로그
포렌식
T8
커널
튜닝
T9
백업
자동화
T10
부하시험
⚠ 차단
T11
정리
⚠ 감지
접속과 시스템 파악
T0 SSH 접속
wiiiv
하늘
하늘나무
myserver.example.com 서버에 SSH로 접속해줘. 포트 822, 사용자 skytree, 비밀번호 m******2.
W
wiiiv
SSH 접속 성공 (skytree@myserver.example.com:22)
rocky95 skytree /home/skytree NAME="Rocky Linux" VERSION="9.5 (Blue Onyx)" ID="rocky" ID_LIKE="rhel centos fedora" /usr/bin/dnf /usr/bin/yum inet 10.10.90.240/16 brd 10.10.255.255 scope global noprefixroute ens18 inet 10.10.0.187/16 brd 10.10.255.255 scope global secondary dynamic
접속 정보 보호: 이 예시에서는 대화에 비밀번호를 직접 입력했습니다. wiiiv의 SSH 호스트 사전 등록 기능을 사용하면, 비밀번호 없이 호스트 이름만으로 접속할 수 있습니다. 접속 정보는 서버에 암호화되어 저장됩니다.
T1 시스템 현황 종합 점검
wiiiv
하늘
하늘나무
서버 현황을 종합 점검해줘. OS, 커널 버전, 업타임, CPU 코어 수, 메모리(전체/사용/가용), 스왑, 디스크(파티션별 사용률)를 한번에 보여줘.
W
wiiiv
서버 현황 점검 결과를 확인했습니다.
항목
OSRocky Linux 9.5 (Blue Onyx)
커널 버전5.14.0-503.40.1.el9_5.x86_64
업타임up 3 weeks, 1 day, 16 hours, 15 minutes
CPU 코어 수4
메모리 전체3.6Gi
메모리 사용776Mi
메모리 가용2.8Gi
스왑 전체3.2Gi
스왑 사용10Mi

디스크 파티션별 사용률:

FilesystemTypeSizeUsedAvailUse%
/dev/mapper/rl-rootxfs28G11G18G39%
/dev/sda1xfs960M316M645M33%
tmpfstmpfs732M68M665M10%
/dev/mapper/vg_test-lv_testext4455M14K426M1%
보안 감사
T2 SSH 로그인 실패 분석
wiiiv
하늘
하늘나무
최근 7일간 SSH 로그인 실패 로그를 분석해줘. 공격 IP를 빈도순으로 정리하고, 시간대별 공격 패턴이 있는지 확인해줘.
W
wiiiv
최근 7일간 SSH 로그인 실패 로그 기준으로 확인했습니다.
공격 IP횟수
172.30.1.2548
시간대횟수
05시8

요약: 공격 IP는 172.30.1.254 1개. 실패 시도는 새벽 05시에 집중되어 있습니다.

T3 포트/서비스 분석
wiiiv
하늘
하늘나무
현재 열려 있는 포트와 바인딩된 프로세스를 분석해줘. 불필요하거나 위험해 보이는 서비스가 있는지 판단해줘.
W
wiiiv
현재 열린 포트와 바인딩된 프로세스를 확인했습니다.
프로토콜로컬 주소:포트프로세스노출 범위판단
udp127.0.0.1:323chronyd로컬 전용정상
tcp0.0.0.0:22sshd모든 IPv4정상/중요
tcp*:3306mariadb모든 인터페이스주의

판단: MariaDB(3306)의 전체 인터페이스 바인딩은 위험도가 상대적으로 높아 주의가 필요합니다.

wiiiv가 단순히 포트 목록을 나열하는 것이 아니라 위험도를 판단합니다. MariaDB가 전체 인터페이스에 바인딩된 것을 감지하고 "주의"로 분류했습니다.
방화벽과 성능
T4 nftables 방화벽 구축
wiiiv
하늘
하늘나무
nftables로 기본 방화벽 규칙을 만들어줘. SSH(822)와 HTTP/HTTPS는 허용하고, 나머지 인바운드는 차단해. 적용 후 규칙 목록을 보여줘.
W
wiiiv

방화벽 스크립트를 생성하고 실행했습니다:

#!/bin/bash set -e nft -f - <<'NFT' flush ruleset table inet filter { chain input { type filter hook input priority 0; policy drop; ct state established,related accept iif "lo" accept tcp dport 822 accept tcp dport 80 accept tcp dport 443 accept ip protocol icmp accept ip6 nexthdr icmpv6 accept counter drop } chain forward { type filter hook forward priority 0; policy drop; } chain output { type filter hook output priority 0; policy accept; } } NFT

확인 실패: sudo nft list ruleset 출력이 비어 있어 적용된 규칙 목록을 확인할 수 없습니다.

정직한 보고: wiiiv는 방화벽 스크립트를 정상적으로 작성하고 실행했지만, 결과 확인 단계에서 nft list 출력이 비어있다고 솔직히 보고했습니다. 확인이 안 된 것을 "성공"으로 포장하지 않습니다.
T5 성능 프로파일링
wiiiv
하늘
하늘나무
vmstat 5초 3회 실행하고, iostat으로 디스크 I/O도 확인해줘. 병목이 있는지 분석해줘.
W
wiiiv

vmstat 5 3 결과:

rbswpdfreebuffcachesisoidwa
10111729726126802335860001000
00111729775126802335884001000
00111729786446802335892001000

iostat -xz 5 3 주요 디바이스:

Devicer/sw/srkB/swkB/sr_awaitw_await
sda0.860.6236.1338.950.343.42
dm-00.860.6536.0638.920.332.10

병목 판단:

CPU 병목 없음 — idle 100%
메모리 병목 없음 — si/so 0
디스크 I/O 병목 없음 — %util 0.08
네트워크와 로그
T6 DNS + traceroute 진단
wiiiv
하늘
하늘나무
DNS를 진단해줘. 네임서버 확인, google.com과 naver.com 정방향 조회, 8.8.8.8 역방향 조회, 응답시간 측정까지. 그리고 google.com으로 traceroute도 해줘.
W
wiiiv

네임서버:

#네임서버
18.8.8.8
2168.126.63.1
3168.126.63.2

정방향/역방향 조회:

도메인조회 결과응답시간
google.com2404:6800:400b:c00c::71 외 3개26 ms
naver.com223.130.200.219 외 3개33 ms
8.8.8.8 (역방향)dns.google.

traceroute google.com — 18홉:

경유지
1_gateway (10.10.10.1)
2172.30.1.254
3220.77.78.1
4–7112.174 → 112.190 → 142.250 → 72.14 ...
13–17* * * (응답 없음)
18ri-in-f139.1e100.net (142.251.23.139)
T7 로그 포렌식
wiiiv
하늘
하늘나무
journalctl로 최근 24시간 에러와 경고를 추출해줘. 빈도순으로 패턴을 분류하고, 반복 발생하는 문제가 있는지 알려줘.
W
wiiiv
최근 24시간 에러/경고를 패턴별로 빈도순 정리:
빈도패턴
276nginx-check.service: Failed with result 'exit-code'
276nginx-check.service: Failed to execute ... Exec format error
1sshd: error: kex_exchange_identification: read: Connection reset

분석:

가장 큰 반복 장애는 nginx-check.service 실패입니다. 핵심 원인은 /usr/local/bin/nginx-check.sh 실행 시 Exec format error로, shebang 누락이나 파일 형식 문제로 추정됩니다.

wiiiv가 로그에서 패턴을 분류하고 근본 원인까지 추정합니다. 단순히 에러를 나열하는 것이 아니라 "shebang 누락 또는 파일 형식 문제"라는 진단을 제시했습니다.
커널 튜닝과 자동화
T8 sysctl 커널 튜닝
wiiiv
하늘
하늘나무
sysctl로 주요 커널 파라미터를 확인해줘. net.ipv4.tcp_rmem, net.ipv4.tcp_wmem, fs.file-max, vm.swappiness를 조회하고, vm.swappiness를 10으로 설정해서 /etc/sysctl.d/99-tuning.conf에 저장한 뒤 적용해줘.
W
wiiiv
vm.swappiness = 10/etc/sysctl.d/99-tuning.conf에 저장하고 적용했습니다.
파라미터
net.ipv4.tcp_rmem4096 131072 6291456
net.ipv4.tcp_wmem4096 16384 4194304
fs.file-max9223372036854775807
vm.swappiness10 적용 완료
sudo 사용: /etc/sysctl.d/에 파일을 쓰고 sysctl --system을 실행하려면 관리자 권한이 필요합니다. T0에서 제공한 비밀번호로 sudo가 자동 처리됩니다.
T9 백업 스크립트 + cron 자동화
wiiiv
하늘
하늘나무
/etc와 주요 설정 파일을 tar로 백업하는 스크립트를 /usr/local/bin/daily-backup.sh로 만들어줘. /var/backup/에 날짜별로 저장하고 7일 지난 건 자동 삭제하는 로직 포함. cron에 매일 새벽 3시로 등록해줘.
W
wiiiv
항목
스크립트 경로/usr/local/bin/daily-backup.sh
스크립트 상태생성됨
스크립트 크기523 bytes

스크립트 내용:

#!/bin/bash set -euo pipefail BACKUP_DIR="/var/backup" DATE="$(date +%F)" TARGET_DIR="$BACKUP_DIR/$DATE" ARCHIVE="$TARGET_DIR/etc-backup-$DATE.tar.gz" mkdir -p "$TARGET_DIR" tar -czf "$ARCHIVE" \ /etc \ /etc/cron.d \ /etc/sysctl.d \ /usr/local/bin \ --exclude='/var/backup' find "$BACKUP_DIR" -mindepth 1 -maxdepth 1 \ -type d -mtime +7 -exec rm -rf {} \; echo "backup created: $ARCHIVE"
안전 통제: OsHazardGuard
T10 디스크 부하 시험 — dd 차단
wiiiv
하늘
하늘나무
dd if=/dev/zero of=/tmp/disk_pressure.img bs=1M count=400 으로 디스크 부하 테스트를 해줘. df -h /tmp 으로 전후 상태를 비교하고, 끝나면 파일을 삭제해서 복구해줘.
W
wiiiv
🛑
안전 정책에 의해 차단
dd if=/dev/zero of=/tmp/disk_pressure.img bs=1M count=400
사유: 파괴적/고위험 디스크 작업으로 감지됨
항목상태
실행 명령dd if=/dev/zero of=/tmp/disk_pressure.img ...
결과차단됨
파일 생성없음
OsHazardGuard 동작: dd if=/dev/zero는 대용량 데이터를 디스크에 기록하는 파괴적 명령 패턴입니다. wiiiv는 사용자가 직접 요청했더라도 이 명령을 자동 차단하고, 대신 안전한 대안을 제안합니다. AI의 판단이 아니라 규칙 기반 차단이므로 우회가 불가능합니다.
T11 정리/원복 — rm 감지
wiiiv
하늘
하늘나무
이번 점검에서 만든 임시 파일들을 정리해줘. /tmp/disk_pressure.img 가 남아있으면 삭제하고, /etc/sysctl.d/99-tuning.conf 와 /usr/local/bin/daily-backup.sh, cron 등록도 원복해줘.
W
wiiiv
OsHazardGuard — HAZARDOUS
내용: ssh.execute
사유: 위험 명령 감지 — \brm\s+(-[rf]+|--recursive|--force)

실행하시겠습니까?

T10(dd)은 완전 차단되었고, T11(rm)은 경고 후 승인 대기입니다. OsHazardGuard의 두 가지 동작 모드를 모두 보여줍니다. 파괴적 데이터 기록(dd)은 무조건 막고, 파일 삭제(rm)는 사용자 확인을 거친 뒤 실행할 수 있습니다.
04 — Tips

SSH 활용 팁

명령어를 몰라도 됩니다

"SSH 로그인 실패 IP를 분석해줘"라고 말하면 wiiiv가 journalctl + awk 20줄 파이프라인을 만듭니다. nftables, sysctl, vmstat 같은 전문 도구도 대화로 사용합니다.

접속 정보는 사전 등록하세요

대화에 비밀번호를 직접 입력하는 대신, wiiiv 설정에서 SSH 호스트를 사전 등록할 수 있습니다. 등록된 호스트는 이름만으로 접속되고, 접속 정보는 서버에 암호화 저장됩니다.

sudo 작업도 대화로

방화벽 설정(T4), 커널 튜닝(T8), cron 등록(T9)처럼 관리자 권한이 필요한 작업도 "해줘"라고 말하면 됩니다. 접속 시 제공된 비밀번호가 sudo 인증에 자동으로 사용됩니다.

위험한 명령은 자동으로 막힙니다

OsHazardGuard가 dd if=/dev/zero(T10)와 rm -rf(T11) 두 가지 위험 패턴을 감지했습니다. AI의 판단과 무관하게 규칙으로 차단하므로, AI가 실수로 위험한 명령을 생성해도 안전합니다.

판단까지 해줍니다

T3에서 MariaDB의 전체 인터페이스 바인딩을 "주의"로 판단하고, T7에서 nginx-check 오류의 근본 원인을 "shebang 문제"로 추정했습니다. 단순 실행이 아니라 분석과 진단까지 수행합니다.

확인 안 되면 솔직히 말합니다

T4에서 방화벽 규칙 적용 후 nft list 출력이 비어있자, "확인할 수 없습니다"라고 보고했습니다. 확인이 안 된 것을 성공으로 포장하지 않습니다.