ssh가있는 개인 서버를 인터넷에 여는 것이 얼마나 위험합니까?


25

제목 연속은“인터넷 보안에 대한 지식이 제한적”일 것입니다.

최근에 개인용 git 저장소로 사용하기 위해 데비안을 실행하는 저가형 컴퓨터로 소형 서버를 설정했습니다. 나는 ssh를 활성화했으며 무차별 대입 공격 등으로 고통받는 신속함에 상당히 놀랐습니다. 그런 다음 이것이 매우 일반적 이며 이러한 공격을 피하기위한 기본 보안 조치에 대해 배웠습니다 (서버 오류에 대한 많은 질문과 복제가 처리됩니다 (예 : 이 항목 또는 이 항목 참조 )).

그러나 지금이 모든 노력이 가치가 있는지 궁금합니다. gitbucket.org, bettercodes.org 등이 제공하는 솔루션과 같은 타사 솔루션에 의존 할 수 있습니다. 인터넷 보안에 대해 배우는 것이 재미의 일부이지만 전문가가되기 위해 헌신하고 올바른 예방 조치를 취할 것이라고 확신 할 수있는 충분한 시간.

이 장난감 프로젝트를 계속 진행할 것인지 결정하기 위해 실제로 그렇게 할 위험이 무엇인지 알고 싶습니다. 예를 들어 내 네트워크에 연결된 다른 컴퓨터도 어느 정도 위협을합니까? 이 컴퓨터 중 일부는 Windows를 실행하는 것보다 지식이 적은 사람들이 사용합니다.

강력한 암호, ssh에 대한 루트 액세스 비활성화, ssh에 대한 비표준 포트 및 암호 로그인 비활성화 및 fail2ban, denyhosts 또는 iptables 규칙 중 하나를 사용하는 것과 같은 기본 지침을 따르면 실제로 문제가 발생할 가능성은 무엇입니까?

달리 말하면, 내가 두려워해야 할 큰 나쁜 늑대가 있습니까? 아니면 대본 아이를 쫓아내는 것입니까?


당신이 $ TECHNOLOGY 보안의 전문가가 될 시간이나 성향이 없다고 언급했을 때, 당신은 머리에 못을 박았다고 생각합니다. 이것이 호스팅 솔루션을 사용하는 주된 이유입니다. 사내 호스팅 호스팅을 평가할 때의 다른 일반적인 주장은 비용입니다. github 등은 무료이기 때문에 git repo를 실행하는 방법에 대한 지식을 얻기 위해 본질적으로 개인 시간을 포기하고 있습니다. 우리는 당신이 당신의 개인적인 시간으로 무엇을 해야하는지 말할 수는 없지만 전문적인 상황에서는 이것이 의미가 없습니다. (캐비티 emptor : 복잡한 상황에는 더 많은 변수가 있습니다).
Chris S

1
자체 서버를 실행하기로 결정한 경우, 실행하는 모든 서비스에 대한 업데이트 및 보안 취약성을 정기적으로 확인하여 할 일 목록에 추가하십시오. 설정만으로는 충분하지 않습니다.

두 단어 : 공개 키, @Stephane 그것을 넣어. keyboard-interactive인증을 비활성화하고 인증 만 사용하십시오 pubkey.
kostix

답변:


14

IMO SSH는 열린 인터넷에서들을 수있는 가장 안전한 것 중 하나입니다. 정말로 염려된다면 비표준 하이 엔드 포트에서 수신 대기하십시오. 상자와 실제 인터넷 사이에 여전히 (장치 수준) 방화벽이 있고 SSH에 포트 전달을 사용하지만 다른 서비스에 대한 예방책입니다. SSH 자체는 꽤 견고합니다.

나는 (타임 워너 케이블에 열) 사람들이 가끔 내 홈 SSH 서버를 공격했다. 실제 영향은 없었습니다.

SSH를보다 안전하게하기 위해 할 수있는 몇 가지 추가 작업은 다음과 같은 가정용 컴퓨터의 동일한 IP 주소에서 반복 시도를 방지하는 것입니다.

MaxStartups 2:30:10

/ etc / ssh / sshd_config에서 로그인에 성공하기 전에 한 줄에 몇 개의 연결을 만들 수 있는지 제한합니다.


인터넷 서비스 제공 업체는 ssh 용 포트를 열 때 내가 본 매개 변수의 방화벽을 제공합니다. 당신이 말하는 것입니까?
Alfred M.

2
일부 ISP는 벙어리 장치, 일부는 내장 방화벽이있는 라우터를 제공 할 수 있습니다. 난 그냥 없다는 것을 말하고 결코 어떤 예방 조치를 취하더라도 인터넷에서 직접 범용 OS를 넣지 위해 좋은 아이디어입니다. 당신과 불쾌한 사이에 일종의 하드웨어 장치 (또는 DD-WRT와 같은 것)가 필요합니다.
TheFiddlerWins

