포트 80 외에 미국 외부의 모든 연결을 차단하면 서버 부하가 높아 집니까?


16

대부분의 서버와 마찬가지로 (우리는) 24/7 서비스를 무력화하려는 사람들이 있습니다. 나는 그들의 IP를 cpHulk 블랙리스트에 올렸지 만, 처음에는 그렇게 멀지 않으면 더 좋을 것 같습니다. 본인과 호스트는 80이 아닌 다른 포트에서 서버에 연결하는 유일한 사람이므로 포트 80을 제외하고 미국 이외의 모든 국가에서 연결을 차단하고 싶습니다. 호스트에 연락하여 설정했지만 서버로드가 매우 높을 것이라고 주저했습니다. CentOS 6.6 및 iptables를 실행하는 32GB RAM을 갖춘 전용 Xeon 1230 서버입니다.

첫째, 이것을하지 않는 이유는 무엇입니까? 둘째, 내 호스트가 올바른 말을합니까? 셋째, 성능에 영향을주지 않고이를 달성 할 수있는 방법이 있습니까?


12
유감스럽게도 호스팅 담당자는 "하지만 명시 적 거부 모두"라는 유지 관리, 보안 향상 및 서버로드를 줄이면서 원하는 방식으로 원하는 작업을 수행 할 수있는 업계 표준 방법이 있습니다. 허용 된 IP 목록을 알려주십시오 "20 분 후에 설정하겠습니다." -그게 내가 앉은 의자만큼 가치가있는 모든 시스템 관리자로부터들을 것으로 예상됩니다.
corsiKa

그들이 학대 할 때 그들을 막으십시오 ... 유지 관리는 이런 식으로 최소화됩니다 ... 전체 테이블로 업데이트해야합니다
Skaperen

답변:


33

모든 범위를 나열하여 모든 IP 범위를 차단하는 특정 규칙을 설정하는 것은 잘못된 접근 방식입니다.

iptables의 기본 규칙을 설정하여 모든 트래픽을 관리 포트로 삭제하십시오. 그런 다음 신뢰할 수있는 IP (사용자 및 호스트)의 액세스 만 허용하는 규칙을 추가하십시오.

기본적으로 모든 것을 차단하고 승인 된 트래픽 만 허용하는 것을 일반적으로 "명시 적 거부"라고하며 최선의 방법으로 간주됩니다. 이 경우 호스트가 염려하는 성능 영향을 피하는 데 도움이됩니다.


아시다시피 방화벽을 통해 몇 개의 IP 만 명시 적으로 허용하여 모든 사람을 암시 적으로 거부 할 때 명시 적으로 거부하는 이유는 무엇입니까?
Ben

그것에 대해 암묵적인 것은 아무것도 없습니다 ...
mr-sk

화이트리스트에 대한 잠재적 인 관심사 중 하나는 원격 액세스입니다. 안정적인 서버 (이 서버와 분리)가 필요하며 IP 범위도 허용해야합니다.
Foo Bar

9

이렇게하려면 각 넷 블록마다 하나씩 수만 개의 방화벽 규칙 을 추가해야합니다 .이 경우 국가마다 1 ~ 1,000 개의 넷 블록이 연결될 수 있습니다.

요청이 들어 오면 모든 단일 규칙 에 대해 확인해야합니다. 수십 또는 수백 개의 규칙에는 시간이 거의 걸리지 않지만 필요한만큼 많은 규칙이 있습니다 (1) 요청이 크게 느려지고 (2) 많은 CPU를 사용합니다.

성능에 큰 영향을주지 않고이를 수행하는 방법은 이미 수행중인 작업을 수행하는 것입니다. 문제가있는 특정 주소 만 차단합니다.


답변 감사합니다, 마이클 미국 기반 IP 만 허용 할 수 있는 방법이 없으므로 규칙 하나만 확인하면됩니까?
Big Iron

2
@BigIron 물론 아닙니다. 미국에는 수만 개의 넷 블록이 있습니다. 당신은 어느 쪽이든 잃습니다.
Michael Hampton

