방화벽에는 두 가지 유형의 정책 동작이 있습니다: DROP과 REJECT이며, 그 차이점은 다음과 같습니다: 1. DROP 액션은 피드백 없이 데이터를 직접 폐기하는 것입니다. 클라이언트가 타임아웃을 기다리면 방화벽에 의해 쉽게 차단될 수 있습니다. 2. REJECT 동작은 reject(종료된) 패킷(TCP FIN 또는 UDP-ICMP-PORT-UNREACH)을 더 정중하게 반환하고, 상대방의 연결 동작을 명시적으로 거부합니다. 연결이 즉시 끊기고, 클라이언트는 접근한 호스트가 존재하지 않는다고 생각합니다. REJECT는 IPTABLES에 ICMP 포트-접근 불가, ICMP 에코-응답, TCP-리셋과 같은 반환 매개변수를 가지고 있습니다(이 패킷은 상대방에게 연결을 종료하도록 요청합니다).
DROP과 REJECT 중 어느 쪽을 사용하는 것이 적절한지는 확실하지 않으며, 두 가지 모두 실제로 적용될 수 있습니다. REJECT는 더 순응적인 유형입니다 그리고 통제된 네트워크 환경에서 네트워크/방화벽 문제를 진단하고 디버깅하기가 더 용이합니다; 그리고 DROP은 방화벽 보안이 높아지고 효율성이 약간 향상되었으나, 이는 DROP의 비표준화(TCP 연결 명세에 잘 부합하지 않음) 처리 때문일 수 있습니다 예상치 못한 또는 진단하기 어려운 네트워크를 일으킬 수 있습니다. DROP이 연결을 일방적으로 끊긴 해도 사무실로 돌아오지 않기 때문입니다 따라서 연결 클라이언트는 TCP 세션이 타임아웃될 때까지 수동 기다렸다가 연결이 성공했는지 확인하여 기업의 내부 네트워크를 발전시킵니다 일부 클라이언트 프로그램이나 애플리케이션은 차단하면 IDENT 프로토콜 지원(TCP 포트 113, RFC 1413)을 요구합니다 방화벽이 예고 없이 DROP 규칙을 적용하면 모든 유사한 연결이 실패하고, 타임아웃 때문인지 판단하기 어려워집니다 문제는 방화벽이나 네트워크 장치/회선 장애 때문입니다.
개인적인 경험으로, 내부 기업(또는 부분적으로 신뢰받는 네트워크)에 방화벽을 배포할 때는 좀 더 신사적인 REJECT를 사용하는 것이 더 좋습니다 규칙을 자주 변경하거나 디버깅해야 하는 네트워크에도 마찬가지입니다; 위험한 인터넷/외곽망을 위한 방화벽의 경우, 더 잔인하지만 안전한 DROP 방식을 사용해야 하며, 이는 해킹 공격의 진행 속도(그리고 적어도 DROP)를 어느 정도 늦출 수 있습니다 TCP-Connect 포트 스캔을 더 오래 만들 수 있습니다). |