1
다른 답변에서 언급 한대로 공개 키 인증을 설정하고 / etc / ssh / sshd_config에서 ChallengeResponseAuthentication 및 PasswordAuthentication을 끕니다.
랜디 올리 슨

나는 이것이 멍청한 질문이라는 것을 알고 있지만 인터넷에서 (ssh 또는 브라우저를 통해) 서버에 액세스하려면 도메인을 구입해야합니까?
TheRookierLearner

@TheRookierLearner-아니요, ISP가 제공 한 IP 주소를 사용할 수 있습니다. 그러나 홈 네트워크의 구성에 따라 PNAT (대부분의 사람들은 NAT라고 함)로 모든 장치를 통해 공유 할 수 있습니다. 대다수의 사람들과 마찬가지로 인터넷에서 액세스하려는 특정 장치의 "NATed"IP를 알아 내야합니다 (시스템의 ifconfig / ipconfig 만 10.xxx, 172.16). xx 또는 192.168.xx 주소는이 숫자에 관심이있는 것보다 RFC 1918을 참조하십시오.) 그런 다음 라우터에게 "포트 포워드"또는 "DMZ"포트 22를 알려주십시오.
TheFiddlerWins

10

SSH를 사용하여 공개 키 인증 시스템을 설정하는 것은 쉽지 않으며 설정하는 데 약 5 분이 걸립니다 .

모든 SSH 연결을 강제로 사용하면 보안 인프라에 LOT을 투자하지 않고도 원하는만큼 시스템을 탄력적으로 만들 수 있습니다. 솔직히 말해서, 200 개의 계정이없는 한 (그러면 지저분 해지는) 매우 간단하고 효과적이기 때문에이를 사용하지 않으면 대중의 범죄가됩니다.


3
SSH 연결을 설정 한 후 공개 키 인증을 사용하도록하려면 SSH 연결이 / etc / ssh / sshd_config에서 ChallengeResponseAuthentication 및 PasswordAuthentication을 끄십시오. 나는 이것을 한 번 잊어 버렸다. 후회할 일이 많았다.
랜디 올리 슨

8

또한 SSH를 통해 전 세계에 공개 된 개인 git 서버를 운영하고 있으며 귀하와 동일한 무차별 문제가 있으므로 귀하의 상황에 동조 할 수 있습니다.

The FiddlerWins는 이미 공개적으로 액세스 가능한 IP에서 SSH를 열었을 때의 주요 보안 영향을 해결했지만, 무차별 대입 시도에 대한 최상의 도구 IMO는 인증 로그 파일을 모니터링하고 침입 시도를 탐지하며 방화벽 규칙을 방화벽에 추가하는 소프트웨어 인 Fail2Ban입니다 . 머신의 로컬 iptables방화벽. 금지 전에 시도 횟수와 금지 기간을 모두 구성 할 수 있습니다 (기본값은 10 일).


이전 게시물에 대한 나의 의견에서 언급했듯이, 그것은 NAS가 집에서 사용하는 것이며, 두 달 후에 시도 횟수가 크게 줄어 들었습니다.
mveroone

2

이를 처리하는 또 다른 방법은 VPN을 설정하는 것입니다. 홈 서버의 SSH 포트에 직접 연결하는 대신 먼저 VPN에 연결 한 다음 암호화 된 보안 연결을 통해 모든 트래픽을 실행하십시오.

이를 처리하는 이상적인 방법은 VPN 끝점을 통합 한 방화벽을 사용하는 것이지만 VPN 서버 역할을하도록 Windows 컴퓨터를 설정할 수도 있습니다.

예를 들면 다음과 같습니다.

http://www.howtogeek.com/135996/

이제 적절한 보안 구성에는 내부 네트워크와 격리 된 공용 (또는 준공 용) 컴퓨터가 포함됩니다. 웹 서버 또는 공개적으로 사용 가능한 서비스를 호스팅하는 컴퓨터는 집이나 사무실의 보안 네트워크 외부에 있어야합니다. 2 개의 라우터를 사용하여 사용자와 인터넷 사이에 안전 영역 또는 DMZ를 만듭니다.

이렇게하면 서버가 해킹 된 경우 다른 컴퓨터를 공격하기위한 벡터로 사용할 수 없습니다.

따라서 설정은 다음과 같습니다.

DMZ 구성


작은 이미지에 대해 죄송합니다 ... 게시물을 수정하는 방법을 알 수 없습니다.
TomXP411 December

2

대답은 매우 좋으며 두 가지만 권장합니다.

  • 키 인증 시스템에 의한 액세스 만 고려
  • Denyhosts 사용 : 잘못된 인증으로 서버에 액세스하려는 호스트를 금지합니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.