서버 보안을 강화하고서
처음으로 CI/CD 자동배포를 해보니 역시 SSH 연결이 안 됐다.
syslog를 보니 해외 IP의 SSH 접속이 막히고 있었다.
이걸 만들고 나서 알게 된 것인데
사실 처음부터 EC2 private key를 사용해서 접근하게 했으면 될 것같다...ㅎㅎ... (몇시간 내내 끙끙댔는데.. 후 그래도 새로 배웠으니 그나마 다행이다)
ssh-keygen -t rsa -b 4096 -f github-actions //gitaction을 위한 키 생성
# EC2의 .ssh 디렉토리에 공개키 추가
cat github-actions.pub >> ~/.ssh/authorized_keys
이렇게 하고
ssh 접속과 파일 전송 모두 ssh_key를 사용한다.
이때는 github action에 private key를 등록해서 사용하면 된다.
서버가 public key를 갖고 있으면,
클라이언트(GitHub Actions)는 private key를 통해서 접속할 수 있다.
다만, 이렇게 접근하려고 해도 보니
GitHub Action의 ip가 다 해외여서 ssh_key를 통한 접근이 모두 막혔다는 것이다...!
결국, 해외 ip 차단 보안 시스템을 없애야했다.
대신 password 접속을 차단하고
/etc/ssh/sshd_config에서
이렇게 전용 키로만 로그인이 가능하게끔 ssd의 설정 값을 변경해주었다.
근데 막상 이렇게 열심히 만들고 보니 그냥
EC2전용 private key를 썼어도 됐다는... 그런 깨달음을 얻었다..!
처음엔 그렇게 생각했다.
그런데 Syslog에 찍히는 ip들을 다 화이트 리스트로 허용을 해도 계속 ci/cd가 실패했다.
대체 ip가 얼마나 많길래?...
하면서 찾아보니..
ip목록
여기에만
거의 수백~수천개의 ip가 있었다...
이걸 다 등록하면 어쨌든 매번 접근이 올 때마다 비대해진 화이트리스트를 체크해야 하기에 부하가 커질 수 있을 것이라고 판단했다.
그래서, 해외 ip 차단 방식은 포기하기로 했다.
대신 패스워드 접근 자체를 막고 key를 통해서만 접속할 수 있게 했기 때문에 무차별 로그인 공격에서는 안전할 것이라고 생각한다.