Dev/개발 일지

2. 개발 환경 세팅 (SSH 설정, 키 페어 등록, 포트포워딩)

takeU 2024. 9. 9. 22:18
반응형

SSH 설치

설치

sudo apt install openssh-server

실행 & 종료 & 실행 상태 조회

# SSH 실행
sudo service ssh start

# SSH 종료
sudo service ssh stop

# SSH 실행 상태 조회
sudo service ssh status

SSH 접속 포트 설정

기본적으로 SSH의 기본 포트는 22번인데 그대로 사용하면 브루트포스의 타겟이 되기 좀 더 쉬워지기 때문에, 변경해주는 것이 좋음

sudo vi /etc/ssh/sshd_config

위 커맨드를 통해 편집기를 연 후에 본인이 기억할 수 있는 포트 번호를 지정하고 저장하면 됨.

Port 2199                       # SSH 서버가 사용할 포트를 설정합니다. 기본값은 22입니다.
ListenAddress 0.0.0.0           # SSH 서버가 바인딩할 IP 주소를 설정합니다. 모든 IP 주소에서 수신합니다.
PermitRootLogin no              # 루트 계정으로의 SSH 로그인 허용 여부를 설정합니다. 보안상 'no'로 설정합니다.
PasswordAuthentication no       # 비밀번호를 통한 인증 허용 여부를 설정합니다. 비밀번호 인증을 비활성화합니다.
PubkeyAuthentication yes        # 공개 키 인증을 허용합니다. 공개 키 인증을 사용하는 경우 'yes'로 설정합니다.
MaxAuthTries 3                  # 로그인 시도 횟수를 제한합니다. 기본값은 6, 보안을 위해 값을 줄입니다.
MaxSessions 10                  # 사용자당 최대 SSH 세션 수를 제한합니다. 기본값은 10입니다.
AllowUsers yt          # 특정 사용자만 SSH 접속을 허용합니다. 보안을 강화하기 위해 명시적으로 설정합니다.
PermitEmptyPasswords no          # 빈 비밀번호를 가진 계정으로의 SSH 로그인을 허용할지 여부를 설정합니다. 'no'로 설정합니다.
ChallengeResponseAuthentication no  # 챌린지 응답 인증을 허용할지 여부를 설정합니다. 보안을 위해 'no'로 설정합니다.
# 접속 암호 설정
sudo passwd yt

# 설정 이후 ssh 재시작
sudo service ssh restart

ssh 방화벽 설정

# 방화벽 활성화
sudo ufw nable

# 접속 허용 포트 지정 / 위에서 설정한 2199포트로 진행
sudo ufw allow 2199
sudo ufw allow 2199/tcp

# 22번 포트를 지우기 (깔끔한게 좋아서 지움, 지우지 않는걸 추천..)
sudo ufw status # 순서 확인
sudo ufw delete 1 # 22번이 있는 순서를 지워주면 됨

ssh 접속

# 서버 IP 확인
hostname -I # 192.168.219.112

# 클라이언트 openssh 설치 여부 확인
sudo apt lint openssh* # 해당 커맨드 입력 후 openssh-client가 없다면 설치 후 진행

# 접속
ssh -p 2199 yt@192.168.219.112 # 이후 위에 설정한 암호 입력

SSH 인증서

대부분 접속하는 클라이언트 환경에서 진행됨

SSH 키 페어 생성

# 클라이언트
ssh-keygen -t rsa

SSH 키 서버에 전송

# 리눅스, 맥 클라이언트
ssh-copy-id -p 2199 yt@192.168.219.112 

# 윈도우 클라이언트
scp -P 2199 ~/.ssh/id_rsa.pub yt@192.168.219.112:.ssh/authorized_keys

키 권한 허용

# 서버
chmod 600 ~/.ssh/authorized_keys

# SSH 재시작
sudo service ssh restart

여기까지 진행하면 패스워드 입력 없이 클라이언트에서 서버에 접속이 가능해짐

Fail2Ban

서버에서 반복적인 실패한 로그인 시도를 감지하고 해당 IP 주소를 차단하는 도구

반복적인 로그인 시도를 차단하기 위해 세팅

설치

sudo apt-get update
sudo apt-get install fail2ban

설정

# 기본 설정 복사
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

# 파일 열기
sudo vi /etc/fail2ban/jail.local

# [sshd] 아래 다음 설정 추가
[sshd]
enabled = true                           # 이 규칙을 활성화합니다.
port = 2199                              # SSH 기본 포트 2199에서 작동하도록 설정합니다.
logpath = %(sshd_log)s                   # SSH 로그 파일의 경로를 자동으로 설정합니다. (/var/log/auth.log)
maxretry = 3                             # 3번의 로그인 실패 후 IP를 차단합니다.
bantime = 3600                           # IP를 1시간 동안 차단합니다.

# 시작 or 재시작
sudo fail2ban-client start
sudo systemctl restart fail2ban

# 실행 상태 조회
sudo fail2ban-client status sshd

# 자동 실행 설정
sudo systemctl enable fail2ban

# 차단 해제 (혹시 몰라서)
sudo fail2ban-client set sshd unbanip (IP)

포트포워딩은 구글에 잘 나와있어서 그대로 따라했음

https://m.blog.naver.com/ksdf25/222655817456

이후에 외부에서 접속은 공인IP 확인 후 위에서 접속한 방법과 같이 진행

https://www.whatismyip.com/


혹시 틀리거나, 보충하면 좋을 내용이 있다면 남겨주세요.