문제

나는 다양한 웹 기술을 호스팅하기 위해 저렴한 Linux 상자를 웹 서버로 설정하고 싶습니다(PHP 및 Java EE가 떠오르지만 앞으로는 Ruby 또는 Python도 실험하고 싶습니다).

나는 Java EE 애플리케이션을 제공하기 위해 Linux에서 실행되도록 Tomcat을 설정하는 데 상당히 능숙하지만, 작업하는 동안 사용할 수 있는 몇 가지 도구를 만들 수 있도록 이 서버를 열 수 있기를 원합니다. 사무실.Java EE 사이트 구성에 대한 모든 경험은 모두 외부 사용자를 위한 페이지 보안에 집중하지 말라는 인트라넷 애플리케이션에 대한 것이었습니다.

외부 트래픽에 개방할 수 있을 만큼 안전한 방법으로 개인 Linux 웹 서버를 설정하는 것에 대해 어떤 조언을 해주시나요?

도움이 되었습니까?

해결책

이 문서에는 상황을 잠그는 가장 좋은 방법이 나와 있습니다.

http://www.petefreitag.com/item/505.cfm

일부 하이라이트:

  • 누구도 디렉토리를 탐색할 수 없도록 하세요.
  • 루트에만 모든 것에 대한 쓰기 권한이 있고 루트에만 특정 구성 파일에 대한 읽기 권한이 있는지 확인하십시오.
  • mod_security 실행

이 기사는 또한 이 책에서 몇 가지 지침을 취합니다.

아파치 보안 (오라일리 프레스)

배포판에 관해서는 Debain과 Ubuntu를 실행했지만 이는 여러분이 얼마나 하고 싶은지에 달려 있습니다.나는 X 없이 데비안을 실행했고, 필요할 때마다 SSH로 접속했습니다.이는 오버헤드를 줄이는 간단한 방법입니다.또는 Ubuntu에는 Apache/MySQL/PHP를 쉽게 제어할 수 있는 멋진 GUI 기능이 있습니다.

다른 팁

가능한 한 보안 모범 사례를 따르는 것이 중요하지만, 일을 지나치게 어렵게 만들거나 최신 악용을 따라잡는 것에 대해 걱정하느라 잠을 설치고 싶지는 않습니다.내 경험에 따르면, 정신을 차리면서도 인터넷에 문제가 생길 만큼 개인 서버를 안전하게 유지하는 데 도움이 되는 두 가지 핵심 사항이 있습니다.

1) 모호함을 통한 보안

말할 필요도 없이, '현실 세계'에서 이것에 의존하는 것은 나쁜 생각이며 즐겁지 않습니다.하지만 현실 세계에서는 악당들도 거기에 무엇이 있는지, 얻을 수 있는 전리품이 있다는 것을 알고 있기 때문입니다.

개인 서버에서 겪게 될 '공격'의 대부분은 이미 손상된 시스템에서 취약한 것으로 알려진 제품의 기본 설치를 찾는 자동 검색입니다.서버가 기본 포트나 기본 위치에서 매력적인 것을 제공하지 않으면 자동화된 공격자가 계속해서 움직일 것입니다.따라서 SSH 서버를 실행하려는 경우 이를 비표준 포트(>1024)에 설정하면 결코 발견되지 않을 가능성이 높습니다.웹 서버에 이 기술을 적용할 수 있다면 이 기술도 잘 알려지지 않은 포트로 옮기십시오.

2) 패키지 관리

꼭 필요한 경우가 아니면 소스에서 직접 Apache나 sshd를 컴파일하고 설치하지 마세요.그렇게 한다면 최신 보안 패치를 최신 상태로 유지할 책임이 있습니다.Debian이나 Ubuntu와 같은 Linux 배포판의 훌륭한 패키지 관리자에게 작업을 맡기세요.배포판의 미리 컴파일된 패키지에서 설치하고 최신 상태를 유지하는 것은 가끔씩 발행하는 문제가 됩니다. apt-get 업데이트 && apt-get -u dist-upgrade 명령을 사용하거나 Ubuntu가 제공하는 멋진 GUI 도구를 사용합니다.

반드시 고려해야 할 한 가지는 어떤 포트가 전 세계에 열려 있는지입니다.저는 개인적으로 SSH의 경우 포트 22를 열고 ntpd의 경우 포트 123을 엽니다.하지만 포트 80(http)이나 ftp를 열면 최소한 자신이 세상에 무엇을 제공하고 있고 누가 그걸로 무엇을 할 수 있는지 알아야 합니다.나는 ftp에 대해 많이 알지 못하지만 Google에서 검색하면 수백만 개의 훌륭한 Apache 튜토리얼이 있습니다.

Bit-Tech.Net은 Linux를 사용하여 홈 서버를 설정하는 방법에 대한 몇 가지 기사를 실행했습니다.링크는 다음과 같습니다.

