무차별 대항 SSH 서버 보안


14

데비안을 실행하는 오래된 SVN 서버, 오래된 Dell Optiplex가 있습니다. SVN 서버가 조금 있기 때문에 서버에 대한 요구가 많지 않지만 보안을 원합니다.

방금 서버를 새롭고 더 나은 optiplex로 갱신하고 이전 서버를 조금 살펴보기 시작했습니다. 문제가 생겼을 때 다운했습니다. 로그를 확인할 때 무차별 대입 시도로 가득 차서 누군가 내 컴퓨터에 들어가는 데 성공했습니다. 이 사람은 두 개의 dirs "root"및 "swap1"또는 "knarkgosse"라는 추가 볼륨을 만들었습니다. 실제로 왜, 무엇을하는지 모르지만 다시는 이런 일이 발생하지 않도록해야합니다. 암호를 몇 개월 정도 변경했기 때문에 조금 이상하다고 생각합니다. 암호는 항상 임의의 문자와 숫자로 구성되어 있습니다.

루트 로그인을 막고 sudoers를 사용하고 SSH 포트를 변경할 수 있다는 것을 알고 있습니다.하지만 더 무엇을 할 수 있습니까?

그래서 몇 가지 질문이 있습니다.

  1. X 번의 잘못된 시도 후 5 분 동안 로그인을 방지하는 방법 아니면 각 잘못된 시도 후 느린 시도?

  2. 서버가 연결할 수있는 중앙 블랙리스트가 있습니까? "안전하지 않은"IP 주소를 추적하고 액세스 권한을 부여해서는 안되는 블랙리스트?

  3. 서버에 안전을 적용하기 위해 무엇을 더 할 수 있습니까?

앞서 말했듯이 Apache (www-data user problem?), svn, mysql, php, phpmyadmin, hudson과 함께 Debian 5를 실행하고 있습니다. 포트 전달이 80, 443, 8080, 8180, 23 및 22 인 홈 네트워크에 있습니다.


답변:


17

Fail2banPort Knocking 은 대부분의 요구를 해결해야합니다.

SSH 포트를 변경하고 키 기반 인증 만 허용하는 것이 좋습니다.

추가 보안 조치를 추가하면 수익이 감소하는 시점에 도달 할 수 있지만 "충분한 보안"시기를 결정하는 것은 사용자의 몫입니다.

루트 로그인을 허용하지 않는 것이 좋습니다.


2
denyhosts를 사용하지만 fail2ban afaik과 거의 동일합니다.
pfyon

Fail2Ban 소리를 잘 알고 ... 나는 그것에 대해 살펴볼 것입니다.
Paul Peelen

1
+1 Fail2Ban, 5 회 실패 시도 = 5 분 IP 차단. 엄청나게 쉬운 암호가 없으면 분당 1 개의 암호로 무차별 적으로 암호를 적용 할 수 없습니다.
Chris S

@Chris S Yea, 그건 내가 가장 좋아하는 것 중 하나입니다. 스크립트 키디는 보통 타임 아웃을 처리하는 방법을 모른다 ...
gWaldo

1
@gWaldo, 확인 편견 은 당신이 이미 옳다고 생각하는 것을 말하기 위해 읽은 것을 다시 쓰는 데 먼 길을갑니다.
Chris S

7

보안 암호 및 키 인증을 대체 할 수는 없습니다. 즉, Fail2Ban 은 너무 많은 인증을 시도하는 사용자의 IP를 차단 하는 훌륭한 도구입니다. 또한 대부분의 배포판에 사전 빌드 된 패키지로 제공됩니다. 실수로 자신을 금지시킬 수 있으므로 복구 허용 된 IP 또는 콘솔 액세스가 쉬운 지 확인하십시오 ...

Fail2Ban에는 요청한 모든 것을 구성하는 방법에 대한 몇 가지 좋은 예가 있지만 잘못된 주소의 범용 저장소는 없습니다. 다른 IP (dhcp 갱신 / 봇넷 공격 등)를 쉽게 얻을 수 있기 때문에 그러한 저장소가 있다고 생각하지 않습니다. 또한 일반적인 '관리자'유형 사용자 이름 (root / admin / administrator / sysop / etc ..)을 사용하여 ssh를 통한 로그인을 사용하지 않도록 설정합니다.


좋은 대답입니다. 나는 당신에게 대담한 텍스트에 전적으로 동의합니다 ... 따라서 문자는 숫자 암호와 결합됩니다. 이 서버에는 키 인증이 너무 많지만 좋은 생각입니다. 나는 지금 Fail2ban을 설치했고, 그것을 재구성 해야하는 것처럼 보이지 않으며이 작은 svn 서버가 집에 있기 때문에 쉽게 접근 할 수 있습니다 (내 옷장에서 떨어져 있음을 고려할 때 = S) Thnx 당신의 조언을 위해!
Paul Peelen

1
Spamhaus는 알려진 스패머 네트워크 목록을 게시합니다. 봇넷은 다루지 않으며 "전문적인"스패머로 알려져 있습니다. spamhaus.org/drop
Chris S


4

