01. 기본 설정

기본 설정

/etc/ssh/sshd_config 파일의 내용을 수정해서 SSH 서버의 여러 가지 옵션을 변경할 수 있습니다.

포트 번호 변경

기본 포트 22번은 무작위 공격의 대상이 될 수 있으므로 추측이 어려운 반드시 포트 번호를 임의 숫자(예: 22111)로 변경합니다.

Port 22111
#ListenAddress 10.0.0.31 #  IP 주소 부분은 반드시 주석처리

이 때 서버소켓 포트 번호는 1024~49151 범위에서 임의로 선택합니다.

이제 기본 포트로 접속할 경우에는 바로 접속이 끊어집니다.

$ ssh root@123.12.123.12
ssh: connect to host 123.12.123.12 port 22: Connection refused

IPv4 접속만 허용

IPv4 접속만 허용하기 위해 아래와 같이 수정합니다.

AddressFamily inet # IPv4 only
# AddressFamily any # 기본값

루트 로그인 금지

VULTR에서 인스턴스 최초 설치 시 루트 접속을 허용지만 앞서 sudo 시스템으로 변경했습니다.

이제 시스템 관리자 egg 사용자로만 로그인하기로 했으므로 굳이 원격 루트 접속을 허용할 필요가 없습니다.

PermitRootLogin no

이제 root 접속 시도 할 경우 아래와 같이 바로 접속을 불허합니다.

$ ssh -p 22111 root@123.12.123.123
root@123.12.123.12's password:
Permission denied, please try again.

빈 비밀번호 사용 금지

빈 문자열의 비밀번호를 사용할 수 없도록 합니다. 이는 기본값이므로 굳이 손댈 필요는 없습니다.

PermitEmptyPasswords no

특정 그룹 사용자만 접속 가능

원격에서 콘솔 명령어를 실행하는 사용자는 시스템 관리자나 개발자입니다.

admin 또는 특정 그룹만 원격 SSH 접속할 수 있도록 제한해야 합니다.

앞서 예제에서 만든 spam 그룹 사용자만 SSH 접속 가능하도록 설정합니다.

AllowGroups spam

접속 클라이언트 IP를 DNS Lookup 하지 않음

다음 줄을 추가합니다.

UseDNS no

우분투(데비안) OS 버전 노출 안 함

다음 줄을 추가합니다.

DebianBanner no

sftp 사용 금지

별도로 vsftpd 등을 설치해서 ftp 프로토콜을 사용하는 것보다 그냥 sftp로 간단히 파일 업로드/다운로드하는 것이 낫기는 합니다.

그러나 sftp 사용을 금지하려면 다음 줄을 주석 처리합니다.

#Subsystem      sftp    /usr/libexec/openssh/sftp-server

sftp를 사용하지 않을 경우 scp로 파일을 전송할 수 있습니다.

서버 재기동

$ sudo systemctl restart ssh

요약

주요 설정 요약

Protocol 2
Port 22111
AddressFamily inet

AllowGroups spam
PermitRootLogin no
StrictModes yes
UsePrivilegeSeparation yes

HostbasedAuthentication no
RhostsRSAAuthentication no
IgnoreRhosts yes

PermitEmptyPasswords no

AllowTcpForwarding no
X11Forwarding no

UseDNS no

DebianBanner no

#Subsystem    sftp    /usr/lib/openssh/sftp-server

설정 기본값 되돌리기

우분투에서 패키지 설치 시 제공하는 sshd_config 파일의 기본 설정 파일의 경로는 아래와 같이 확인할 수 있습니다.

$ dpkg -S sshd_config
openssh-server: /usr/share/openssh/sshd_config.md5sum
openssh-server: /usr/share/man/man5/sshd_config.5.gz
openssh-server: /usr/share/openssh/sshd_config

따라서 diff 명령어로 수정사항을 확인할 수 있습니다.

$ diff /etc/ssh/sshd_config /usr/share/openssh/sshd_config

또한 GitHub에서 현재 공식 배포 버전의 sshd_config 파일을 확인할 수도 있습니다.

만약 일부 옵션 설정을 잘못했을 때 이 파일들을 참고하여 기본값으로 되돌릴 수가 있습니다.

최종 수정일시: 2019-02-08 12:02

blog comments powered by Disqus