제1조
제2조

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

@svrist가 EC2를 언급했습니다.EC2는 원격으로 포트를 열고 닫는 API를 제공합니다.이렇게 하면 상자를 계속 실행할 수 있습니다.커피숍이나 고객 사무실에서 데모를 제공해야 하는 경우 IP를 가져와 ACL에 추가할 수 있습니다.

이에 대해 목소리를 낮추고(예: 홈 연결에서 영광스러운 웹 루트를 호스팅하는 경우 홈 서버를 뒤쫓는 사람이 거의 없음) 구성에 대해 지혜롭게 생각한다면(예: 루트 사용을 피하는 경우) 안전하고 안전합니다. 모든 경우에 소프트웨어를 최신 상태로 유지하십시오).

참고로 이 스레드는 잠재적으로 불타오르는 수준으로 줄어들겠지만 개인 서버에 대한 제 제안은 Ubuntu(여기서 우분투 서버를 받으세요);내 경험상 포럼에 질문을 하면 답변을 얻는 것이 가장 빠릅니다(물론 활용에 대해 뭐라고 말해야 할지 잘 모르겠습니다).

내 홈 서버 보안 BTW는 고정 IP(DynDNS에서 실행)가 없기 때문에 약간의 이점이 있습니다.

행운을 빌어요!

/mp

SSH 포트를 공개적으로 열 때는 주의하세요.그렇다면 루트 로그인을 비활성화하십시오(언제든지 가능). su 또는 sudo 일단 들어가면) 합리적인 범위 내에서 보다 공격적인 인증 방법을 고려하십시오.어느 주말에 DynDNS 홈 IP 서버의 SSH 서버를 공격한 후 내 서버 로그에서 대규모 사전 공격을 목격했습니다.

즉, 직장에서든 밖에서든 집에 갈 수 있다는 것은 정말 멋진 일입니다...그리고 동일한 포트를 통해 SFTP를 사용할 수 있다는 사실까지 더하면 SFTP가 없는 삶은 상상할 수 없습니다.=)

당신은 고려할 수 있습니다 Amazon의 EC2 인스턴스.이렇게 하면 프로덕션을 방해하지 않고 "물건"을 쉽게 테스트할 수 있습니다.그리고 사용한 공간, 시간, 대역폭에 대해서만 비용을 지불하세요.

집에서 Linux 서버를 실행하는 경우 다음을 설치하십시오. 오섹 정말 잘 작동하는 멋지고 가벼운 IDS를 위한 것입니다.

[편집하다]

참고로, ISP의 허용 가능한 사용 정책을 위반하지 않도록 하세요. 그리고 표준 포트에서 들어오는 연결을 허용합니다.제가 일했던 ISP는 비즈니스 클래스 계정을 사용하지 않는 한 포트 80/25를 통해 서버를 실행하면 연결이 끊어질 수 있다는 조항을 작성했습니다.우리는 해당 포트를 적극적으로 차단하지는 않았지만(문제가 발생하지 않는 한 상관하지 않았습니다) 일부 ISP는 포트 80 또는 25를 통한 트래픽을 허용하지 않으므로 대체 포트를 사용해야 합니다.

이렇게 하려면 약간의 돈을 쓰고 최소한 별도의 DMZ 포트가 있는 전용 라우터/방화벽을 구입하십시오.웹 서버가 손상되더라도 내부 네트워크도 즉시 취약해지지 않도록 서버에서 내부 네트워크를 방화벽으로 차단하는 것이 좋습니다.

이 작업을 수행하는 데는 잘 작동하는 방법이 많이 있습니다.나는 일반적으로 .htaccess 파일을 사용합니다.빠른 설정 및 보안 충분한 .아마도 최선의 선택은 아니지만 그것은 나에게 효과적입니다.나는 그 뒤에 내 신용 카드 번호를 넣지 않을 것이지만 그 외에는 별로 신경 쓰지 않습니다.

와, 외부 트래픽에 대해 무엇이든 열기 시작하자마자 웜 캔을 여는 셈입니다.희생양과 같은 실험용 서버를 고려하는 것은 네트워크와 리소스를 사용하여 나쁜 짓을 하려는 사람들이 쉽게 선택할 수도 있다는 점을 명심하십시오.

외부에서 사용 가능한 서버에 대한 전체적인 접근 방식은 매우 보수적이고 철저해야 합니다.이는 방화벽 정책과 같은 간단한 것부터 시작하여 기본 OS(패치 유지, 보안을 위한 구성 등)를 포함하고 사용하게 될 모든 스택의 모든 계층을 포함합니다.유감스럽게도 간단한 대답이나 방법은 없습니다.

실험하고 싶다면 서버를 비공개로 유지하고 원격으로 작업해야 하는 경우 VPN을 사용하는 것이 훨씬 더 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top