여기에는 여러 가지 좋은 제안이 있습니다. 나는 세 가지가 이것을 비교적 안전하게 만들어야한다고 정중하게 제안합니다.

  1. 임의의 높은 포트에서 sshd를 실행하십시오. 봇은 일반적으로 포트 22와 포트 2222와 유사합니다.
  2. sshd 구성에서 비밀번호 기반 인증을 비활성화하십시오.

사용 PAM no

  1. 사전 공유 SSH 키 쌍을 통해서만이 사이트에서 인증하십시오. PKI 기반 인증을 시작하려면 ssh-keygen을 사용하십시오.

도움이 되었기를 바랍니다.


2
스트레스가 매우 낮은 솔루션의 경우 비표준 포트에서 ssh를 두 번째로 실행합니다. 내가 본 것에서 이것은 ssh 서버에 대한 무차별 강제 연결 시도를 몇 배나 줄입니다. 일주일 동안 내 서버 중 하나 (표준 포트에서 ssh를 실행) 중 134 개의 잘못된 연결 시도가 발생했습니다. 같은 기간에 동일한 서버의 가상 인스턴스 (비표준 포트에서 ssh 실행)는 0이었습니다.
DF

1

나는 항상 폭력, 포트 캔 및 기타 옵션을 시도하는 사람들의 IP 주소를 차단 할 수있는 CSF / LFD 의 열렬한 팬이었습니다 . 기본적으로 IP 테이블을위한 거대한 perl-wrapper이지만 구성 파일을 읽기가 어렵지 않고 설명서가 나쁘지 않습니다.


포트 스캔이 서버에서 수행 될 때마다 (예 : 이메일로) 경보를받을 수있는 방법이 있는지 알고 있습니까?
Paul Peelen

1

sshguard를 살펴볼 수도 있습니다. 나는 그것을 사용하지 않았지만 좋은 소식을 들었습니다.

출처 :
http://isc.sans.edu/diary.html?storyid=9370

http://www.sshguard.net/

http://www.sshguard.net/docs/faqs/

"Sshguard는 로깅 활동에서 서버를 모니터링합니다. 로그에서 누군가가 나쁜 일을하고 있다는 사실을 알리면 sshguard는 그 / 그녀의 비트를 조금씩 차단하여 반응합니다. 굳건하고 굳건하다 "


이거 깔끔하게 들리네. 내가 살펴볼 게. thnx
Paul Peelen

1

SSH 서버가 기본 포트의 인터넷에 연결되어 있으며 문제가 발생하지 않았습니다.

  • SSH 용 tcp_wrappers (즉, hosts.allow hosts.deny). 컴파일 된 지원이없는 SSH가 있다고 생각하지 않습니다.
  • iptables를 tcp_wrappers와 함께 사용하면 임의의 포트 스캔 / 브 루트 포스 시도의 약 99 %가 제거되었습니다. 유일한 문제는 IP / IP 범위를 허용하기 위해 어디에서 연결해야하는지 알아야한다는 것입니다. 내 지역 주변의 인기있는 공급자가 IP 범위를 확인하고 그 범위를 허용하도록 검색했습니다. 대부분의 스캔은 멀리 떨어진 땅에서 온 것 같습니다.
  • 암호없이 PermitRootLogin (예 : 암호로 암호화 된 RSA / DSA 키 쌍만)은 자동화 된 작업에 훌륭하게 작동합니다. 상호 작용을 위해 로그인 할 때 sudo 액세스로 구성된 내 계정 (일반)을 분명히 사용합니다.
  • Sudoers
  • 지속적인 업데이트. 모든 보안 / 중요 업데이트로이 상자를 자주 업데이트합니다.
  • 비밀번호 / 암호 변경
  • chkrootkit을 몇 번이고 실행하여 문제가 있는지 확인하십시오. (이 기능을 수행하는 몇 가지가 있습니다)

그것이 도움이되기를 바랍니다!


1

fail2ban을 사용하면 응용 프로그램을 추가해야하며 응용 프로그램 계층에서 작동합니다.

iptables를 사용하면 네트워크 계층에서 작동하기 때문에 더 효율적이며 추가 응용 프로그램을 설치할 필요가 없습니다.

iptables 최근 모듈 http://www.snowman.net/projects/ipt_recent/를 사용 하십시오

iptables -N SSHSCAN
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSHSCAN
iptables -A SSHSCAN -m recent --set --name SSH
iptables -A SSHSCAN -m recent --update --seconds 300 --hitcount 3 --name SSH -j LOG --log-level info --log-prefix "SSH SCAN blocked: "
iptables -A SSHSCAN -m recent --update --seconds 300 --hitcount 3 --name SSH -j DROP
iptables -A SSHSCAN -j ACCEPT

0

sshd가 22 이외의 포트에서 수신 대기하는 옵션은 다른 보안 조치와 함께 사용하는 것입니다. 직접 시도한 것은 아니지만 봇에 의한 순수한 무차별 대입 공격의 수를 줄이는 것으로 들었습니다.

이것이 실제 보안은 아니며 자동화 된 무차별 대입 공격의 수를 줄인다는 점을 강조해야합니다. 내가 생각하는 모든 포트를 확인하는 데 너무 많은 노력이 필요합니다.


