sshd config

소개

대게 우분투에서 접속시 ssh를 쓰게 된다.

이때 보안상 패스워드 로그인을 차단 할 필요가 있다.

먼저 ssh key 를 등록 해야한다.

ssh key 등록

외부에서 쓰려는 키는 암호를 꼭 걸어주자.

ssh-keygen -t ed25519 -C "tab"

ssh-copy-id 사용자명@서버IP
# 자동으로 ~/.ssh/authorized_keys 에 등록 된다.
# 또는 
# echo "공개키" >> ~/.ssh/authorized_keys

호스트 별 키지정

~/.ssh/config 수정 또는 생성

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519  # 여기에 sixtick65 계정의 진짜 개인키 파일명 입력
  IdentitiesOnly yes         # 다른 키는 쳐다보지도 말라는 옵션

config 파일

원래 sudo nano /etc/ssh/sshd_config 사용하나

/etc/ssh/sshd_config.d/*.conf 를 참조하도록 되어있으니

이미 있는 /etc/ssh/sshd_config.d/50-cloud-init.conf 파일을 수정하도록 한다. (없으면 생성)

sudo nano /etc/ssh/sshd_config.d/50-cloud-init.conf

config 수정

50-cloud-init.conf 파일

# 비밀번호 인증 비활성화
PasswordAuthentication no

# 챌린지 응답 인증 비활성화
ChallengeResponseAuthentication no

# 루트 사용자의 SSH 로그인 비활성화 (보안 권장)
PermitRootLogin no

config 적용

백업용 터미널을 하나 더 켜놓고 하자.

# 설정 파일 오류검사
sudo sshd -t

sudo service ssh restart

config 적용 체크

설정 한대로 no 가 나오면 된다.

sudo sshd -T | grep passwordauthentication

패스워드 접속 시도

ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no 계정명@서버IP
# Permission denied (publickey).

패스워드 접속 자체가 차단 되어있음.

특정 계정 내부망에 한정짓기

/etc/ssh/sshd_config.d/sixtick_security.conf 파일에 정의 해보자

sudo nano /etc/ssh/sshd_config.d/sixtick_security.conf

파일 수정

# sixtick 사용자는 내부망에서만 접속 허용
Match User sixtick
    AllowUsers sixtick@192.168.0.0/24

다시 config 를 적용시킨다

sudo sshd -t 

sudo service ssh restart

# sudo sshd -t && sudo service ssh restart

특정 대역에서 패스워드 접속 차단

# 기본적으로 모든 접속(외부망 포함)에서 비밀번호 로그인 차단
PasswordAuthentication no

# 내부망에서 접속할 때는 비밀번호 로그인 허용
Match Address 192.168.0.0/24
    PasswordAuthentication yes

특정 계정외 접속 거부

AllowUsers 본인계정명
# AllowUsers sixtick dev

로그 보기

sudo tail -f /var/log/auth.log