저는 iptables 방화벽, fall2ban, openvpn, apache 등과 같은 일부 애플리케이션을 사용하여 Debian Jessie를 실행하는 서버를 설정하고 있습니다.
iptables 방화벽은 삭제된 모든 패킷을 기록하도록 구성됩니다. iptables 구성에서 작은 발췌:
...
-A INPUT -m comment --comment "003 accept related established rules IPv4" -m state --state RELATED,ESTABLISHED -j ACCEPT
...
-A INPUT -p tcp -m multiport --dports 1194 -m comment --comment "303 allow incoming OpenVPN" -m state --state NEW -j ACCEPT
...
-A INPUT -m comment --comment "900 IPv4 log dropped input chain" -j LOG --log-prefix "[IPTABLES INPUT IPv4] DROP " --log-level 6
-A INPUT -m comment --comment "910 IPv4 deny all other input requests" -j DROP
OpenVPN(포트 1194 사용)이 제대로 작동합니다. 많은 데이터를 전송해야 할 때까지 연결하고 연결을 사용하고 몇 시간 동안 작업할 수 있습니다. 이때 로그에는 다음 줄이 나타납니다.
Mar 02 20:39:27 rs3 kernel: [IPTABLES INPUT IPv4] DROP IN=eth0 OUT= MAC=ae:12:7b:9b:5d:e4:00:15:c7:c9:45:80:08:00 SRC=<MyIPAddress> DST=<ServerIPAddress> LEN=40 TOS=0x00 PREC=0x00 TTL=55 ID=20713 DF PROTO=TCP SPT=61941 DPT=1194 WINDOW=3040 RES=0x00 ACK URGP=0
Mar 02 20:39:27 rs3 kernel: [IPTABLES INPUT IPv4] DROP IN=eth0 OUT= MAC=ae:12:7b:9b:5d:e4:00:15:c7:c9:45:80:08:00 SRC=<MyIPAddress> DST=<ServerIPAddress> LEN=40 TOS=0x00 PREC=0x00 TTL=55 ID=20718 DF PROTO=TCP SPT=61941 DPT=1194 WINDOW=3040 RES=0x00 ACK URGP=0
Mar 02 20:39:27 rs3 kernel: [IPTABLES INPUT IPv4] DROP IN=eth0 OUT= MAC=ae:12:7b:9b:5d:e4:00:15:c7:c9:45:80:08:00 SRC=<MyIPAddress> DST=<ServerIPAddress> LEN=40 TOS=0x00 PREC=0x00 TTL=55 ID=20719 DF PROTO=TCP SPT=61941 DPT=1194 WINDOW=3040 RES=0x00 ACK URGP=0
[이 로그는 Fail2ban에서 가져온 것입니다. 서버가 내 로컬 컴퓨터에 대한 연결을 끊었습니다. ]
Q: 이러한 패킷이 삭제(및 기록)되는 이유는 무엇입니까? 즉, 이러한 패킷이 "RELATED,ESTABLISHED" 규칙에 의해 처리되지 않는 이유는 무엇입니까?
지금까지 내가 한 일은 문서를 읽고, 문제에 대해 생각하고, 규칙을 계속해서 확인하고, 인터넷에서 검색했지만 아무것도 나오지 않았습니다.
편집: 아마도 이것이 중요할 것입니다: Fail2ban에 의해 생성된 DROP 목록에는 약 500개의 항목이 있습니다.
편집: 이유를 알고 싶습니다(그래서 질문에 "왜"를 사용했습니다). 나는 해결책에 관심이 없습니다.
편집: 이 동작은 OpenVPN에만 국한되지 않으며 다른 프로토콜(예: ssh)을 사용해도 동일한 문제가 있습니다.
편집: 인상을 주려면 Wireshark 스크린샷을 살펴보십시오. 강조 표시된 패킷은 삭제/기록되었으며 스크린샷의 다른 모든 패킷은 삭제되지 않았습니다.
적절한 로그는 다음과 같습니다.
Mar 03 10:16:23 rs3 kernel: [IPTABLES INPUT IPv4] DROP IN=eth0 OUT= MAC=ae:12:7b:9b:5d:e4:00:15:c7:c9:45:80:08:00 SRC=<MyIPAddress>.117 DST=<ServerIPAddress>.116 LEN=40 TOS=0x00 PREC=0x00 TTL=55 ID=11550 DF PROTO=TCP SPT=63526 DPT=1194 WINDOW=32038 RES=0x00 ACK URGP=0
IP ID(11550)를 사용하여 Wireshark에서 패킷을 찾았습니다. 이 ID를 가진 유일한 IP 패킷입니다.
편집: 서버 IP는 고정 IP입니다. 동적으로 할당된 IP 주소는 테스트 중에 변경되지 않았습니다. 연결은 로컬 컴퓨터에서 서버로 시작됩니다. 설정은 다음과 같습니다:
================= =================== ===============
| LocalComputer | ---- | NAT Router .117 | ---- | Server .116 |
================= =================== ===============
Private IP Dynam. Assigned Fixed IP
but fixed during test
답변1
이러한 로그 항목이 있지만 iptables
규칙과 일치하지 않으므로 RELATED,ESTABLISHED
연결 추적기 보고서에서는 이를 이전과 관련이 없는 새 세션의 시작으로 간주합니다. 항상 그런 것은 아니지만 일반적으로 이는 세션이 연결 추적기 시간 초과보다 오랫동안 유휴 상태인 경우 발생할 수 있습니다. 끝점 사이의 다른 NAT 장치가 시간 초과되어 새 포트 번호를 생성했거나 다른 끝점의 IP 주소가 변경되었을 수 있으므로(일부 ISP의 DHCP 기반 네트워크에서) 반드시 끝점 연결 추적기 오류가 발생한 것은 아닙니다.
세 가지 선택지를 생각해봤는데,
~할 수 있게 하다핑 계속 살아있어OpenVPN 구성에서. 적어도 한번 시도해 보세요
ping 10
. 원하는 경우 클라이언트/서버 설정 방법에 따라 이를 선호할 수도 있습니다keepalive 10 60
. 보다매뉴얼 페이지정말 잔혹한 세부 사항을 위해. (엔드포인트의 IP 주소/포트 쌍이 변경되면 문제가 해결되지 않습니다.)fail2ban
1194/tcp에서 OpenVPN 트래픽과 일치하는 구성을 비활성화합니다 .트리거할 내용이 없도록
iptables
1194/tcp에서 OpenVPN 트래픽에 대한 로그 메시지를 인쇄하지 않도록 하세요 .fail2ban
답변2
연결 추적기는 패킷이 동일한 연결에서 나오는지 여부를 추적할 뿐만 아니라 특정 타이밍(예: 늦은 ACK 또는 너무 늦은 SEQ)도 확인합니다.
다음 명령을 사용하여 연결 추적기 로깅을 켤 수 있습니다.
echo 255 >/proc/sys/net/netfilter/nf_conntrack_log_invalid
이는 삭제되고 기록된 모든 패킷이 다음 유형임을 보여줍니다.
nf_ct_tcp: ACK is under the lower bound (possible overly delayed ACK) ...
하나 있다논의하다이 팁을 어디서 찾았나요?
현재로서는 왜 이런 일이 발생하는지 알 수 없지만 이는 또 다른 문제일 수 있습니다.