해커로부터 SQL Server를 보호하는 방법


9

문제가 발생하여 처리 방법을 알 수 없습니다. Windows 2008 R2 서버에 SQL Server가 있습니다. 이 SQL Server 2005는 인터넷의 다른 곳에있는 다른 SQL Server에서 DB 구독을받는 데 사용됩니다. 방화벽을 통해 SQL 서버 포트가 열려 있지만 범위에서 다른 SQL Server의 IP를 입력했습니다. 그렇게하면 요청이 다른 SQL Server (방화벽 규칙의 범위에 IP가 나열되어 있음)에서 오는 경우가 아니면 해당 포트를 통한 연결 요청이 SQL Server에 도달하지 않기를 바랍니다. 그러나 로그를 볼 때 수백 개의 "로그인 실패한 사용자 sa"항목이 있습니다 (매 초마다옵니다). 일부 해커가 사용자 sa 암호를 추측하기 위해 무차별 대입을 시도하는 것 같습니다. 그러나 문제는 방화벽 범위에 나열된 IP 주소에서 나오지 않더라도 Windows가 이러한 요청을 SQL Server에 도달하게하는 이유는 무엇입니까? 이 SQL Server를 보호하는 올바른 방법은 무엇입니까? 다른 SQL Server의 IP 이외의 다른 IP는이 SQL Server에 연결할 필요가 없습니다.

편집-추가 정보 :

다른 컴퓨터의 SQL Server 포트에서 텔넷을 실행했습니다. 방화벽 범위에서 구체적으로 언급 된 시스템에서 실행할 경우를 제외하고 Telnet이 실패합니다. 방화벽이 SQL Server 포트를 잘 차단하고있는 것 같습니다. 그런데 왜 SQL Server 로그의 다른 IP 주소에서 사용자 "sa"에 대한 로그인 요청이 실패한 것을 볼 수 있습니까? 해커가 포트 80을 통해 컴퓨터에 들어간 다음 어떻게 든 SQL 서버에 연결하려고 시도 할 수 있습니까? 포트 80과 443은 모두에게 개방되어 있습니다. 다른 모든 포트는 SQL Server 포트를 제외하고 닫힙니다 (하나의 특정 IP에 대해서만 열려 있음). 웹 서버에서 포트 80의 아무것도 실행되지 않아 방문자가 SQL 서버로 연결될 수 있습니다. 실제로 웹 서버에는 index.html (SQL에 연결되지 않은 순수한 HTML) 파일이 하나만 있습니다. 이것은 나중에 사용하기 위해 설정되는 테스트 서버 일뿐입니다. SQL Server의 데이터 만 테스트하십시오.

편집하다:

연결 끊기와 성공 연결을 모두 포함하도록 방화벽 추적을 설정했습니다. 이제 모든 것을 추적하고 있습니다. 그런 다음 중국의 다른 IP 주소에서 실패한 로그인 시도를 볼 수있는 SQL Server 로그로 이동합니다. 그러나 방화벽 로그에는 이러한 IP 주소에 대한 항목이 없습니다. 이것이 어떻게 가능한지? 방화벽을 완전히 우회하여 SQL 서버에 접근 할 수 있습니까? 방화벽 포트가 열려 있다고 가정하면 방화벽 로그에 해당 IP 주소에 대한 항목이 표시되어야합니다. 나는 완전히 잃어 버렸다.


로그온 트리거 사용은 어떻습니까? 또한 SQL Server는 인터넷 (공개)에 노출되어서는 안됩니다. 또한 Windows 방화벽에서 프로그램 규칙을 사용하여 IP 주소 범위를 제한 할 수 있습니다.
Kin Shah

예, 가능하지만 SQL Server에 관한 것은 아닙니다. Windows 방화벽이 수행중인 작업을 수행하지 않는 이유, 즉 요청이 유일하게 허용 된 IP 주소에서 오지 않아서 통과시키지 못하게하는 이유를 찾으려고합니다.

