서버에서 방화벽의 일부 :
iptables -A INPUT -p tcp --dport 22 -m state NEW --state -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 100 --hitcount 10 -j DROP
온라인 검색시 항상 해당 규칙에 NEW가 사용되고 있지만 ESTABLISHED 및 RELATED가 사용되지 않는 이유를 이해하기가 어렵습니다.
이처럼 :
iptables -A INPUT -p tcp --dport 22 -m state NEW,ESTABLISHED,RELATED --state -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED,RELATED -m recent --update --seconds 100 --hitcount 10 -j DROP
정확히 새로운 패킷이 ESTABLISHED 및 RELATED로 변경 될 때 누군가 나에게 설명 할 수 있습니까?
답변
수신자가 전화를 받기 전에 전화가 걸려온 새 패킷을 고려하십시오. ESTABLISHED 패킷은 “Hello”입니다. 그리고 관련된 패킷은 당신이 그들에게 당신이 그들을 보내려고하는 이메일에 대해 이야기하기 위해 전화를 거는 것입니다. (이메일이 관련되어 있습니다.)
내 비유가 그렇게 좋지 않은 경우 개인적으로 매뉴얼 페이지가 잘 처리한다고 생각합니다.
NEW-패킷이 새로운 연결을 시작했거나 양방향으로 패킷을 보지 못한 연결과 관련이 있음을 의미합니다.
ESTABLISHED-패킷이 양방향에서 패킷을 본 연결과 연관되어 있음을 의미합니다.
관련-패킷이 새 연결을 시작하지만 FTP 데이터 전송 또는 ICMP 오류와 같은 기존 연결과 연결되어 있음을 의미합니다.
답변
서버와 클라이언트 모두에게 제한 INPUT
적이고 개방적 OUTPUT
인 가정 :
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
그리고 iptables-extensions (8) 에서 활성 모드의 FTP 예제를 통해 :
1. 새로운
NEW 패킷이 새로운 연결을 시작했거나 양방향으로 패킷을 보지 못한 연결과 연관되었습니다.
클라이언트 온 포트 50000
(임의의 권한이없는 임의의 포트)는 port의 FTP 서버에 연결 21
합니다. 서버는이 들어오는 연결을 수락하기 위해 최소한 이것이 필요합니다.
iptables -A INPUT --dport 21 -m state --state NEW -j ACCEPT
2. 설립
ESTABLISHED 패킷이 양방향으로 패킷을 본 연결과 연관되어 있습니다.
이제 클라이언트 측에서, 그는 포트에서 서버로 나가는 연결 열어 21
로컬 포트를 사용하여 50000
그는에서 도착하는 응답 할 수 있도록 다음의 iptables을 필요 server (21)
로를 client (50000)
:
sudo iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
3. 관련
관련 패킷이 새 연결을 시작하고 있지만 FTP 데이터 전송 또는 ICMP 오류와 같은 기존 연결과 연결되어 있습니다.
FTP 연결이 설정 및 데이터 연결에 대해 수행 할 수있다 된 지금은 후 포트 (활성 FTP 클라이언트가 데이터 연결 서버가됩니다으로, 예), 클라이언트는 서버 소켓을 열 것입니다 60000
(이 포트를 표시합니다 나의 이해 클라이언트에 60000
등 RELATED
의 다른 연결로 50000->21
)와 FTP를 사용하여 서버에이 포트 번호를 보내드립니다 PORT
명령을 사용합니다. 그런 다음 FTP 서버는 해당 포트 에서 클라이언트 의 포트 20
로 새 연결을 열고 60000
클라이언트는 이제이 새 연결이 성공하기 위해 다음을 요구합니다.
sudo iptables -A INPUT -m state --state RELATED -j ACCEPT
마지막으로, 이것이 작동하려면 ip_conntrack_ftp
시스템이 연결 / 패키지를 표시 할 수 있도록 커널 모듈 을 활성화해야합니다 RELATED
(이것은 너무 이해하지 않았습니다).
modprobe ip_conntrack_ftp