VPN 서버 구성을 안전하게 롤백하는 방법
롤백은 알려진 정상 네트워크 정책을 되돌리는 것이지, 찾을 수 있는 가장 오래된 파일이 아닙니다. 폐기를 최신으로 유지하고 관리 경로를 터널 밖에 두십시오.
서버를 롤백하는 것은 어느 계층이 실패했는지에 대한 판단이지 파일 복사 연습이 아닙니다. 구성, 자격 증명, 패키지 버전은 서로 다른 시계로 움직이며, 하나만 되돌리고 나머지를 최신으로 두면 건강해 보이지만 일관성 없이 동작하는 호스트가 만들어집니다. 아래 순서는 변경이 이미 잘못되었음을 전제로 가장 작은 일관된 상태로 되돌리라고 요구합니다. 순서대로 진행하고, 대역 외 접근 점검은 누구도 건너뛰지 말아야 할 단계로 여기십시오.
정말로 복원할 수 있는 체크포인트를 만드십시오
서비스가 시작할 때 읽는 구성을 마지막으로 해석한 버전과 함께 기록합니다. 이전 릴리스에서 깨끗하게 로드된 파일도 업그레이드 후에는 거부되거나 조용히 무시될 수 있으므로 버전은 같은 기록에 속합니다. 구성이 가리키는 자료—개인 키, 인증서 경로, 수신 정의, 그리고 서비스를 도달 가능하게 만드는 DNS와 방화벽 항목—도 포함합니다. 복원에 저장하지 않은 파일이 필요하다면 그 체크포인트는 불완전합니다.
시스템이 아직 건강할 때 각 설정의 소유자를 적어 둡니다. 공급자 패널이 설치한 경로, 호스트 방화벽이 추가한 경로, 클라이언트로 밀어 넣은 경로는 서로 다른 세 객체이며, 잘못된 것을 되돌리면 나머지 둘은 그대로 남습니다. 설정, 소유자, 파일 경로를 담은 짧은 표로 충분합니다.
폐기는 구성과 분리해 두십시오
오래된 구성은 의도적으로 제거한 기기를 조용히 다시 연결할 수 있습니다, 그러면 복구가 보안 퇴행으로 바뀝니다. 네트워크 정책을 되돌리는 동안 현재 폐기 목록과 비활성화된 계정을 보존하고, 서비스가 클라이언트를 받아들이기 전에 다시 적용하십시오.
신원 상태는 고유한 증거를 가진 별도의 롤백으로 다루십시오. 인증서 폐기 파일, 계정 비활성화, MFA 등록은 데몬 구성과 같은 곳에 있는 경우가 드물고, 구성 복원은 그것들을 건드리지 않습니다. 먼저 현재 상태를 확인해 무엇이 살아남아야 하는지 알아야 합니다. 복원 후 제거한 신원이 여전히 연결되지 않는지 확인하십시오.
터널이 실패할 때 호스트에 도달하십시오
변경되는 구성 요소에 의존하지 않는 경로를 엽니다. 하이퍼바이저 콘솔, 별도 인터페이스의 관리 주소, 시리얼 콘솔은 모두 해당하지만 터널을 지나는 SSH 세션은 해당하지 않습니다. 유일한 진입로가 다시 시작하려는 VPN이라면 잘못된 경로나 방화벽 규칙이 고칠 능력을 앗아갑니다. 대체 경로는 변경 전에 시험하고 나중으로 미루지 마십시오. 한 번 그 경로로 로그인해 sudo가 동작하는지 확인하고 사용한 정확한 주소를 적어 두십시오.
시험은 단순합니다—대체 경로로 연결된 상태에서 터널을 내리고 세션이 살아남는지 보십시오. 끊긴다면 고립되기 전에 장애를 찾은 것입니다.
개정 하나만 적용하고 언제 효력이 생기는지 아십시오
서비스의 reload 또는 restart 문서를 사용해 어떤 지시문이 어느 시점에 읽히는지 확인합니다. reload에서 적용되는 값도 있고 새 세션이나 프로세스가 시작될 때만 적용되는 값도 있어, 파일을 편집해도 실행 상태를 증명하지 못합니다. 새 파일과 오래된 런타임 상태를 섞지 말고 단일 개정을 되돌리십시오. 확신이 없으면 부분 reload보다 서비스 전체 재시작이 추론하기 쉽습니다.
고르기 전에 유닛 정의를 확인하십시오: systemctl show -p ExecReload openvpn@server reload 훅이 존재하는지 알려 줍니다. 그런 다음 개정을 적용하고, 다른 무엇을 바꾸기 전에 저널에서 첫 번째 새 오류를 읽으십시오.
검증하고 기록한 뒤 조사하십시오
승인된 클라이언트 하나를 연결해 이름 해석, 재연결, 실패했던 애플리케이션 등 서비스의 용도를 시험합니다. 폐기된 신원이 여전히 거부되는지 확인하십시오. 되돌린 개정, 시각, 이유는 다음 운영자에게 셋 다 필요하므로 기록합니다. 아무도 기록하지 않은 롤백은 다음에 서비스가 이상 동작할 때 수수께끼가 됩니다.
systemctl status openvpn@server --no-pager
journalctl -u openvpn@server -n 50 --no-pager
서비스가 안정되면 버려도 되는 호스트나 스냅숏에서 실패한 변경을 재현합니다. 그러면 나쁜 구성과 나쁜 패키지 또는 만료된 인증서가 구분됩니다. 복원한 구성을 버전 관리 아래에 두어 다음 체크포인트가 알려진 커밋에서 시작하게 하십시오. 이 연습의 목적은 기록된 종료점이지 영구적 다운그레이드가 아닙니다.