1
예, Windows 방화벽이 잘못 구성된 것 같습니다. 포트 1433을 허용하거나 모든 것을 허용하는 또 다른 일반적인 규칙이 있거나 인터넷 연결 NIC에서 Windows 방화벽이 비활성화되어있을 수 있습니다. 구성을 보지 않으면 말하기가 어렵습니다. 그러나 이것은 Max와 같은 ServerFault에 대한 질문입니다. Windows 2008 R2를 의미합니까? 'RC'는 테스트를위한 시험판 소프트웨어 인 Release Candidate입니다.
James L


1
릴리스 후보 운영 체제 를 실제로 사용하고 있습니까 ?! 먼저 수정하십시오.
Michael Hampton

답변:


12

방화벽이 올바르게 구성되지 않은 것 같습니다. 이것이 첫 번째 단계입니다.

일반적으로 나는 내가 쓴 책을 포주하지는 않지만이 경우에는 예외를 만들 것입니다. 보안 서버 라고 하며 좋은 시작을 제공합니다.


글쎄, 당신의 책은이 질문에 정확히 맞습니다 :-)
mfinni

멋있는! 인터넷 연결 서버에 로컬 / Windows 인증 대신 인증서 사용에 대한 규정 지침이 있습니까? ;-)
Greg Askew

내 편집 내용을 참조하십시오. 방화벽이 제대로 작동하는 것 같습니다. 이 중국 해커가 SQL Server에 접근하기 위해 수행하는 또 다른 트릭입니다.
Allen King

1
누군가 공용 IP 주소에서 SQL 포트에 연결하는 경우 방화벽이 올바르게 구성되지 않은 것입니다. 내부 IP에서 오는 경우 다른 종류의 문제가 있습니다. 자체 SQL은 인증서를 지원하지 않습니다. AD 및 인증서 매핑을 통해이 작업을 수행해야합니다.
mrdenny

실제로 방화벽의 도면으로 돌아갑니다. 방화벽 상황이 해결 될 때까지 SQL 서버를 인터넷에서 가져옵니다. 이렇게하면 전체 범위의 IP 주소를 비교적 쉽게 IP 금지 할 수 있습니다.
Techie Joe

4

간단하게 말했다-당신은하지 않습니다. 나는 방화벽을 사용하지 않을 것이다. SQL 서버는 인터넷 상에있을 권리가 없다. 매우 예외는 거의 없습니다.

복제를 위해 적절한 VPN을 설정하십시오.


조금 혼란 스러워요. DB 서버가 인터넷에 없으면 Web App 백엔드 서버는 어떻게 DB 서버에 도달합니까?
Allen King

내부 네트워크를 통해. 기본 설정. 웹 앱은 두 네트워크 모두에 있습니다.
TomTom

3

방화벽을 올바르게 구성하는 것 외에도 SQL Server를 무차별 대입 공격으로부터 안전하게 지키기위한 몇 가지 일반적인 권장 사항이 있습니다.

  • 'sa'계정을 비활성화하십시오. 정확한 로그인 이름을 알면 공격이 쉬워집니다

    ALTER LOGIN sa DISABLE
    

또 다른 옵션은 'sa'계정의 이름을 덜 분명한 이름으로 바꾸는 것입니다

ALTER LOGIN sa WITH NAME = SimonXZY
  • 혼합 모드 인증 대신 Windows 인증을 사용하십시오. Windows 인증은 Windows 암호 정책을 시행하며 로그온 시도가 연속적으로 실패하는 경우 로그인을 잠급니다.
  • 실패한 로그온 감사. 가장 쉬운 방법은 서버 속성, 보안 탭의 로그인 감사 옵션을 로그인 실패 또는 로그인 실패와 성공 로그인으로 설정하는 것입니다. 이렇게하면 무차별 대입 공격으로부터 보호 할 수는 없지만 공격을 인식하는 데 도움이됩니다.

보다 유용한 권장 사항 : 무차별 대입 공격 또는 사전 공격 방지 : 무차별 대피를 멀리하는 방법

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