너기의 기술 성장 일기

linux SSH 보안 설정 본문

보안

linux SSH 보안 설정

neogi 2023. 5. 13. 05:50

환경 최상단에 베스천 서버를 두어 중앙화 시키는게 좋음.

 

설정파일 위치

vim /etc/ssh/sshd_config

 

port  및 네트워크 관련 설정

#ssh 기본포트는 22이다. 해커의 무분별한 공격을 방지하기 위하여 변경하는 것이 좋음
# 1024 ~ 65535 중에 사용하는 것이 좋다.(well-known port 제외)
# 포트 변경 후 /etc/services 에서 ssh의 포트를 변경하고 sudo service ssh restart
port 1234

#기본값 any, ipv4로 제한할 경우 inet으로 설정
AddressFamily any

#접속 허용할 ip대역 지정 prefix 8로 적용됨. ip를 접근 제한 설정은 allowuser 옵션 사용 요망
ListenAddress 0.0.0.0
#ipv6 대역 지정
ListenAddress ::

 

ssh session 설정

#기본값 10, 연결된 shell, 서브시스템(sftp 등), 로그인 세션의 최대 수 제한.
# 1로 설정할 경우 멀티플랙싱이 제한되며 0으로 설정할 경우 포워딩을 허용하면서 모든 셀, 로그인 및 서브시스템 세션이 차단된다.
MaxSessions 10

Session TimeOut 설정

정해진 시간동안 사용하지 않을 시 세션을 종료한다.

#종료시간은 ClientAliveInterval * ClientAliveCountMax 이다.
#아래처럼 설정할 경우 600 * 3 = 1800s 로 30분동안 사용이 없을 시 세션이 만료된다.
ClientAliveInterval 600
ClientAliveCountMax 3

 

Root 로그인 차단

원격에서 root로 접속하는 것은 최악의 상황이 발생할 수 있으므로 미연에 방지하기 위하여 차단해준다.

PermitRootLogin no

 

SSH 연결 시 권한 분리

centos7의 경우 기본값 sandbox

#yes로 설정할 경우 ssh 인증 후 ssh 프로세스를 로그인한 사용자의 권한으로 실행한다.
#sandbox일 경우 사전에 승인되지 않은 권한이 없는 프로세스는 추가적으로 여러가지 기능이 제한된다.

### no로 설정할 경우 일반사용자로 로그인하여도 root로 ssh 프로세스가 실행되기 때문에 절대 설정하면 안된다. ###
UsePrivilegeSeparation yes

 

공백 패스워드 차단

#기본값 no, 패스워드가 공백인 계정에 대한 로그인을 차단하기 위해 no 권장
PermitEmptyPasswords no

 

패스워드 이용 접속 차단 설정

#yes로 설정할 경우 패스워드 입력으로 ssh 접근이 가능하다. 기본값 no
PermitEmptyPasswords no

 

로그인 시도 제한 설정

#기본값 6, 지정된 횟수 이상으로 로그인 실패 시 접속 강제 종료
MaxAuthTries 5

 

로그인 제한 시간 지정

#기본값 2분, 로그인 시도 후 로그인이 성공될 때 까지의 시간을 제한한다. 0으로 설정할 경우 옵션 비활성화
LoginGraceTime 2m

 

SSH 접속 허용 계정 설정

#특정 사용자만 ssh 접속 허용, 계정이 여러개일 경우 공백으로 구분
AllowUsers user1 user2
#특정 계정이 특정 host에서만 접속할 수 있도록 제한
AllowUsers user1@192.168.0.1
# *를 사용하여 모든 user의 로그인을 허용하되, 접속 허용 호스트만 지정 가능하다.
AllowUsers *@192.168.0.1

 

 

참고자료

https://www.lesstif.com/ws/ssh-43843905.html

'보안' 카테고리의 다른 글

linux pem 키 제한 및 권한 제어  (0) 2023.05.13