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