현재 공용 서버에서 일부 IPtables 규칙을 수정하고 있는데 약간의 딜레마에 빠졌습니다. 목표는 다음을 수행하는 것입니다.
- 호스트가 분당 설정할 수 있는 SSH 연결 수를 제한합니다.
- 내부 IP 주소(172.21-30.xx)를 사용하는 모든 호스트의 경우 규칙 #1을 건너뛰도록 합니다.
내 첫 번째 생각은 "172.21-30.0.0/16 범위의 모든 IP 주소 허용"이라는 초기 규칙을 설정하는 것이었습니다. 그러나 이 범위 내에 있지 않은 모든 패킷이 삭제되지 않습니까? 모든 연결을 허용해야 합니다. 속도가 제한된 연결만 선택하세요. 172.21-30으로 시작하는 범위를 제외한 모든 범위에 적용되도록 LOGDROP 소스(아래 참조)를 구성하는 방법이 있습니까?
현재 규칙은 다음과 같습니다.
Chain INPUT (policy ACCEPT)
target prot opt source destination
LOGDROP tcp -- anywhere anywhere tcp dpt:ssh state NEW recent: UPDATE seconds: 60 hit_count: 4 name: DEFAULT side: source
tcp -- anywhere anywhere tcp dpt:ssh state NEW recent: SET name: DEFAULT side: source
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain LOGDROP (1 references)
target prot opt source destination
LOG all -- anywhere anywhere limit: avg 2/min burst 5 LOG level warning prefix `Possible SSH Attack '
DROP all -- anywhere anywhere
도움을 주셔서 감사합니다. 아론
답변1
당신의 초기 본능은 정확했습니다. 첫 번째 규칙은 "이 소스 범위의 모든 패킷 허용"이어야 하며 그 다음에는 "수신 패킷 측정" 규칙이 와야 합니다. IPTABLES 규칙은 나타나는 순서대로 평가되며 첫 번째 일치 항목이 승리합니다. 내가 다르게 할 유일한 일은 LOGDROP 체인 끝에 명시적인 DROP 규칙을 두는 대신 INPUT 정책을 DROP으로 만드는 것입니다. 그러나 이는 순전히 개인적인 취향입니다. 그것이 실제로 하는 일은 인간의 눈으로 읽을 때 사슬에서 규칙이 하나 줄어든다는 것입니다.