현재 Centos6.7을 사용하고 있으며 사용자 x가 IP에서 5개 이상의 연결을 설정하지 못하도록 일부 제한을 설정하려고 합니다. 5번 로그인하면 5번 로그인은 성립되지만 6번 로그인은 거부됩니다.
connlimit를 사용하여 이 작업을 수행하려고 생각했지만 뭔가 빠진 것 같은 느낌이 들었고 과거에 규칙을 잘못된 위치에 배치하여 실수로 서버에 액세스할 수 없게 했기 때문에 규칙을 만드는 데 약간 주저했습니다. ( 이런 ).
참고: 포트를 지정하지 않으려고 합니다. xxx1과 xxx2의 IP 제한은 50으로 더 높으므로 이 규칙을 먼저 적용했습니다. 이것이 맞다고 생각합니까?
나는 다음을 가지고 있습니다 :
-A INPUT -p tcp -s x.x.x.1 --syn -m connlimit --connlimit-above 50 -j REJECT
-A INPUT -p tcp -s x.x.x.2 --syn -m connlimit --connlimit-above 50 -j REJECT
-A INPUT -p tcp --syn -m connlimit --connlimit-above 5 -j REJECT
이게 맞는 것 같나요? 이 문제를 해결하는 다른 방법이 있나요? 풀을 총 5개의 연결로 제한하고 싶지 않고 IP 주소당 5개로 제한하고 싶습니다.
답변1
거의 다 왔지만 아직은 거의 다 오지 않았습니다. 생성한 규칙은 먼저 x.1
50개 이상의 연결을 거부한 x.2
다음 어디에서나 5개 이상의 연결을 거부합니다.포함하다 x.1
그리고 x.2
. ACCEPT
공통 리미터 이전에 두 소스에 대한 규칙을 만들어야 합니다.
반전 매칭은 아마도 가장 간단할 것입니다 connlimit
:
-A INPUT -p tcp -s x.x.x.1 --syn -m connlimit --connlimit-upto 50 -j ACCEPT
-A INPUT -p tcp -s x.x.x.2 --syn -m connlimit --connlimit-upto 50 -j ACCEPT
-A INPUT -p tcp --syn -m connlimit --connlimit-upto 5 -j ACCEPT
-A INPUT -p tcp --syn -j REJECT
공통 부분( )을 반복할 필요가 없도록 이러한 규칙을 자체 체인에 넣을 수 있으며, 이러한 규칙 뒤에 추가 필터링을 수행하려는 경우 -p tcp --syn
별도의 체인 대체를 사용할 수도 있습니다. 그런 다음 수용 규칙이 다른 곳에 나타나야 합니다.ACCEPT
RETURN
기본값은 connlimit
소스 주소로 작업하는 것이므로 원하는 대로 되어야 합니다. 그러나 iptables
"로그인"이라는 개념이 없으므로 애플리케이션 수준에서 로그인을 제한하려면 해당 단계에서 수행해야 합니다.
자신이 잠기는 것을 방지하려면 먼저 컴퓨터에서 관리 액세스를 허용하는 별도의 규칙이 있는지 확인하는 것이 좋습니다(SSH일 수도 있고 적어도 연결은 이미 설정되어 있음). 또 다른 가능성은 나중에 사용하거나 cron
방화벽 규칙을 알려진 양호한 구성으로 재설정하여 잠긴 경우에도 지속되지 않는 것입니다. at
완료되면 해당 보호를 제거하는 것만 기억하면 됩니다.