CentOS 5.3 시스템에서 iptables 설정이 거의 완료된 것 같습니다. 여기 내 스크립트가 있습니다 …
# Establish a clean slate
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F # Flush all rules
iptables -X # Delete all chains
# Disable routing. Drop packets if they reach the end of the chain.
iptables -P FORWARD DROP
# Drop all packets with a bad state
iptables -A INPUT -m state --state INVALID -j DROP
# Accept any packets that have something to do with ones we've sent on outbound
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Accept any packets coming or going on localhost (this can be very important)
iptables -A INPUT -i lo -j ACCEPT
# Accept ICMP
iptables -A INPUT -p icmp -j ACCEPT
# Allow ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Allow httpd
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# Allow SSL
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Block all other traffic
iptables -A INPUT -j DROP
컨텍스트의 경우이 머신은 Virtual Private Server 웹 앱 호스트입니다.
A의 이전 질문 , 리 B 내가 “좀 더 ICMP를 잠글.”해야한다고 말했다 왜 완전히 차단하지 않습니까? 내가 그렇게하면 어떤 일이 일어날까요 (어떤 나쁜 일이 일어날까요)?
ICMP를 차단할 필요가 없다면 ICMP를 어떻게 더 잠글 수 있습니까?
답변
ICMP는 “traceroute”및 “ping”이상의 방법입니다. 최신 DNS 서버에서 실제로 더 빨리 쿼리 할 다른 시스템을 선택하는 데 도움이되는 DNS 서버 (포트에 연결할 수 없음)를 실행할 때 피드백에 사용됩니다.
ICMP는 또한 위에서 언급 한 바와 같이 경로 MTU 발견에 사용됩니다. OS가 전송하는 TCP 패킷에서 “DF”(조각화하지 않음) 세트 일 가능성이 있습니다. 경로를 따라 무언가가 해당 크기의 패킷을 처리하지 못하는 경우 ICMP “조각 필요”패킷을 다시받을 것으로 예상됩니다. 모든 ICMP를 차단하면 시스템은 기본적으로 PMTU “블랙홀”을 감지하기 위해 타임 아웃을 사용하고 올바르게 최적화되지 않는 다른 폴백 메커니즘을 사용해야합니다.
또한 ICMP를 차단하려는 이유를 스스로에게 문의해야합니다. 여기서 무엇을 방지하려고합니까? ICMP가 어떤 용도로 사용되는지 이해하지 못하는 것이 분명합니다. 나는 당신이 완전히 이해하지 못하는 것을 막는 데 매우 신중합니다.
이것에 대해 배우기가 더 어려워지기 위해 많은 일반적인 방화벽 서적은 “블록 ICMP”라고 말합니다. 저자가 RFC를 읽지 않았거나 그러한 조언과 관련된 문제를 해결해야한다는 것은 분명합니다. 모든 ICMP를 차단하는 것은 좋지 않습니다.
이제 속도 제한으로 인해 상처를 입을 수도 있습니다. 컴퓨터가 사용 중이거나 사용 중이 아닌 경우에도 상당한 양의 ICMP 트래픽을 얻을 수 있습니다. 내 웹 서버는 아마도 분당 약 10-100 ICMP 패킷을 얻습니다. 대부분 PMTU 검색입니다. 누군가가 어떤 유형의 ICMP 패킷으로 서버를 공격하기로 선택하더라도 실제로 그렇게 큰 문제는 아닙니다. 만약 당신의 컴퓨터가 하나의 TCP 연결 (ssh, http, mail 등)을 허용한다면 ICMP가 잘못 이해 한 것보다 더 큰 공격 경로 일 것입니다.
답변
ICMP는 광범위한 진단 (예 : 핑, 추적 경로) 및 네트워크 제어 (예 : PMTU 검색) 기능에 사용됩니다. ICMP를 무차별 적으로 차단하면 다른 사람들이 모든 종류의 가슴 앓이를 유발할 수 있습니다. 자신이하는 일을 정확히 알지 못하면 혼자 내버려 두어야합니다.
답변
나는 사람들이 왜 ICMP를 클럭하는지 이해하지 못했습니다. 호스트가 쉽게 충분하고 DOS로 사용되지 않을 정도로 제한되어 있다면 호스트를 차단해야 할 강력한 이유를 들어 본 적이 없습니다. (누군가가 이유를 생각 해낼 수 있다면 게시하십시오)
답변
DOS 공격으로 사용할 수없는 방식으로 제한 ICMP를 시도 할 수 있습니다. 그러나 icmp를 사용하는 ping, mtr (Windows와 동등한 것을 잊어 버림), traceroute (tracert)와 같은 문제 해결 도구가 너무 많습니다. 그것들을 완전히 떨어 뜨리는 것은 어리석은 일입니다. 포트에서 텔넷을 사용할 수 없어도 인스턴스가 작동하는지 확인하는 좋은 방법입니다.
--limit 10/second
당신의 ICMP 규칙에 컴퓨터가 실제로 얼마나 많은 양을 처리 할 수 있는지에 대한 적절한 제한 일 것입니다.
답변
다음은 안보 이론이 제안하는 정신의 대안적인 견해입니다. 다른 포스터는 보안 관행이 종종 지나치게 열성적이지만 그 중 상당 부분에는 좋은 근거가 있습니다.
보안 이론은 일반적으로 필요한 것만 활성화한다는 것입니다. 다른 것들 (예 : 핑 응답)은 공격자가 시스템을 조사하기 위해 사용되거나 아직 발견되지 않은 취약점에 대한 공격 경로로 사용될 수 있습니다.
ICMP 메시지 유형을 살펴보면 시스템이 정상적으로 작동하려면 무엇이 필요합니까?
- 에코 응답 (ping)-그리 많지 않음
- 연결할 수없는 목적지-여기에 유용한 정보가 많이 있습니다. 이것을 비활성화하면 일부 클라이언트의 서버에 대한 액세스가 중단됩니다.
- source quench-1995 년부터 사용되지 않으며 2005 년 이후 (최근) 호스트 구현에서 제거되었습니다. tools.ietf.org/html/rfc6633#section-1.
- 리디렉션-거의 확실하지 않음
- 라우터 알림 및 요청-경로를 정적으로 구성하면 DoS에 사용될 수 있습니다. 필요한 것을 알지 못하면 차단하고 필요할 경우 알려진 라우터의 정보 만 허용하도록 규칙을 코딩하십시오.
- ttl이 초과 됨-추적 경로뿐만 아니라 트래픽이 목적지로 전달되지 않음을 알려줍니다.
…등등. 이것을 정말로 이해하고 싶다면 다양한 ICMP 유형과 그 용도에 대해 알아보십시오. 위키 피 디아 기사는 좋은 출발점이 될 것입니다.
실제로, 가장 추악한 것은 리디렉션입니다. 빠르고 유용한 것을하고 싶다면 차단하고 나머지는 허용하십시오.
IPtables 연결 추적을 통해 활성 연결에 대한 적절한 반환 ICMP 패킷을 허용 할 것이라고 덧붙입니다. 따라서 conntrack을 실행중인 경우 규칙 패킷에서 ICMP를 차단하기 전에 관련 패킷을 수락하는 한 대부분의 ICMP 인바운드를 차단할 수 있어야합니다.
답변
네트워크 연결 문제를 해결하는 데 유용한 진단 도구입니다.
또한 네트워크보다 작은 MTU를 사용하는 인터넷의 다른 곳에서도 연결을 사용할 수 있습니다. 너무 크고 조각화 할 수없는 패킷을 보내려고하면 장치가 패킷을 삭제하고 ICMP 조각화가 필요한 패킷을 보낸 사람에게 다시 보냅니다. 모든 ICMP 패킷을 삭제하면 패킷이 손실되고 네트워크에서 이상한 일이 발생합니다.
실제 질문은 “왜 ICMP를 차단 하는가?”입니다. 무엇을 얻습니까? 경계와 가치있는 자산 앞에 좋은 필터링 규칙이 있습니다.
답변
핑은 훌륭한 진단 도구입니다. 언젠가는 그 도구를 원했을 것입니다. 나는 이것을 사용하고있다 :
-A icmp_packets -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A icmp_packets -p icmp -m icmp --icmp-type 11 -j ACCEPT
당신은 또한 그것을 조절하고 싶을 수도 있습니다.