데비안 9 ProFTPD iptables 구성

데비안 9 ProFTPD iptables 구성

Debian 9에서 ProFTPD용 iptables를 구성하려고 합니다. 액세스는 LAN 내에서 이루어집니다. NAT가 포함되지 않습니다. 지금까지 읽은 내용에 따르면 이는 수동 FTP를 보장하지 않습니까?

유일하게 들어오는 다른 액세스는 SSH이며 이는 단일 소스 IP로 제한됩니다.

적절한 패키지 업데이트에만 아웃바운드 액세스가 필요합니다. 아직 이에 대한 규칙을 정하지 못했습니다.

언급된 규칙여기, FTP가 정상적으로 작동하도록 허용하되 모든 아웃바운드 트래픽을 차단합니다.

현재 구성은

-A INPUT -p tcp -m tcp --dport 22 -s xxx.xxx.xxx.xxx -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -s yyy.yyy.yyy.yyy/25 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 20 -s yyy.yyy.yyy.yyy/25 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 20:65535 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 1024:65535 --dport 20:65535 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

답변1

실제로 규칙 세트는 아웃바운드 패킷에 적합해야 합니다. 문제는 들어오는 패킷에 있습니다.대답하다해당 패킷은 거부되었습니다.

주요 문제는 다음 줄입니다.

-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 20:65535 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

예를 들어, 패키지 업데이트를 실행하려고 하면 도구는 aptDebian 미러 서버(일반적으로 HTTP 대상 포트 80)에 대한 연결을 보냅니다. 소스 포트는 임의의 높은 포트입니다(물론 1024 이상, 12345라고 가정).

이 패킷에 대한 응답은 원본 및 대상 포트 번호가 반전된 Debian 미러에서 반환됩니다. 응답의 원본 포트 번호는 80이고 대상 포트 번호는 12345입니다.

그러나 수신 규칙은 새 연결이든 설정된 연결이든 상관없이 소스 포트가 1024보다 낮은 수신 패킷과 일치하지 않습니다. 따라서 포트 80에 연결 요청을 보내지만 해당 포트에서 돌아오는 응답은 무시됩니다.

나는 다음을 당신의 것으로 추천합니다처음 두 개규칙을 입력하세요:

-A INPUT -i lo -j ACCEPT    # accept anything from the loopback interface
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

첫 번째 줄은 루프백 인터페이스, 즉 네트워크 프로토콜을 사용하여 서로 통신하는 컴퓨터의 프로세스를 통한 모든 것을 허용합니다. 루프백 인터페이스를 통해 트래픽이 들어오면 정의상 소스가 동일한 시스템에 있으므로 일반적으로 이를 차단할 이유가 없습니다.

두 번째 줄은 나가는 연결 및 이와 관련된 모든 항목에 대한 유효한 수신 응답을 허용합니다(예: 특정 연결 시도에서 무엇이 잘못되었는지 알려주는 ICMP 오류 패킷). 또한 이 줄은 FTP에 대한 해당 특수 연결 추적 도우미가 활성화된 경우 활성 또는 수동 여부에 관계없이 FTP 데이터 연결을 처리합니다. 계속 읽으세요...

( -m state당신이 사용하고 있는 일치 항목은 오래되어 더 이상 사용되지 않습니다. 내 일치 항목 -m conntrack --ctstate ESTABLISHED,RELATED은 기본적으로 업데이트된 버전입니다.)

FTP 연결에 대해 적절한 연결 추적 도우미를 호출하면 훨씬 쉽습니다.예전엔 이게 자동이었는데, 그러나 누군가가 자동 어시스턴트 선택을 남용하는 방법을 발견하여 비활성화해야 했습니다.

따라서 네트워크에서 TCP 포트 21로 들어오는 모든 연결이 유효한 FTP 제어 연결이 되도록 시스템에 알립니다.

-t raw -A PREROUTING -p tcp -s yyy.yyy.yyy.yyy/25 --dport 21 -j CT --helper ftp

들어오는 FTP 제어 연결이 설정되면 FTP conntrack 도우미는 그 안에서 실행된 모든 파일 전송 명령을 모니터링하고 자동으로 conntrack 하위 시스템이 관련 FTP 데이터 연결을 인식하도록 하여 이전 "ESTABLISHED, RELATED" 규칙이 해당 연결을 수락하고 해당 연결만 허용하도록 합니다. 그들: 잠재적인 FTP 데이터 연결을 위해 더 이상 다양한 포트를 열어두지 마세요!

FTP conntrack 도우미를 사용하면 더 이상 포트 20에 대한 규칙이나 --sport 1024:65535또는 가 포함된 규칙 이 필요하지 않습니다 --dport 20:65535.

수동 FTP 데이터 연결을 하이재킹하려는 시도도 자동으로 차단됩니다. 연결 추적 하위 시스템은 하이재커의 연결이 데이터 전송을 호출한 FTP 제어 연결과 다른 출처에서 온 것임을 발견하므로 하이재킹 시도가 차단되지 않습니다. 일치가 성공했으며 기본적으로 거부되었습니다.

Debian 업데이트에 FTP 미러링을 사용하는 경우 나가는 FTP 연결에 대해서도 유사한 처리를 수행해야 합니다. 이는 다음을 통해 수행할 수 있습니다.

-t raw -A OUTPUT -p tcp --dport 21 -j CT --helper ftp

관련 정보