웹사이트 검색

5가지 최고의 OpenSSH 서버 모범 보안 사례


SSH(Secure Shell)는 로컬 또는 원격 Linux 서버를 연결하여 파일을 전송하고, 원격 백업을 만들고, 원격 명령 실행 및 작업을 수행하는 데 사용되는 오픈 소스 네트워크 프로토콜입니다. 네트워크를 통해 보안 채널에 연결되는 두 서버 간의 scp 명령 또는 sftp 명령을 통한 기타 네트워크 관련 작업.

이 기사에서는 SSH 서버 보안을 강화하는 데 도움이 되는 몇 가지 간단한 도구와 요령을 보여 드리겠습니다. 여기서는 SSH 서버를 무차별 공격사전 공격으로부터 보호하고 방지하는 방법에 대한 유용한 정보를 찾을 수 있습니다.

1. 호스트 거부

DenyHosts는 SSH 서버 액세스를 모니터링하고 분석하기 위해 Linux 시스템 관리자 및 사용자가 실행하도록 고안된 Python 프로그래밍 언어로 작성된 SSH 서버용 오픈 소스 로그 기반 침입 방지 보안 스크립트입니다. 실패한 로그인 시도에 대한 로그는 사전 기반 공격무차별 공격으로 알려져 있습니다.

이 스크립트는 설정된 로그인 시도 횟수에 실패하면 IP 주소를 금지하고 이러한 공격이 서버에 액세스하는 것을 방지하는 방식으로 작동합니다.

DenyHosts 기능
  • /var/log/secure를 추적하여 성공 및 실패한 로그인 시도를 모두 찾아 필터링합니다.
  • 사용자와 문제가 있는 호스트의 모든 실패한 로그인 시도를 감시합니다.
  • 로그인 시도가 실패하면 기존 사용자와 존재하지 않는 사용자(예: xyz)를 계속 감시합니다.
  • 위반하는 각 사용자, 호스트 및 의심스러운 로그인 시도를 추적합니다(로그인이 여러 번 실패한 경우) /etc/hosts.denyIP 주소를 금지합니다. > 파일.
  • 선택적으로 새로 차단된 호스트 및 의심스러운 로그인에 대한 이메일 알림을 보냅니다.
  • 또한 유효하거나 유효하지 않은 모든 사용자 로그인 시도를 별도의 파일에 유지하여 공격을 받고 있는 유효한 사용자 또는 유효하지 않은 사용자를 쉽게 식별할 수 있습니다. 따라서 해당 계정을 삭제하거나 비밀번호를 변경하거나 해당 사용자에 대한 셸을 비활성화할 수 있습니다.

2. Fail2Ban

Fail2banPython 프로그래밍 언어로 작성된 가장 인기 있는 오픈 소스 침입 탐지/예방 프레임워크 중 하나입니다. /var/log/secure, /var/log/auth.log, /var/log/pwdfail과 같은 로그 파일을 검사하여 작동합니다. > 로그인 시도 실패 횟수가 너무 많습니다.

Fail2ban은 Netfilter/iptables 또는 TCP Wrapper의 hosts.deny 파일을 업데이트하여 설정된 시간 동안 공격자의 IP 주소를 거부하는 데 사용됩니다. 또한 관리자가 설정한 특정 기간 동안 차단된 IP 주소를 차단 해제하는 기능도 있습니다. 그러나 특정 분의 금지 해제는 이러한 악의적인 공격을 막기에 충분합니다.

Fail2Ban 기능
  • 멀티스레드높은 구성 가능.
  • 로그 파일 회전을 지원하고 (sshd, vsftpd, apache 등)와 같은 여러 서비스를 처리할 수 있습니다.
  • 로그 파일을 모니터링하고 알려진 패턴과 알려지지 않은 패턴을 찾습니다.
  • Netfilter/IptablesTCP Wrapper(/etc/hosts.deny) 테이블을 사용하여 공격자의 IP를 차단합니다.
  • 동일한 IP 주소에 대해 특정 패턴이 X회 이상 식별되면 스크립트를 실행합니다.

3. 루트 로그인 비활성화

기본적으로 Linux 시스템은 루트 사용자 자신을 포함하여 모든 사람이 SSH 원격 로그인을 허용하도록 사전 구성되어 있어 모든 사람이 시스템에 직접 로그인하고 루트 액세스 권한을 얻을 수 있습니다. SSH 서버가 루트 로그인을 비활성화하거나 활성화하는 보다 안전한 방법을 허용한다는 사실에도 불구하고 항상 루트 액세스를 비활성화하여 서버를 좀 더 안전하게 유지하는 것이 좋습니다.

단순히 다른 계정 이름과 비밀번호를 차례로 제공하여 SSH 공격을 통해 루트 계정을 무차별 공격하려는 사람들이 너무 많습니다. 시스템 관리자라면 SSH 서버 로그를 확인하여 실패한 로그인 시도 횟수를 확인할 수 있습니다. 로그인 시도가 여러 번 실패하는 주된 이유는 비밀번호가 충분히 취약하기 때문이며 이는 해커/공격자가 시도하는 데 적합합니다.

강력한 비밀번호를 사용하고 있다면 아마도 안전할 것입니다. 그러나 루트 로그인을 비활성화하고 별도의 일반 계정으로 로그인한 다음 sudo 또는 su 를 사용하는 것이 좋습니다. 필요할 때마다 루트 액세스 권한을 얻습니다.

4. SSH 배너 표시

이는 ssh 프로젝트 초기부터 사용할 수 있는 가장 오래된 기능 중 하나이지만, 누구도 사용하는 것을 거의 본 적이 없습니다. 어쨌든 저는 이것이 제가 모든 Linux 서버에 사용해 본 중요하고 매우 유용한 기능이라고 생각합니다.

이는 보안 목적은 아니지만 이 배너의 가장 큰 이점은 UN 승인 액세스에 대한 SSH 경고 메시지 및 승인된 사용자에 대한 환영 메시지를 표시하는 데 사용된다는 것입니다. 비밀번호 프롬프트 전과 사용자가 로그인한 후.

5. SSH 비밀번호 없는 로그인

SSH keygen을 사용한 SSH 비밀번호 없는 로그인파일 전송을 수행하는 두 Linux 서버 간에 신뢰 관계를 설정합니다. 동기화가 훨씬 쉬워졌습니다.

매번 비밀번호를 입력하지 않고 원격 자동 백업, 원격 스크립트 실행, 파일 전송, 원격 스크립트 관리 등을 처리하는 경우 매우 유용합니다.

SSH 서버를 더욱 안전하게 보호하려면 OpenSSH 서버를 보호하고 강화하는 방법에 대한 기사를 읽어보세요.