1
@SamuelEdwinWard 아니오, 그렇지 않습니다. 그것들이 모든 곳에 퍼져 있지만, 일반적으로 그러한 차단 목록은 수백 개를 넘지 않습니다.
Michael Hampton

1
둔화가 얼마나 중요한지에 대한 참조가 있습니까? 선형 검색은 모든 규칙 집합이 끔찍하게 비효율적으로 들리지만 최소한 이진 검색은 60,000 개의 규칙 테이블을 검색하면 16 개의 프로브 만 테이블로 가져 가게되므로 트래픽이 웹 서버를 통과하는 것보다 빠를 수 있습니다. 요청을 처리하기 위해 디스크 I / O를 실행해야합니다. iptables에서 큰 규칙 집합에 대한 메트릭을 찾을 수 없습니다.
Johnny

1
@Johnny netfilter (iptables)는 불행히도 규칙을 선형 적으로 처리합니다. serverfault.com/questions/334885/…
Ross Ridge

5

필요한 것은 ipsets라는 도구입니다.

IP 세트는 Linux 커널 내부의 프레임 워크이며 ipset 유틸리티로 관리 할 수 ​​있습니다. 유형에 따라 현재 IP 세트는 IP 주소, (TCP / UDP) 포트 번호 또는 MAC 주소를 가진 IP 주소를 저장하여 세트와 항목을 일치시킬 때 번개 속도를 보장합니다.

여기서 주목해야 할 것은 번개가 빠르다는 것입니다! 이는 수많은 IP 네트워크가 수백 또는 수천 줄의 iptables 규칙 대신 단일 해시로 표현 될 수 있기 때문입니다.

국가를 차단하려면 다음 예를 참조하십시오 .


1

이 방법으로 수행하는지 여부를 무시하는 것이 좋은 생각입니다. Geotable 모듈에서 iptables에 대해 요청한 작업을 수행 할 수 있습니다 .

모듈을 구축 및 설치 한 후 (월간 IP 목록을 업데이트 한 후 ) 다음과 같은 작업을 수행하여 개별 국가를 차단할 수 있습니다.

iptables -I INPUT -m geoip --src-cc CN -j DROP

또는 --src-cc US -j ACCEPT유지하려는 국가를 지정하려면 등을 사용하십시오.


"모두 명시 적 거부"를 사용하고 단일 국가 만 허용하더라도 성능이 저하되지 않습니까?

@ AndréDaniel, 나는 GeoIP 코드 자체를 보지 않았다는 것을 인정하지만, 넷 블록 (예 : trie)을 순차적으로 비교하는 것보다 똑똑하지 않은 구현을 사용한다고 가정하면 그럴 필요는 없습니다.
Scott Dudley

그리고 IPv4에 대해 이야기하고 규칙 당 여분의 512MB를 사용하는 경우 조회 테이블을 사용하는 이론적 구현은 O (1)에서 작업을 수행 할 수 있습니다.
Scott Dudley

1

지리적 위치 블랙리스트 / 화이트리스트를 유지하지 않고 어디에서나 연결하는 기능을 유지하려면 포트 노킹을 구현할 수 있습니다. 대부분의 자동 시도를 중지 시키면서도 어떤 주소에서든 연결할 수 있습니다.

참고 : 포트를 포트 근처에 두어 포트를 열지 마십시오. 그렇지 않으면 순차적 포트 스캔으로 규칙이 활성화됩니다.


0

오프 스택에서 스택에 BGP 가능 라우터가 있거나 2 개가 있고 도대체 무슨 일인지 알고있는 누군가와 일하고 있거나 어떤 일을하고 있는지 알 수 있습니다. 어쩌면 DDoS 예방 공급자가이를 구현하는 데 도움이 될 정도로 차가울 수도 있습니다.

https://ripe68.ripe.net/presentations/176-RIPE68_JSnijders_DDoS_Damage_Control.pdf

http://mailman.nanog.org/pipermail/nanog/2014-February/064381.html

http://www.internetsociety.org/deploy360/blog/2014/07/video-selective-blackholing-at-ripe-68/

이 방법은 경로를 조작 할 때 작동하므로 서버로드 문제를 무시합니다.

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