GitHub Action CI/CD가 막히는 문제를 해결해보자(ssh 접속 해외 ip차단의 맹점)

Alex·2025년 1월 28일
0

Plaything

목록 보기
93/118

서버 보안을 강화하고서
처음으로 CI/CD 자동배포를 해보니 역시 SSH 연결이 안 됐다.

syslog를 보니 해외 IP의 SSH 접속이 막히고 있었다.

SSH_KEY로만 접근 가능하게 해보자

이걸 만들고 나서 알게 된 것인데
사실 처음부터 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를 썼어도 됐다는... 그런 깨달음을 얻었다..!

GitHub Action ip를 whitelist로 등록해두면 되지 않아?

처음엔 그렇게 생각했다.
그런데 Syslog에 찍히는 ip들을 다 화이트 리스트로 허용을 해도 계속 ci/cd가 실패했다.

대체 ip가 얼마나 많길래?...
하면서 찾아보니..

ip목록
여기에만

거의 수백~수천개의 ip가 있었다...
이걸 다 등록하면 어쨌든 매번 접근이 올 때마다 비대해진 화이트리스트를 체크해야 하기에 부하가 커질 수 있을 것이라고 판단했다.

그래서, 해외 ip 차단 방식은 포기하기로 했다.
대신 패스워드 접근 자체를 막고 key를 통해서만 접속할 수 있게 했기 때문에 무차별 로그인 공격에서는 안전할 것이라고 생각한다.

profile
답을 찾기 위해서 노력하는 사람

0개의 댓글