답변:
넷 필터 방화벽 (iptables)의 규칙은 순차적으로 점검되며 패킷의 운명 (ACCEPT, DROP, REJECT 등)은 첫 번째 일치 기준으로 결정됩니다.
방화벽을 상태로 가득 채우고 첫 번째 규칙을 일반적으로 만들면 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
해당 단일 규칙 만 통과 한 후 서버에 대한 대부분의 합법적 인 트래픽이 허용됩니다. 해당 트래픽은 다른 규칙을 통과 할 필요가 없습니다.
룰베이스의 크기에 따라 방화벽 성능에 상당한 차이가있을 수 있습니다.
방화벽에서 이제 유효성을 검사해야하는 유일한 트래픽은 명시 적으로 새로운 연결입니다.
즉, 공용 웹 서버의 방화벽과 워크 스테이션에서 소수의 웹 마스터에 대한 액세스를 비교합니다.
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -m iprange --src-range 10.9.8.7-10.9.8.10 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
합법적 인 패킷의 약 99 %가 설정된 연결에 속하며 첫 번째 규칙에만 적용됩니다. 해당 규칙과 일치하지 않는 패킷 중 대부분은 웹 사이트에 대한 새로운 연결이어야하며 멀티 포트 모듈은 단일 규칙에서 HTTP 또는 HTTPS에 대한 액세스 권한을 부여 할 수 있습니다. 웹 마스터는 ssh 및 sftp를 사용하여 고정 주소를 가진 여러 워크 스테이션에서 로그인하면 다른 모든 것은 거부됩니다.
TCP 포트에서 규칙을 논리적으로 정렬하는 방화벽 :
-A INPUT -p tcp -m tcp --dport 22 --source 10.9.8.7 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 --source 10.9.8.8 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 --source 10.9.8.9 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 --source 10.9.8.10 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
여기에서 액세스가 부여되기 전에 HTTP 웹 서버에 대한 모든 패킷을 5 개의 규칙에 따라 확인해야합니다. 그리고 더 많은 서비스를 서버에서 실행하면 예를 들어 fail2ban 또는 유사한 제품을 사용할 때 쉽게 50 개 이상의 규칙이 될 수 있습니다.
related/established
선이 있지만 후속 규칙이 주장하지 않는 경우를 반영 할 수 있습니까 NEW
?
NEW
패킷이 새로운 연결을 시작했음을 의미합니다.
ip_conntrack_*
방화벽을 상태 저장으로 만드는 커널 모듈에 의해 처리됩니다 . 상태 저장 방화벽은 트래픽 스트림을 볼 수 있습니다.
프로토콜과 포트 번호 만 지정하면 방화벽은 상태 저장이 아니라 상태 비 저장입니다. 패킷을 제한하거나 차단한다는 의미입니다. 이러한 유형의 방화벽은 데이터 흐름을 인식하지 못합니다.
좋은 예는 FTP입니다. 활성 FTP는 제어 채널에 포트 21을 사용하지만 데이터 채널에 포트 20을 사용합니다. 상태 저장 방화벽의 경우 포트 20은 포트 21에서 이전에 새로 설정된 연결과 관련되어 있으므로 포트 20을 명시 적으로 열 필요가 없습니다.
다음은 iptables
매뉴얼 페이지 의 추출입니다 .
NEW-패킷이 새로운 연결을 시작했거나 양방향으로 패킷을 보지 못한 연결과 관련이 있음을 의미합니다.
ESTABLISHED-패킷이 양방향에서 패킷을 본 연결과 연관되어 있음을 의미합니다.
관련됨-패킷이 새 연결을 시작하지만 FTP 데이터 전송 또는 ICMP 오류와 같은 기존 연결과 연결되어 있음을 의미합니다.
-A INPUT -m tcp -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -DROP
위의 규칙 세트는 INVALID
통과 상태 인 TCP 포트 22로 패킷을 허용합니다.ACCEPT
유효 하지 않은 경우 : 이전의 상태 중 어느 것도 적용되지 않으면 패킷은 INVALID 상태입니다. 이는 다양한 유형의 스텔스 네트워크 프로브로 인해 발생하거나 CONNTRACK 항목이 부족함을 의미 할 수 있습니다 (로그에도 표시되어 있음). 또는 단순히 전적으로 양성일 수 있습니다.
/unix/57423/how-to-understand-why-the-packet-was-considered-invalid-by-the-iptables
STATE를 확인 NEW
하면 잘못된 패킷이 실수로 액세스되지 않습니다.
그리고 의미를 명확히하기 위해 :