리눅스 - ssh/sshd의 보안에 대해 (1/2)

이 글은 리눅스의 RDP나 다름 없는 SSH에 대해 간략히 소개하고, 보안 측면에서의 기능을 일부 다룬다.


SSH

SSH는 22번 포트를 사용하며 HTTPS와 같이 안전한 Layer를 감싼 Remote Shell이다. 접속 대상 Host는 SSH Daemon이 띄워져있어야 하며 OpenSSH(openssh-server)이 실질적 표준이다.


SSH 포트 변경

SSH를 인터넷 대상으로 Open(ALLOW 0.0.0.0)하는 경우 어떻게 알고 찾아왔는지, 아래와 같이 많은 곳에서 임의의 접근을 다수 받을 수 있다. 따라서 22번 포트에서 임의의 포트로 바꾸는 것이 기본이라고 할 수 있다. (물론 그래도 공격은 충분히 가능하다.)


SSH 로그 확인

SSH 로그는 sshd 접속 기록이 없는 경우 딱히 기록되지 않으니, 클라우드에서 SSH port를 Open해 놓고 하루 정도만 기다려도 로그가 많이 쌓이게 된다(ㅎㅎ..). 아래의 커맨드로 쉽게 확인할 수 있으며, auth.log 파일 자체는 다른 내용도 많이 담고 있으며, 파일이 커지면 auth.log.1과 같이 rolling 된다.

$ cat /var/log/auth.log | grep sshd

단순히 시도한 사용자명만 나열해도 이정도...


Bation Host 사용

로드밸런서, 배스쳔 호스트 예시


물론 접속 자체를 특정 네트워크 대역(고정 IP겠죠?)으로 제한하고, 특정 네트워크로 VPN을 사용해도 되겠지만, 그렇게 하기 어려운 경우라면 Bastion Host를 사용하는 것도 방법이다. 애플리케이션 서버 등은 보통 로드 밸런서 뒤에 숨기 때문에 굳이 외부로 노출되지 않는데 SSH 때문에 이를 Public Subnet으로 옮기는 것도 좋지 못하므로, 낮은 사양의 PC를 인터넷 대역에 오픈하고 해당 PC만이 내부망의 서버들과 통신할 수 있도록 하면 적절하다.


로드밸런서, 배스쳔 호스트 예시


SSH Proxy와 같은 여러 얘기가 있지만 간단하게 command를 실행시키는 형태로 쉽게 접속이 가능하다.

$ ssh -t user@BASTION_HOST ssh user@INTERNAL_SERVER


TODO

SSH의 많은 설정 중 보안에 관련된 설정을 더 알아보기

리눅스 - ssh/sshd의 보안에 대해 (1/2)

https://jsqna.com/linux-sshd-logs/

Author

Seongbin Kim

Posted on

21-06-13

Updated on

21-06-27

Licensed under

댓글