CS/Linux

[Linux] OpenSSH

kyoulho 2024. 10. 3. 19:54

OpenSSH


OpenSSH (Open Secure Shell)는 네트워크를 통해 안전하게 데이터를 전송하고 원격 시스템에 접속할 수 있도록 해주는 오픈 소스 툴이다. OpenSSH는 SSH 프로토콜을 구현하며, 다음과 같은 주요 기능을 제공한다:

  • 암호화된 통신: 모든 데이터 전송이 암호화되어 중간에서의 도청이나 패킷 스니핑 공격에 대비할 수 있다.
  • 인증 기능: 비밀번호 인증 외에도 공개 키 인증을 지원하여 보안을 강화할 수 있다.
  • 파일 전송: scp와 sftp를 통해 안전하게 파일을 전송할 수 있다.
  • 터널링 및 포트 포워딩: 네트워크 트래픽을 안전하게 전달하기 위한 터널링 기능을 제공한다.

OpenSSH의 주요 특징

  • 보안성: 데이터가 암호화되어 전송되므로 보안에 매우 강력하다.
  • 유연성: 다양한 인증 방식과 설정 옵션을 제공하여 다양한 환경에 맞게 구성할 수 있다.
  • 확장성: 키 기반 인증, 다중 인증 방법 등 다양한 보안 기능을 지원한다.
  • 오픈 소스: 누구나 무료로 사용 가능하며, 활발한 커뮤니티 지원을 받는다.


OpenSSH 서버 설치 과정


1. OpenSSH 서버 설치

Rocky Linux에는 OpenSSH 서버 패키지가 기본적으로 포함되어 있다. 설치 여부를 확인하고, 설치되지 않은 경우 설치한다.

sudo dnf install openssh-server

2. OpenSSH 서비스 시작 및 활성화

설치가 완료되면 OpenSSH 서비스를 시작하고, 서버 재부팅 시 자동으로 시작되도록 설정한다.

sudo systemctl start sshd
sudo systemctl enable sshd

3. 방화벽 설정 (포트 열기)

기본적으로 SSH는 포트 22를 사용한다. firewalld를 사용하는 Rocky Linux에서는 해당 포트를 열어야 원격 접속이 가능하다.

sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload

4. SSH 서버 설정 파일 편집

OpenSSH 서버 설정 파일은 /etc/ssh/sshd_config에 위치해 있다. 기본 설정을 검토하고 필요한 경우 수정한다.

sudo vi /etc/ssh/sshd_config
# 설정을 변경한 후, SSH 서비스를 재시작하여 변경 사항을 적용한다.
sudo systemctl restart sshd

5. 사용자 계정 설정

원격 접속을 허용할 사용자 계정을 생성하거나 기존 사용자의 SSH 접근 권한을 설정한다.

sudo adduser sshuser
sudo passwd sshuser


공개 키 인증 설정 (선택 사항)


비밀번호 대신 공개 키 인증을 사용하면 보안이 더욱 강화된다.

1. 클라이언트에서 SSH 키 생성

원격 접속할 클라이언트 PC에서 SSH 키를 생성한다.

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

2. 공개 키를 서버에 복사

생성된 공개 키(~/.ssh/id_rsa.pub)를 서버의 사용자 계정에 추가한다.

ssh-copy-id sshuser@서버_IP주소
# 또는 수동으로 복사할 경우:
cat ~/.ssh/id_rsa.pub | ssh sshuser@서버_IP주소 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'

3. 서버 설정 파일 수정

sshd_config 파일에서 공개 키 인증을 활성화하고 비밀번호 인증을 비활성화할 수 있다.

PasswordAuthentication no
# 설정을 변경한 후, SSH 서비스를 재시작한다.
sudo systemctl restart sshd


추가 보안 설정


OpenSSH를 더욱 안전하게 사용하기 위해 다음과 같은 추가 보안 설정을 고려할 수 있다.

포트 변경

기본 포트인 22를 변경하여 자동화된 공격을 방지할 수 있다.

sudo vi /etc/ssh/sshd_config
# 2222번 포트로 변경
Port 2222

변경 후, 방화벽에서 새로운 포트를 열어준다.

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload

루트 사용자 로그인 금지

루트 사용자로의 직접 로그인을 금지하여 보안을 강화한다.

PermitRootLogin no

비밀번호 인증 비활성화

비밀번호 대신 공개 키 인증만 허용하여 보안을 강화한다.

PasswordAuthentication no

SSH 접속 제한

특정 사용자나 그룹만 SSH 접속을 허용하도록 제한할 수 있다.

AllowUsers sshuser sshuser2@192.168.0.0/16
# 또는
AllowGroups sshgroup
# 설정 후, SSH 서비스를 재시작한다.
sudo systemctl restart sshd

로그 모니터링

SSH 접속 시도를 모니터링하고, 이상 활동을 탐지하기 위해 로그를 정기적으로 확인한다.

sudo tail -f /var/log/secure
또는
sudo journalctl -u sshd -f

Fail2Ban 설치

무차별 대입 공격을 방지하기 위해 Fail2Ban을 설치하고 설정할 수 있다.

sudo dnf install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

기본 설정으로도 SSH 접속 시도에 대한 자동 차단을 수행하지만, /etc/fail2ban/jail.local 파일을 편집하여 세부 설정을 조정할 수 있다.

728x90

'CS > Linux' 카테고리의 다른 글

[Linux] Xrdp 서버  (1) 2024.10.03
[Linux] GUI 방화벽 설정  (1) 2024.10.03
[Linux] 텔넷 서버  (2) 2024.10.03
[Linux] 쿼터(Quota)  (1) 2024.10.03
[Linux] LVM(Logical Volume Manager)  (0) 2024.10.02