FreeBSD에서 pf 방화벽으로 FTP 연결을 제한하세요.

FreeBSD에서 pf 방화벽으로 FTP 연결을 제한하세요.

pf 방화벽을 사용하여 FreeBSD 서버에 대한 동시 FTP 연결을 제한하고 싶습니다. 예를 들어 하나의 소스 IP에서 포트 20 또는 21에 10개의 동시 연결만 가능합니다.

나는 이를 위해 다음 규칙을 사용합니다.

pass in quick proto tcp from any to em0 port {20, 21} keep state (max-src-conn 10)

문제는 모든 업로드 또는 다운로드가 상태와 함께 상태 항목을 생성한다는 것입니다.FIN_WAIT_2:FIN_WAIT_2완료되면. 이 상태는 다음과 같은 경우에만 제거됩니다.tcp.finwait시간 초과에 도달했습니다. 이 FIN_WAIT 상태 중 10번 이후에는 서버의 새 데이터 연결을 허용하지 않습니다. 이는 단일 FTP 로그인으로 여러 파일을 순차적으로 다운 또는 업로드하려고 할 때 문제가 됩니다.

이 문제에 대한 좋은 해결책이 있는 사람이 있습니까?

답변1

이것은 쉽게 할 수 있습니다 rctl. 고유한 UID를 사용하여 ftp 데몬을 실행하고 프로세스 수를 이 UID로 제한합니다. 그게 다야.

다음을 사용하여 커널을 다시 컴파일해야 할 수도 있습니다.

options RACCT
options RCTL

다음과 같이 rctl을 사용할 수 있습니다.

rctl -a user:ftp:maxproc:deny=11

한번 보시면 man rctl마음에 드실 겁니다 ;)

관련 정보