포트 23에 연결했습니다. 주로 포트 22에 다른 서버가 있었기 때문에 (지금 중단했습니다).
Paul Peelen

2
23은 예약 된 포트입니다 telnet. 60k 이상과 같이 예약되지 않은 포트를 사용하는 것이 좋습니다. iana.org/assignments/port-numbers 는 예약 된 포트 번호 목록을 제공합니다.
ℝaphink

팁 고마워. 이 컴퓨터에서 tenet을 사용하지 않지만 포트는 변경됩니다. 나는 전문 서버에서 사용하는 52000-59000 사이의 포트 범위를 가지고 있으며 이것에 대해 동일한 것을 사용하려고합니다.
Paul Peelen

1
@ 폴 : I don't use te[l]net on this machine-그렇게 유지하십시오. 여러 가지 이유로 텔넷 클라이언트 를 원하지만 ssh를 사용할 수있을 때 텔넷 서버를 실행할 이유가 없습니다. 일반 텍스트 암호가 잘못되었습니다 .
mlp

0

여기서 언급되지 않았으며 실제로 방화벽을 통한 액세스를 제한하는 것이 있습니다. 모든 상황에 적합한 것은 아니지만 고정 IP를 사용하여 일관된 위치에서 호스트에 연결하는 경우 해당 IP를 제외하고 SSH를 완전히 차단할 수 있습니다. 이렇게하면 침입자가 침입 할 수 없습니다. 앞서 언급했듯이, 특히 IP가 동적이고 자주 변경되는 경우 모든 상황에 적합한 것은 아닙니다.


일반적으로 귀하의 솔루션에 동의합니다. 나는 이것이 내가 일하는 회사의 표준이라고 믿는다. 그러나 나는 이것이 나를위한 것이라고 생각하지 않는다. 문제는 주로 가정용 (로컬 네트워크), 직장 (정적 IP) 또는 이동 중 (3G 모뎀 / iPhone 사용)에서 맥북 프로를 사용한다는 것입니다. 너무 많은 과잉 VPN이 없다면 마지막 문제는 추측합니다. 대답 해 주셔서 감사합니다.
Paul Peelen

0

DenyHosts, http://denyhosts.sourceforge.net/ )는 제가 운이 좋았던 좋은 프로젝트입니다. 거부 호스트를 동기화하도록 설정하면 새 IP를 다운로드하여 거부 호스트를 사용하여 다른 시스템을 무력화해야하는 금지 목록에 추가합니다. 또한 한동안 무력을 시도하지 않은 IP도 만료됩니다.

공개 키 인증을 사용하고 비밀번호 로깅을 사용하지 않는 것이 아마도 최선의 방법 일 것입니다. 무차별 대입 공격을 물 리치십시오.


0

나에게 효과적인 것 :

  1. 다른 사람들이 말했듯이 루트 로그인 없음, sshd_config에서 PasswordAuthentication이 no (키만있는 로그인)로 설정되었습니다.

  2. 한두 명의 사용자 만 ssh를 통해 로그인 할 수 있으며 일반적인 무차별 도구 사용자 이름 목록에없는 유사 이름 (예 : "admin"또는 "apache"또는 "web"또는 " 남자")

  3. 제한적인 방화벽 규칙 (기본적으로 모든 서비스는 차단되지만 서비스 포트와 ssh는 차단됨) 나는 심지어 더 조잡한 스캔을 피하기 위해 핑을 제한하기도한다 (많은 파트너의 샤 그린에게).

  4. 내 웹 호스트에서 특정 IP 주소에 대한 액세스를 제한하지만 옵션이 아닌 것 같습니다. 확실히 모든 호스트에서 직접 할 수는 없습니다. "포트 노킹"을보고 싶을 수도 있습니다.

  5. 그리고 내가 가장 좋아하는 것 : OSSEC의 능동형 응답 모듈은 수많은 무차별 대입 조건을 차단하고 다른 오류에 대해서도 경고합니다. y 시간 내에 x 개의 유효하지 않은 로그인을 감지 한 다음 특정 시간 동안 (iptables firewall-drop 명령을 통해) 차단합니다. 나는 재미를 위해 지금 약 12 ​​시간 동안 차단하고 있습니다. :)

내가 잘못한 것을 너무 많이 차단하지 않도록하기 위해 한 가지 방법은 /etc/ossec.conf에서 활성 응답을 높은 수준으로 설정하고 (기본 구성에는 존재하지 않음) sshd_rules.xml을 통해 차단하려는 규칙을 해당 수준으로 설정하고 필요에 따라 블록 대 경고의 임계 값을 수정하십시오.

Apache를 실행하는 경우 아파치 규칙을 위반하는 항목도 차단할 수 있습니다. 나는 단지 NAT 문제 때문에 이것들을 막지 않고, 전체 대학이나 무언가를 막는 것에 대해 생각하고 싶습니다. :) 또한 로그 파일의 특정 조건을 차단하기위한 사용자 지정 규칙을 작성할 수있어 매우 유용합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.