원격 팀을 위한 보안 모범 사례 가이드
게시 됨: 2022-03-11친구에게 한 번도 만난 적이 없는 클라이언트를 위해 원격으로 일한다고 말할 때마다 그들은 저에게 묻습니다. 원격으로 일하는 것이 안전합니까? 내 대답은 “예… 하지만 원격 작업자 보안 정책을 얼마나 잘 작성하느냐에 달려 있습니다.”입니다.
저는 파키스탄에 거주하며 지구 반대편에 있는 고객에게 가치 있는 코드를 생성합니다. 내 고객은 내 악수를 한 적이 없으며 내가 일하는 곳을 본 적이 없습니다. 그러나 클라이언트 비밀과 코드가 보호된 상태로 유지되도록 해야 합니다. 팀원들이 당신의 얼굴이나 목소리에 익숙하지 않은 세상에서 어떻게 보안 침해를 방지할 수 있을까요? 대답은: 매우 조심해서입니다.
얼마 전까지만 해도 우리는 애플리케이션의 성능과 보안을 보장하기 위해 개인 데이터 센터에서 애플리케이션을 실행해야 한다고 믿었습니다. 그러던 중 클라우드 가 등장하면서 한 방에 서버를 유지 관리하지 않고도 확장 가능한 온디맨드 플랫폼에서 애플리케이션을 실행하는 비용 및 성능상의 이점을 받아들였습니다.
잘 알려진 비밀을 알려드리겠습니다.
다른 사람의 컴퓨터일 뿐입니다.
이제 Uber 1 및 Stripe 2 와 같은 회사는 PCI 규정 준수와 같은 엄격한 보안 표준을 준수하면서 클라우드 제공자의 서버에서 실시간 고객 위치 정보, 신용 카드 및 결제를 저장 및 처리합니다. 그들은 생산 데이터가 안전하게 유지되도록 하는 엄격한 정책을 채택하여 이를 수행합니다.
회사가 사설 데이터 센터 외부에서 실행하더라도 전체 프로덕션 환경이 안전하게 유지되도록 보장할 수 있다면 원격 개발 팀을 사용하여 개발 보안을 확실히 보장할 수 있습니다. 결국, 전체 회사는 완전히 원격으로 실행할 수 있습니다. Toptal은 원격 근무만 가능한 회사이며 채용 중입니다.
"보안"이란 무엇이며 어떻게 "보안"을 유지합니까?
이 기사 전체에서 "보안"에 대해 이야기할 때 정보 보안 을 의미합니다.
'정보 보안'이라는 용어는 무단 액세스, 사용, 공개, 중단, 수정 또는 파괴로부터 정보 및 정보 시스템을 보호하는 것을 의미합니다. – 44 미국 코드 § 3542
완벽한 보안 은 없지만 "보안"이란 정보 보안을 시행하기 위해 합당한 조치 를 취했음을 의미합니다.
특히, "내 작업 환경은 안전합니다"라고 말하는 것은 귀하가 관리하는 데이터, 코드 또는 기타 기밀 정보를 보호하기 위해 합당한 조치를 취하고 무결성을 보장했음을 의미합니다. 또한 민감한 정보 시스템에 액세스할 수 있는 권한이 자신이나 권한이 없는 개인이 이 정보를 소유한 조직 및 이러한 시스템의 목표에 해로운 방식으로 사용되지 않도록 하는 조치를 취했습니다.
원격 팀은 중앙 집중식 팀보다 공격 표면이 훨씬 더 큽니다. 방화벽과 회사 워크스테이션 뒤에서 기밀 정보를 물리적으로 잠글 수 있는 중앙 집중식 팀과 달리 원격 작업자는 BYOD(자신의 장치)를 가져오도록 권장되거나 요구됩니다. 게다가 대부분의 커뮤니케이션이 온라인에서 이루어지기 때문에 사회 공학 및 신원 도용에 훨씬 더 취약합니다. 그러나 적절한 정책 세트를 사용하면 침해 위험을 확실히 최소화할 수 있습니다.
보안을 위한 만병통치약은 없습니다. 종종 보안과 편리함 사이에는 절충점이 있으며, 보안 관행을 어느 정도 수행할 것인지 결정하는 것은 사용자의 몫이지만 팀은 가장 약한 구성원만큼만 안전하다는 점을 기억하십시오. 몇 가지 일반적인 보안 공격, 방어 전략을 살펴보고 마지막으로 샘플 원격 보안 작업자 정책에 대해 논의하겠습니다.
가장 일반적인 세 가지 유형의 적대적 공격
당신이 직면하게 될 일이 무엇인지 모른다면 당신은 준비되지 않은 것입니다. 적은 공격에 많은 전략을 사용할 수 있지만 대부분은 세 가지 범주로 나뉩니다. 이 목록이 완전하지는 않지만 다음은 악의적인 해커가 사용할 수 있는 세 가지 일반적인 유형의 공격 벡터입니다.
- 사회 공학
- 피싱
- 맬웨어 감염
사회 공학
인간 해킹으로도 간주되는 사회 공학은 사람들에게 최선의 이익이 되지 않는 방식으로 행동하도록 조종하는 관행입니다. 여기에는 기밀 정보 누설이 포함될 수 있습니다.
사회 공학 공격은 모범 사례를 우회하도록 하기 위해 연민을 이용하거나, 준수하지 않을 경우 부정적인 행동을 두려워하여 모범 사례를 우회하게 하는 긴박감을 조성할 수 있습니다.
사회 공학의 예는 다음과 같습니다.
- 한 여성이 이동통신사에 전화를 걸어 지원 상담원에게 누군가의 계정을 변경하라고 이야기하는 동안 아기가 우는 YouTube 클립이 백그라운드에서 재생되는 동안 이야기합니다.
- 공격자는 CFO의 이메일 주소를 통해 CEO에게 이메일을 보내고 180만 달러의 자금 이체를 승인합니다.
피싱
피싱은 자격 증명을 도용하는 가장 일반적인 방법입니다. Facebook처럼 보이는 웹사이트를 상상해 보세요. 여기에서 로그인하는 곳이 진짜라고 생각합니다. 피싱은 공격자가 합법적으로 보이지만 그렇지 않은 웹 사이트를 만드는 것입니다.
가짜 페이스북을 발견할 수 있습니까? 힌트: Facebook.com에 없는 것입니다.
때때로 해커가 인터넷을 중독시키고 Facebook 도메인에 웹사이트를 주입할 수 있습니다. 이를 중간자 공격이라고 합니다. 그러나 걱정하지 마십시오. 브라우저에서 이에 대해 경고할 수 있습니다.
스피어 피싱은 피싱 페이지가 귀하 또는 귀하의 조직을 위해 맞춤 제작될 수 있는 또 다른 형태의 피싱입니다. 이것은 특히 사회 공학과 결합될 때 당신이 그것에 빠질 가능성을 높입니다.
내가 학교에 다닐 때, 최근에 피싱에 대해 알게 된 누군가가 가짜 Facebook 웹사이트를 만들고 컴퓨터실의 홈페이지를 자신이 만든 것으로 변경했습니다. 다음으로 그가 알게 된 사실은 이 사람이 300개의 Facebook 계정 비밀번호를 가지고 있다는 것입니다. 이 공격은 특히 우리 학교를 대상으로 했으며 성공적인 스피어 피싱 공격으로 판명되었습니다.
그리고 누군가가 주소 표시줄을 찾아보기만 했다면 모든 비밀번호가 안전하게 유지되었을 것이라고 생각하는 것입니다.
맬웨어 감염
수백 가지 유형의 맬웨어가 있습니다. 일부는 무해하거나 그냥 성가시지만 일부는 매우 위험할 수 있습니다. 주의해야 할 맬웨어의 가장 중요한 유형은 다음과 같습니다.
- 스파이웨어: 키 입력, 화면, 오디오 및 비디오를 자동으로 설치하고 기록합니다.
- 원격 관리 도구(RAT): 컴퓨터를 완벽하게 제어할 수 있습니다.
- 랜섬웨어: 모든 중요한 파일을 암호화하고 암호 해독 키에 대한 비용을 지불합니다.
컴퓨터에 사용자 지정 맬웨어를 의도적으로 설치하도록 유도하기 위해 공격자는 일반적으로 다음과 같은 소셜 엔지니어링을 사용합니다.
- 공격자는 직원 로그인 자격 증명을 수집하기 위해 회사 주차장 주변에 "분실된" USB 드라이브를 설치합니다.
- 이력서에 커피를 쏟은 한 남성이 면접이 있기 때문에 접수원에게 사본을 인쇄해 달라고 요청하여 회사 컴퓨터가 USB의 악성 페이로드에 감염되도록 합니다. (인간 해킹 기술의 예).
지금 필요한 7가지 사이버 방어 전략
우리는 가장 일반적인 적대적 공격 방법에 대해 논의했지만, 어떻게 하면 이러한 공격으로부터 안전하게 지낼 수 있을까요?
전략 1: 적절한 비밀번호 관리
나는 비밀번호를 싫어한다. 거기, 내가 말했다. 나는 사용자 이름과 비밀번호 조합이 현존하는 사용자 인증의 가장 약한 형태라고 굳게 믿습니다. 암호는 현존하는 최악의 의사 난수 생성기인 인간의 마음에 의해 생성된 짧은 문자열에 불과합니다.
비밀 단어가 필요해, 응? 내 중간 이름과 출생 연도는 어떻습니까? 아무도 추측하지 못할 것입니다! – 모든 인간은 이제까지
더 나쁜 것은 편의를 위해 사람들이 비밀번호를 재사용하는 경향이 있다는 것입니다. 이를 통해 누군가가 은행 로그인과 집 Wi-Fi에 동일한 암호를 사용할 수 있으며 암호가 좋아하는 밴드의 이름으로 끝날 가능성이 높습니다 . 공포!
몇 년 전에 나는 다음을 하기로 결심했습니다.
- 암호 관리자 사용
- 암호 대신 강력한 암호 사용
암호 관리자 사용
보안과 편리함 사이에 균형이 있다고 말했을 때 여기에는 적용되지 않습니다. 당신은 안전하고 암호 관리자를 사용하고 있거나 그렇지 않습니다. 사이가 없습니다. 좋은 암호 보안을 위해 암호 관리자를 사용하는 것은 필수입니다. 설명하겠습니다.
- 모든 비밀번호가 고유합니까?
- 귀하의 비밀번호 중 일부를 발견한 경우 나머지 비밀번호는 안전하게 유지됩니까?
- 모든 비밀번호가 최소 32비트의 엔트로피를 사용하여 생성되었습니까?
- 귀하의 비밀번호는 암호화된 형태로만 저장됩니까?
- 가입할 때 사용한 모든 비밀번호를 완벽하게 기억하십니까?
- 이 웹사이트에서 비밀번호 유출에 대해 긍정적인 반응을 보입니까?
위의 질문 중 하나라도 "아니오"라고 답한 경우 암호 관리자가 필요합니다. 좋은 암호 관리자는 무작위로 암호를 생성하고 안전하게 저장합니다. 암호 관리자를 사용하는 한 사용하는 암호 관리자는 중요하지 않습니다!
나는 그들이 사건 보고서에 대해 얼마나 투명한지, 내 자격 증명을 친구들과 공유하고 내가 원할 때마다 공유를 취소하는 기능이 마음에 들기 때문에 LastPass를 사용하고 모바일 동기화가 무료 계획의 일부라는 사실이 마음에 듭니다.
저는 수년간 LastPass를 사용해 왔으며 보안 문제를 통해 제가 보안에 민감한 사용자의 상위 1%에 속한다고 말합니다.
비밀번호 대신 강력한 비밀번호 문구
위에서 암호 관리자를 사용하도록 요청했기 때문에 이것은 직관적이지 않게 들릴 수 있지만 암호를 피할 수 없는 경우가 있습니다. 암호 관리자 또는 컴퓨터에 로그인하려면 강력한 마스터 암호가 필요합니다. 이러한 경우 엔트로피가 높은 안전하고 기억하기 쉬운 암호를 사용하십시오.
엔트로피에 대해 이야기해 보겠습니다. 내가 말하는 이 "엔트로피"는 무엇입니까?
엔트로피는 특정 의미에서 언어의 텍스트의 각 문자에 대해 평균적으로 생성되는 정보의 양을 측정하는 통계적 매개변수입니다. 언어가 가장 효율적인 방법으로 이진수(0 또는 1)로 변환되면 엔트로피 H는 원래 언어의 문자당 필요한 평균 이진수 수입니다. – 클로드 섀넌
그 인용문이 소화하기 어려웠더라도 괜찮습니다. 기본적으로 세트에서 무작위로 선택되는 비밀번호의 엔트로피는 2진법으로 표현되는 세트의 총 요소 수입니다. 예: 비밀번호가 4자이고 소문자 알파벳만 포함할 수 있는 경우 엔트로피는 무작위로 생성된 암호는 다음과 같은 이유로 19비트입니다.
- 소문자 알파벳에는 26개의 요소가 있습니다.
- 이러한 문자로 구성된 4개의 문자열은
26^4
= 456,976입니다. - 2진법으로 표현된 456,976은
log(456,976) / log(2)
= 19비트(가장 가까운 비트로 반올림)
높은 엔트로피 암호의 문제는 c05f$KVB#*6y
와 같이 기억하기 어렵다는 것입니다. 기억에 남을 수 있도록 한 글자 대신 전체 단어를 사용하면 어떨까요? 그리고 천 단어의 사전을 사용? 갑자기 우리의 알파벳은 1000개의 요소 길이가 되고 7개의 단어로 11개의 문자로 얻을 수 있는 것과 동일한 엔트로피를 얻을 수 있습니다.
이제 차이점은 암호를 사용하는 대신 길이가 훨씬 더 긴 암호 구문 을 사용한다는 것 입니다 .
다음 XKCD 만화는 이 개념을 가장 잘 설명합니다.
안전한 임의 암호를 생성하는 가장 쉬운 방법은 여기로 이동하는 것입니다.
전략 2: 다단계 인증(MFA) 사용
2단계 인증(2FA) 또는 2단계 인증은 모두 같은 이름입니다. 이것은 약간 익숙해져야 하는 것 중 하나지만 2FA의 보안 이점은 비용을 훨씬 초과하고 개인적으로 계정 침해로부터 두 번이나 저를 구해주었습니다!
MFA 이면의 아이디어는 간단합니다. 귀하를 인증하는 데 사용할 수 있는 세 가지가 있습니다.
- 아는 것 (비밀)
- 가지고 있는 것(토큰)
- 당신이 무엇인가 (당신의 생물학)
두 개를 사용하는 것이 하나만 사용하는 것보다 더 안전합니다.
대부분의 웹 사이트는 암호를 요구하는 첫 번째 인증 요소를 지원하지만 점점 더 많은 서비스에서 두 번째 요소를 지원하기 시작했습니다. 세 번째 요소는 특수 하드웨어가 필요하기 때문에 일반적으로 웹 서비스에서 제외됩니다. 휴대전화의 지문 센서처럼.
팀의 관리자인 경우 사용자가 2FA 설정을 갖도록 필수 정책을 만드는 것이 좋습니다. 이렇게 하면 암호 손상으로 인해 계정 손상이 발생하지 않습니다.
"당신이 가진 것"에는 두 가지 인기 있는 형태가 있습니다.
- 너의 폰
- U2F 키
휴대폰을 2FA로 사용하기
나는 이것을 즉시 말하고 싶습니다. 2FA에 SMS 코드를 사용하지 마십시오. 악의적인 사람들이 귀하의 전화번호를 도용하는 것이 일반적인 관행이 되고 있습니다. 이야기는 거의 항상 동일합니다. 누군가 사회 공학을 통해 이동통신사를 통해 귀하의 전화번호를 다른 이동통신사로 이전하도록 했습니다. 나는 이 공격의 희생자가 된 사람을 최소한 한 명 알고 있습니다.
대신 "Google Authenticator" 방식이라고도 하는 TOTP(시간 기반 일회용 비밀번호)를 사용하세요. 그러나 Authy는 클라우드에서 2FA 토큰을 암호화하고 백업하므로 Google Authenticator를 사용하는 대신 Authy를 사용하는 것이 좋습니다. 그런 다음 장치를 변경하더라도 2FA 토큰을 복원할 수 있습니다. 실제로 여러 장치에서 동일한 토큰을 사용할 수 있습니다. 매우 편리합니다.
2FA용 U2F 키 사용
이것은 가장 간단하고 강력한 2FA 방법입니다. 휴대폰과 컴퓨터에서 사용할 수 있는 Yubikey Neo가 있습니다. 신원을 증명하기 위해 하드웨어 토큰을 연결하고 버튼을 누르기만 하면 됩니다. 내 토큰은 고유하고 물리적 토큰입니다. 열쇠고리나 지갑에 넣고 다닐 수 있어요.
전략 3: 끊임없는 경계
당신이 얼마나 안전하다고 믿든 간에, 건전한 정도의 의심은 좋은 것입니다. 평소와 다른 것을 요구하는 사람들을 조심하십시오. 누군가로부터 비밀번호 재설정을 요청하는 문자 메시지를 받으셨습니까? 잠시만 기다려 그들과 영상 통화를 해보세요. 그들의 신원을 증명하도록 요청하십시오. 조심스럽다고 아무도 당신을 탓할 수 없습니다.
그들이 정말로 당신을 잡으러 간다면 그것은 편집증이 아닙니다. – 해롤드 핀치, 요주의 인물
그들은 정말로 당신을 잡으러 갑니다. 때로는 악의적인 사용자가 수행하려는 의지 외에는 수행할 이유가 없습니다.
제 친구는 한 번은 오랜 지인으로부터 Facebook에서 "신뢰할 수 있는 연락처"를 원하는지 묻는 메시지를 받았습니다. 내 친구는 이에 동의했고 휴대전화로 받을 코드를 답장해 달라고 요청했습니다. 내 친구는 즉시 코드를 제공했습니다... 그리고 내 친구는 소셜 엔지니어링을 통해 Gmail 계정에 대한 재설정 토큰을 제공하게 되었습니다. 내 친구가 처음부터 주의를 기울였다면 이메일을 잃어버리지 않았을 것입니다.
전략 4: 최소 권한 원칙에 따른 시스템 설계
최소 권한의 원칙은 컴퓨팅 환경의 특정 추상화 계층에서 모든 모듈(주제에 따라 프로세스, 사용자 또는 프로그램과 같은)이 필요한 정보와 리소스에만 액세스할 수 있어야 한다는 것을 요구합니다. 정당한 목적을 위해. – 위키피디아
사용자, 응용 프로그램 또는 서비스에 특정 권한이 필요하지 않은 경우 부여하지 마십시오. 이 원칙에서 많은 규칙을 도출할 수 있지만 보안 정책에 대한 다음 섹션을 위해 저장하겠습니다.
한 가지 이야기를 해 보겠습니다. 저는 한때 사용자를 위해 고유하게 생성된 주소에서 사용자로부터 Bitcoin 지불을 수락한 다음 중앙 보안 저장소 주소로 전달하는 응용 프로그램을 설계하고 있었습니다. Bitcoin이 작동하는 방식에 익숙하지 않다면 여기 간단한 설명이 있습니다. Bitcoin을 수신하려면 공개 키(예: 계정 번호)와 해당 개인 키(예: 계정 핀)가 필요합니다. 비트코인의 계좌 번호와 핀은 암호로 연결되어 있으며 변경할 수 없습니다.
이 시스템을 설계할 수 있는 몇 가지 옵션이 있었지만 약간 더 긴 경로를 선택하기로 결정했습니다. 나는 사용자에게 지불하라는 메시지를 표시하기 위해 애플리케이션이 개인 키에 액세스할 필요가 없다고 결정했습니다. 그래서 비트코인 지불을 받고 전달할 하나의 큰 시스템을 설계하는 대신 두 가지 시스템을 만들었습니다.
- 수신 시스템: 이것은 사용자로부터 비트코인을 수신하고 공용 인터넷에서 호스팅되었습니다. 주소에 대한 공개 키만 포함되어 있습니다.
- 포워딩 시스템: 이것은 비트코인 네트워크에서 주소에 대한 트랜잭션을 감시하고 안전한 주소로 전달하는 완전히 독립적이고 잠긴 시스템이었습니다. 여기에는 주소에 대한 공개 키와 개인 키가 모두 포함되어 있습니다.
오랜 시간이 지난 후 앱 유지 관리를 중단한 후 공개 수신 시스템이 위반되었습니다. 나는 즉시 그것을 종료했지만 공개 시스템에 개인 키가 전혀 포함되어 있지 않았기 때문에 공격자는 Bitcoin을 훔치지 못했습니다.
전략 5: 상식적인 모범 사례 사용
일부 관행은 설명이 필요하지 않습니다. 당신은 그것들이 중요하다는 것을 알고 있을 것입니다. 그러나 나는 얼마나 많은 사람들(저를 포함하여)이 몇 개의 스위치를 켜는 것을 잊는다는 사실에 끊임없이 놀랐습니다. 이 체크리스트를 여기에 남겨두겠습니다.
- 방화벽을 켜십시오
- 디스크 암호화
- 암호화된 백업 활성화
- SSH 키 사용
- 보안 인터넷 연결 사용
방화벽을 켜십시오
방화벽은 일련의 규칙에 따라 컴퓨터에서 들어오고 나가는 네트워크 트래픽을 제어합니다. 새 프로그램이 네트워크에 액세스할 수 있도록 허용할지 여부를 명시적으로 묻는 방식으로 작동하며 첫 번째 방어선입니다.
운영 체제에는 방화벽이 내장되어 있을 수 있습니다. 방화벽이 켜져 있는지 확인하십시오.
디스크 암호화
전체 디스크 암호화는 암호 없이는 전체 디스크의 콘텐츠를 쓸모없게 만드는 이 마법 같은 기능입니다. 노트북을 분실하거나 도난당한 경우 아무도 데이터에 액세스할 수 없으므로 안심할 수 있습니다. 이를 활성화하는 것은 Mac에서 FileVault를 켜는 것만큼 간단할 수 있습니다.
최신 휴대폰에는 기본적으로 전체 디스크 암호화가 활성화되어 있습니다.
백업 암호화
하드웨어 고장은 현실입니다. 언젠가는 컴퓨터에 장애가 발생하거나 바이러스가 PC를 감염시키거나 랜섬웨어 바이러스가 PC를 장악할 것입니다. 그러나 실용적인 사람으로서 이미 백업 흐름 설정을 가지고 있을 것입니다. 저는 확신합니다. 그렇지 않습니까?
그러나 백업이 있더라도 경계를 유지해야 합니다. 백업을 암호화하여 분실하거나 도난당한 경우에도 위탁받은 데이터의 안전을 보호하기 위해 합당한 조치를 취했음을 확신할 수 있습니다.
Mac이 있는 경우 Mac의 Time Machine 앱은 백업을 자동으로 암호화합니다.
SSH 키 사용
이 기사에서 무언가를 빼면 시스템에 SSH로 암호를 사용하는 것을 중단하십시오. 비밀번호는 공유하기 어려우며 유출되면 전체 시스템이 손상됩니다. 대신 ssh-keygen
을 실행하여 SSH 키를 생성하십시오.
원격 시스템에 로그인하려면 로컬 ~/.ssh/id_rsa.pub
의 내용을 원격 시스템의 ~/.ssh/authorized_keys
에 복사하기만 하면 됩니다. 원격 시스템에서 SSH 서비스를 다시 시작해야 할 수도 있지만 그게 전부입니다.
전체 팀의 SSH 키를 원격 시스템에 추가하면 아무도 비밀번호를 다시 입력할 필요가 없습니다. 팀 구성원의 키를 취소하는 것은 원격 시스템에서 키를 제거하는 것만큼 간단합니다.
보안 인터넷 연결 사용
다른 사람과 인터넷 연결을 공유하면 대역폭 이상을 공유하게 됩니다. 웹 사이트와 인터넷의 구성에 따라 최소한 사용자가 방문하는 웹 사이트를 감지하고 최악의 경우 암호, 메시지 또는 이메일을 포함하여 전송하는 모든 정보를 읽을 수 있습니다.
이것은 활성화하는 것이 매우 간단하고 엉망이 되기 쉽습니다. 연결이 비공개인지 확인하기 위해 합당한 예방 조치를 취하십시오. 승인되지 않은 사람이 인터넷 연결에 액세스하지 못하도록 하십시오.
WPA2를 사용하여 자신의 개인 WiFi를 암호로 보호하고 지역 커피숍(또는 공용 WiFi)에서 작업하는 경우 감시를 받고 있다고 가정하고 VPN 프록시를 사용합니다.
저는 구독 기반 VPN을 사용하는 것을 주저합니다. 특히 VPN을 자체적으로 구축하는 것은 매우 간단하기 때문입니다. 이 단선 VPN 솔루션을 사용하여 자신의 호스트를 호스팅하십시오.
전략 6: 비밀을 조심스럽게 다루십시오
비밀은 공개되어서는 안 됩니다. 그것이 그들이 비밀 이라고 불리는 이유입니다. 그럼에도 불구하고 Facebook Messenger를 통해 프로덕션 PostgreSQL 데이터베이스에 비밀번호를 보낸 적이 몇 번이나 있습니까? 항상 다음을 확인하십시오.
- 전송 중 비밀 암호화
- 자주 돌려주세요
전송 중 비밀 암호화
채팅과 같은 채널을 통해 비밀을 공유해야 하는 경우 암호화되어 있는지 확인하십시오. 연습으로 자주 사용하고 가장 오래된 채팅 클라이언트를 방문하십시오. Facebook 메시지 또는 Whatsapp일 수 있습니다. 그것이 무엇이든 관계없이 메시지에서 "비밀번호"라는 문구를 열고 검색하십시오.
이러한 비밀이 암호화된 경우 메시지에 액세스할 수 있는 모든 사람이 해당 비밀을 사용할 수 없습니다.
비밀을 자주 순환
비밀이 더 오래 존재하거나 더 많이 공유될수록 손상될 가능성이 커집니다. 일정 기간이 지나면 비밀과 암호를 교체하는 것이 좋습니다.
전략 7: 암호화 ID 설정
이것은 확실히 고급 전략이지만 이것이 널리 보급되지 않은 이유를 개인적으로 이해하지 못합니다. 다음을 고려하십시오. 동료는 당신이 피해를 입었다고 생각합니다. 그들은 어떻게 실제 당신에게 메시지를 전달합니까? 인터넷의 누군가가 중요한 취약점 정보를 공유해야 하는 경우 어떻게 안전하게 보낼 수 있습니까? 직원들이 전송 중인 정보를 안전하게 공유하도록 하려면 어떻게 해야 합니까?
내가 가장 좋아하는 예는 직원의 PGP 키에 암호로 서명하는 Coinbase의 키베이스 프로필입니다. 그들은 더 나아가 규정 준수 부서에 PGP 키를 제공했습니다. 진심으로, Coinbase, 수고하셨습니다!
개인적으로 누군가 내 온라인 ID가 손상되었다는 합리적인 의심이 있는 경우 내 키베이스 프로필에서 사용할 수 있는 PGP 키를 사용하여 메시지에 서명하도록 요청하면 됩니다. 나는 이 PGP 키에 액세스할 수 있는 유일한 사람이며 다른 ID가 손상되더라도 이 키가 안전하게 유지되도록 합당한 예방 조치를 취했습니다.
메시지의 진위 여부가 의심되는 경우 서명을 요청하십시오. 나에게 비밀을 보내야 한다면 내 공개 키로 암호화하십시오.
명확한 원격 작업자 보안 정책 구현
보안 정책은 시스템, 조직 또는 기타 엔터티에 대한 보안이 무엇을 의미하는지에 대한 정의입니다. 조직의 경우 구성원의 행동에 대한 제약과 문, 자물쇠, 열쇠 및 벽과 같은 메커니즘에 의해 적에게 부과되는 제약을 해결합니다. – 위키피디아
보안 정책은 작업을 수행할 때 따라야 하는 필수 규칙 또는 프로토콜입니다. 위의 전략은 도움이 되지만 따르기 쉽게 하려면 팀이 따를 수 있는 간단한 규칙 세트를 제공하십시오. 팀이 무엇을 해야 하는지 정확히 알고 있으면 보안을 엉망으로 만들기가 더 어렵습니다.
구현할 원격 작업자 보안 정책의 예를 살펴보겠습니다.
직원 을 위해 구현할 정책:
- NDA 및 계약: 직원이 적절한 법적 근거 없이 기밀 리소스에 액세스하지 못하도록 합니다.
- 비상 연락처 정보: 원격 팀 구성원이 응답하지 않는 경우 직원의 전체 및 비상 연락처 정보를 삭제합니다.
- 필수 권한만 부여: 팀 구성원이 기능을 수행하기 위해 특정 영역에 대한 액세스 권한이 필요하지 않은 경우 액세스 권한을 부여하지 마십시오. 영업 팀 구성원은 코드 저장소에 액세스할 필요가 없습니다.
- 암호 관리자: 직원이 암호 관리자에 액세스할 수 있도록 합니다.
- 강력한 인증 정책
- 최소한의 암호 강도: 저는 개인적으로 암호를 싫어합니다. 제가 관리자인 조직의 경우 최소 50자의 영숫자로 된 암호가 필요합니다. 암호 관리자를 사용하는 경우 이 정책을 준수하는 것은 간단합니다.
- 필수 비밀번호 재설정: 직원 비밀번호가 자주 만료되어 비밀이 자주 교체되도록 합니다.
- 이중 인증 : 모든 곳에서 2FA 사용
- PGP 키
- 암호화된 하드 디스크
- 암호화된 백업
직원은 떠나지만 직원의 정보를 가져갈 수 없습니다. 직원이 퇴사한 후에도 데이터 를 유지하려면 다음 정책을 적용하십시오.
- 회사 이메일 계정: 직원에게 자체 도메인의 이메일 계정을 제공하면 직원의 커뮤니케이션을 비활성화하고 감사할 수 있습니다.
- 실시간 커뮤니케이션: 이메일은 훌륭하지만 때때로 팀에서 실시간으로 이야기해야 합니다. 팀에 중앙 집중식 Slack 또는 IRC 채널이 있는지 확인합니다. 이를 통해 필요에 따라 통신을 비활성화하거나 감사할 수 있습니다.
- 중앙 집중식 코드 저장소: 모든 회사 코드가 회사 코드 저장소에 저장되어 있는지 확인하십시오. GitHub와 같은 공개 SaaS 제품에 대한 회사 계획은 모든 직원 코드를 세밀하게 제어해야 할 때까지 괜찮습니다. 후자의 경우에는 자신의 GitLab 인스턴스를 가져오는 것이 좋습니다.
인프라 보호 정책:
- 시스템 업데이트 유지: 보안 취약점은 매일 발견되고 패치됩니다. 이러한 수정 사항을 적용하는 것은 귀하의 몫입니다. 침해가 몇 주 전에 패치된 취약점으로 인해 발생했다는 사실을 발견하는 것보다 더 나쁜 것은 없습니다.
- 프로덕션 및 스테이징 환경 잠금: 직원이 프로덕션 또는 스테이징 환경에 액세스할 수 없어야 합니다. 때때로 그들은 단지 엉망입니다.
- 강력한 CI/CD 흐름 만들기: 항상 "좋은" 코드를 배포하기를 원하며 간단한 CI/CD 프로세스는 항상 이를 보장합니다.
- 축복받은 저장소 보호: 자동화된 CI/CD 프로세스가 있는 경우 축복받은 저장소가 프로젝트 관리자만 편집할 수 있는지 확인하십시오.
- 검토 프로세스 정의: "나쁜" 코드가 눈에 띄지 않게 통과하도록 하려면 검토 프로세스를 만드십시오. 이것은 병합하기 전에 마지막에 하나의 독립적인 "LGTM(Looks good to me)" 주석을 요구하는 것처럼 간단할 수 있습니다.
- SSH 키: 애플리케이션이 SSH 액세스를 제공해야 하는 경우에는 비밀번호 대신 SSH 키를 사용하는지 확인하십시오.
- BYOD 중단 고려: 예산 팀은 BYOD가 종이 없는 사무실 이후 최고의 정책 혁신이라고 생각할 수 있지만, 여유가 있다면 엄격한 보안 정책을 구현할 수 있는 기업 시스템을 팀에 제공하는 것을 고려하십시오.
- 암호화된 백업: 귀하의 데이터는 중요합니다.
코드 작성 시 정책:
- 코드에 비밀 없음: 버전 제어의 특성으로 인해 코드에 추가할 때 데이터를 제거하는 것이 매우 어려울 수 있으며, 여기서 비밀 키를 찾기는 매우 쉽습니다.
- 비밀번호 저장 시 Bcrypt: 인증 시스템을 설계할 때 시스템을 설계하거나 일반 텍스트로 저장하는 대신 bcrypt를 사용하여 비밀번호를 해시 및 솔트합니다.
- 로그에서 민감한 정보 필터링: 글로벌 후추, 애플리케이션의 세션 서명 키 또는 사용자의 로그인 시도 여부에 관계없이 액세스 권한이 있는 모든 사람이 읽을 수 있는 시스템 로그 파일로 이러한 정보가 누출되지 않도록 합니다.
- 필요한 최소 권한 부여: 애플리케이션에
READ
권한만 필요한 경우WRITE
권한을 부여하지 마십시오. 최소 권한 원칙을 준수합니다.
대응 계획 작성
보안 침해는 때때로 발생하며 사후에 학습할 시간이 충분하지만 중요한 것은 모든 디지털 자산을 보호할 수 있는 명확한 경로가 있다는 것입니다.
보안 침해가 발생할 경우 시간을 내어 비상 계획을 세우십시오. 다음 시나리오에서 조치를 고려하십시오.
- 민감한 데이터가 있는 기기를 분실했습니다.
- 승인되지 않은 당사자가 인프라에 액세스했을 수 있습니다.
- 팀원 중 자신과 다르게 행동하는 사람을 관찰합니다.
- 보안 취약점이 발견되었습니다.
대응 계획에 포함할 사항:
- 부지런한 문서화: 화면 녹화를 활성화하고, 팀이 접하는 모든 것을 공유할 수 있도록 위키를 설정하십시오.
- 위반 격리: 위반 범위에 따라 사용자 계정을 비활성화하거나 서버를 오프라인으로 전환하거나 프로덕션을 종료하고 사용자에게 연락하는 것과 같이 간단할 수 있습니다.
- 내부 커뮤니케이션 설정: 전용 Slack 채널을 시작하거나 누구나 자신이 발견한 내용을 보고할 수 있는 방법을 찾으세요.
- 도움 받기: 위반의 영향을 받는 모든 팀에 전화를 겁니다. 이것은 또한 당국에 연락하기에 좋은 시간이 될 수 있습니다.
- 조사: 침해가 무엇인지, 어느 정도인지, 정상 운영을 재개하기 위해 우리가 할 수 있는 일을 파악합니다.
- 온라인으로 돌아가기: 가능한 한 빨리 정상 작업을 재개하기 위해 수정 사항을 생성, 테스트 및 게시합니다. 귀하의 사용자는 귀하의 서비스에 의존하여 작동하며 안정적이고 안전한 서비스를 보장할 수 있는 순간 다시 온라인에 접속합니다.
- 사용자와 대화: 사용자를 어둠 속에 두지 마십시오. 당신이 할 수 있는 최악의 일은 사용자에게 무슨 일이 일어나고 있는지 설명하지 않고 서비스를 중단하는 것입니다. 라이브 업데이트 채널을 구축하십시오. 이것은 트위터를 사용하여 정보를 제공하는 것만큼 간단할 수 있습니다. 사건이 처리된 후, 무슨 일이 일어났는지, 어떻게 일어났는지, 앞으로 유사한 침해를 방지하기 위해 무엇을 했는지에 대한 사후 보고서를 게시하십시오.
보안 사고가 발생합니다. 중요한 것은 당신이 당신의 응답을 처리하는 방법입니다. 지금까지 내가 가장 좋아하는 응답 중 하나는 2015년에 LastPass가 비정상적인 네트워크 활동을 감지했을 때 필수 마스터 암호 재설정을 발행했을 때였습니다. 저는 LastPass를 오랫동안 사용해 왔으며 최근의 보안 문제에도 불구하고 고객의 요구를 최우선으로 하여 고객에게 응답하는 방식이 마음에 듭니다.
권장 읽을거리
다시 말하지만 완벽한 보안은 없습니다. 중요한 것은 데이터를 안전하게 유지하기 위해 합당한 노력을 기울였는지 확인하는 것입니다.
이러한 보안 관행으로 인해 귀하와 귀하의 원격 팀은 해킹하기가 훨씬 더 어려워집니다.
법을 피해 도망치는 해커의 실화를 읽고 싶다면 Kevin Mitnick 의 Ghost in the Wires 를 추천합니다.
상대방이 어떻게 생각하는지 자세히 알고 싶다면 다음을 읽어보는 것이 좋습니다.
- 사회 공학: 인간 해킹 기술 (Christopher Hadnagy)
- 케빈 미트닉(Kevin Mitnick)과 윌리엄 L. 사이먼(William L. Simon )의 기만의 기술
제 죄는 호기심입니다.