내 소규모 서버에 방화벽이 필요하다고 판단한 후 ferm을 사용하여 iptables 및 ip6tables를 구성했습니다(이 질문에는 ferm 태그가 지정되어야 하지만 태그를 생성할 수 없었습니다).
ipv4와 ipv6에 동일한 규칙을 사용하지만 일단 방화벽을 설정하면 (모든 포트에서) IPv6 연결이 작동을 멈추고 IPv4로 전환해야 합니다. 왜 그럴까요?
내 /etc/ferm.conf
domain (ip ip6) table filter {
chain INPUT {
policy DROP;
# connection tracking
mod state state INVALID DROP;
mod state state (ESTABLISHED RELATED) ACCEPT;
# allow local connections
interface lo ACCEPT;
# respond to ping
proto icmp icmp-type echo-request ACCEPT;
# allow SSH connections
proto tcp dport ssh ACCEPT;
# allow all my lovely server stuff
proto tcp dport (http https smtp imap imaps) ACCEPT;
# Teamspeak 3 Server
proto tcp dport (10011 30033) ACCEPT;
proto udp dport 9987 ACCEPT;
# Prosody XMPP
proto tcp dport (5222 5269) ACCEPT;
# ident connections are also allowed
proto tcp dport auth ACCEPT;
# the rest is dropped by the above policy
}
# outgoing connections are not limited
chain OUTPUT policy ACCEPT;
# this is not a router
chain FORWARD policy DROP;
}
IP6테이블-vnL
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP all * * ::/0 ::/0 state INVALID
24 8224 ACCEPT all * * ::/0 ::/0 state RELATED,ESTABLISHED
0 0 ACCEPT all lo * ::/0 ::/0
0 0 ACCEPT icmpv6 * * ::/0 ::/0 ipv6-icmptype 128
0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:22
0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:80
0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:443
0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:25
0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:143
0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:993
0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:10011
0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:30033
0 0 ACCEPT udp * * ::/0 ::/0 udp dpt:9987
0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:5222
0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:5269
0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:113
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 24 packets, 8224 bytes)
pkts bytes target prot opt in out source destination
답변1
문제는 대부분의 ICMPv6 패킷을 삭제한다는 것입니다. 이웃 검색(IPv4의 ARP와 동일)과 같은 많은 기본 IPv6 기능은 ICMPv6에 의존합니다. ICMP는 IP 프로토콜(IPv4 및 IPv6)의 중요한 부분이지만 잘못된 ICMP 필터링으로 인한 영향은 IPv4보다 IPv6에서 훨씬 더 심각합니다. 모든 ICMP를 허용한 다음 원하지 않는 ICMP를 필터링하는 것이 더 나을 수도 있습니다.
자세한 배경 정보는 다음을 확인하세요.RFC 4890.