2026원격 MacSFTPMaxAuthTriesLoginGraceTimeCI

2026 원격 Mac 공개 SFTP: MaxAuthTries·LoginGraceTime으로 CI(GitHub Actions)를 끊지 않고 스캔에 견디는 매트릭스

sshd 가 사람과 자동화를 동시에 받으면 외부 자동 차단은 GitHub Actions 공유 NAT에 쉽게 오탐되고, MaxAuthTries 가 지나치게 빡세면 매트릭스 재시도가 연쇄합니다. 스캔과 CI 지터를 분리하고 호스트 키 고정, 동시 SFTP, ProxyJump 배스천 을 같은 변경 단위로 다룹니다. 운영을 넘기려면 SFTPMAC 호스팅 원격 Mac도 고려할 수 있습니다.

무차별RunnersshdSFTPGitHub Actions원격 Mac
2026 원격 Mac SFTP sshd MaxAuthTries LoginGraceTime CI Runner

문제 쪼개기: 보안과 배포 속도의 충돌

공개 SFTP는 “빨리 떨어뜨리고 차단”하려는 팀과 “짧은 시간에 병렬 업로드”하려는 팀이 충돌합니다. 임계값이 문서화되지 않으면 장애가 네트워크 탓으로 보이지만 실제로는 MaxAuthTries 와 방화벽 속도 제한의 설계 불일치인 경우가 많습니다.

공개키만 허용해도 스캐너는 핸드셰이크 비용을 계속 냅니다. CI 쪽 known_hosts 가 어긋나면 재시도가 공격 로그처럼 보입니다. LoginGraceTime 이 너무 짧으면 첫 지문 확인에 시간이 걸리는 해외 구성원이 끊깁니다. 매트릭스는 실패 이벤트를 순간적으로 쌓아 Match User 없이는 단일 파이프라인이 전체 인증 예산을 잡아먹습니다.

위협 모델: 스캔과 CI 지터를 섞지 않기

SSH 무차별 대입은 계정명 다양성·기계적 간격이 특징이고, 비밀번호 경로가 남아 있으면 잡음이 커집니다. CI 지터는 고정 서비스 계정·배포 키에 묶이며 DNS 전환 직후에 상관됩니다. 한 카운터로 묶으면 완화는 스캔에 유리, 강화는 CI 파손이라는 딜레마만 남습니다.

도달성·호스트 동일성·인증/세션으로 층을 나누고, 호스트 키가 맞다는 전제에서 MaxAuthTriesLoginGraceTime 을 단일 연결의 시도 상한과 유예로 둡니다. 배스천이 있으면 외곽에서 먼저 엄격히 모으고 내부 Mac은 약간 넓혀 연쇄 잠금을 피합니다.

측정 기준: 비율로 말하기

소스 IP별 인증 실패와 성공 세션을 시간창으로 비교합니다. 실패가 계정에 넓게 퍼지면 스캔, 한 키에 몰리면 키/호스트 키 이벤트를 의심합니다. “재시도×병렬÷초”로 이론 피크를 적고 OpenSSH 의미와 맞춥니다.

LoginGraceTime 은 사무실·러너 리전 RTT P95로 정합니다. 릴리스 직후 실패 급증은 공격보다 자격 증명 불일치인 경우가 많습니다. 아티팩트 SHA256 실패는 SSH 실패와 버킷을 나눠 전역 화이트리스트 실수를 막습니다.

macOS에서 Fail2ban 중심 Linux 런북을 그대로 가져오기 어렵습니다. 먼저 비밀번호를 끄고 ed25519를 쓰고 Match 로 구간화한 뒤 필요하면 Tailscale/Headscale 로 면을 줄이는 편이 현실적입니다.

결정 표: 시도 한도·유예·외부 차단·CI 허용

통제적합이점리스크
MaxAuthTries만 상향키 사고 응급즉각 완화비밀번호 잔존 시 창 확대
엄격 MaxAuthTries+키만공개 입구비밀번호 면 축소오키 빠른 실패→워크플로 백오프
짧은 LoginGraceTime반열린 남용CPU 절약고 RTT 사용자 단절
클라우드 FW 속도 제한스캔 폭풍sshd 전에 흡수CI 버스트 오탐
Fail2ban류로그 안정 Linux자동 대응공유 NAT 오탐
메시/사설아키텍처 변경 가능노출 축소라우팅·ACL 비용

비밀번호 잔존, CI 공유 NAT, 배스천 단점 중 하나라도 있으면 단일 손잡이에 의존하지 마세요.

sshd 설정 스케치

# sshd_config 조각 (환경에 맞게 조정)
# PasswordAuthentication no
# KbdInteractiveAuthentication no
# MaxAuthTries 4
# LoginGraceTime 45
# ClientAliveInterval 30
# ClientAliveCountMax 4
# Match User ci-upload
#   MaxAuthTries 6
#   ForceCommand internal-sftp -d /Volumes/artifacts
# Actions: 인증 실패 후 지수 백오프 sleep

실행 단계: 분할에서 훈련까지

1) Match 로 사람과 CI 업로드 분리. 2) internal-sftp /chroot 소유권 점검. 3) MaxSessions 를 실제 병렬에 맞추고 OIDC·배포 키 와 같은 릴리스 열차에 태웁니다. 4) StrictHostKeyChecking=yesUserKnownHostsFile 을 시크릿 관리에 포함. 5) 대규모 로테에서 자동 차단 완화, FW 변경 이인 승인. 6) 스테이징에서 잘못된 키 훈련, 호스트 검사 끄지 않는 복구 확인.

감사는 세션 카운트와 체크섬을 같은 티켓에 연결하고 SIEM에는 비밀 소재를 보내지 않습니다. 호스트 키 로테가 매번 CI를 깨면 검사 해제 압력이 생깁니다. 이중 키 공존 기간을 문서화하세요. 지연 핸드셰이크·대용량 SFTP를 시험하고 keepalive로 중간 장비 침묵 끊김을 줄입니다. 재시도 지터, 셀프호스트 고정 출구는 호스티드와 다른 임계값을 씁니다.

업그레이드·로그 통합 야간 대응이 무겁다면 같은 키·세션·무결성 모델을 SFTPMAC 호스팅으로 옮겨 트레이드오프를 서비스 경계로 승격시키는 선택도 합리적입니다.

읽는 순서(내부 링크만)

known_hostsOIDC·최소 권한동시 SFTP배스천 → 선택 mesh.

FAQ·체크리스트·호스팅

정리하면 공개 SFTP는 MaxAuthTries · LoginGraceTime ·키만·호스트 검사·세션 예산을 한 runbook에 적고 외부 속도 제한으로 스캔을 흡수합니다. 자가 원격 Mac은 관측과 패치 지속 비용이 크고, SFTPMAC 은 Apple 네이티브 운영을 제품으로 받칩니다.

온콜 한 장: 비밀번호 off, Match , 역할별 MaxAuthTries, LoginGraceTime RTT 근거, MaxSessions, known_hosts 핀, 차단 담당, 호스트 검사 유지 복구.