우분투 SSH 구축까지 완료 하였다. 보안을 위해 ID/PW 접속을 차단하고 .pem Key 원격 접속만 허용 및 기본 보안 설정을 확인 해 본다.
서버와 클라이언트에서 별도의 작업을 해 주어야 하기 때문에 복잡할 수도 있다.
$ ssh-keygen -t rsa -b 2048 -f server-key
위 명령어를 입력하고 Enter 입력을 해주면, ~$ 경로에 server-key.pub & server-key 파일이 생성 된 것을 확인 할 수 있다.
서버에서 아래 명령어를 입력하여 authorized_keys 파일을 생성 한다
$ touch ~/.ssh/authorized_keys
$ sudo chmod 600 ~/.ssh/authorized_keys
클라이언트에서 Pub Key Value를 확인 하여 서버의 authorized_keys에 입력한다.
$ cat server-key.pub
클라이언트에서 아래 명령어 입력해 PEM Key로 변환한다.
# pem Key로 변환
$ cp server-key server-key.pem
생성된 PEM Key로 외부에서 접속이 가능해진다.
$ ssh -i server-key.pem [ServerUserName]@[IP & Domain 주소]
외부에서 Key의 생성자 외 사용자가 복사한 pem Key를 사용하면 에러가 발생한다 이런 경우, 권한 설정을 변경해준다. 보안상 읽기 권한만 부여 해 준다.
$ sudo chmod 400 server-key.pem
SSH 서버의 구성 파일인 /etc/ssh/sshd_config 의 프로퍼티를 몇가지 설정하였다.
22번 포트 외의 포트 사용
Port 2200
세션 타임아웃 설정
ClientAliveInterval 600
ClientAliveCountMax 3
Root Login 차단
PermitRootLogin no
암호 없는 계정에 대한 로그인 허용
PermitEmptyPasswords no
암호 로그인 차단 및 공개키 인증 로그인 방식 허용
PubkeyAuthentication yes
PasswordAuthentication no
로그인 시도 횟수 및 시간 제한
# 로그인 시도 5회 실패시 접속 강제 종료
MaxAuthTries 5
# 30초 이내로 로그인 하지 않을 경우 강제 종료
LoginGraceTime 30
그 외
# HostName 1,2 사용자만 접속 가능하도록 허용
AllowUsers HostName1 HostName2
# HostName 사용자와 해당 IP의 접속만 허용
AllowUsers HostName@199.999.99.02
보안 설정 반영
$ sudo systemctl restart sshd