방화벽 하나, 두 개 아님
Debian 13은 /etc/nftables.conf과 이를 로드하는 서비스와 함께 nftables를 제공한다. AlmaLinux 10은 nftables 위에 firewalld를 제공하며, 그 서비스는 /etc/sysconfig/nftables.conf이 포함하는 것을 읽는다. 하나를 선택하십시오. firewalld를 수제 규칙 세트와 함께 실행하면 둘 다 작성하지 않은 규칙 세트가 생성된다.
systemctl disable --now firewalld # AlmaLinux, if going manual
systemctl enable --now nftables규칙 세트
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
set ssh_flood {
type ipv4_addr
flags dynamic, timeout
timeout 1h
}
chain input {
type filter hook input priority filter; policy drop;
ct state established,related accept
ct state invalid drop
iif lo accept
ip protocol icmp icmp type { echo-request, destination-unreachable, time-exceeded } accept
ip6 nexthdr ipv6-icmp accept
tcp dport 22 ct state new add @ssh_flood { ip saddr limit rate over 6/minute } drop
tcp dport 22 accept
tcp dport { 80, 443 } accept
udp dport 443 accept
counter comment "dropped by policy"
}
chain forward {
type filter hook forward priority filter; policy drop;
}
chain output {
type filter hook output priority filter; policy accept;
}
}사람들이 틀리는 부분:
- ICMPv6는 의도적으로 전체 수락된다. 이웃 발견과 패킷-너무-큼이 모두 거기에 있으며, 수동으로 필터링하면 하루 반 동안 애플리케이션 버그로 보이는 방식으로 IPv6를 깨뜨린다.
ssh_flood세트는 분당 6개를 초과하는 새 연결의 주소를 1시간 시간 초과 목록에 추가한다. 로그 파서, cron 작업, 두 번째 데몬 없음.- IPv6의 경우
type ipv6_addr으로 세트를,ip6 saddr으로 규칙을 복제하십시오. 세트는 단일 패밀리다. udp dport 443은 QUIC를 위한 것이다. 제공하지 않으면 삭제하십시오.
잠기지 않고 로드하기
systemd-run --on-active=120 nft flush ruleset
nft -f /etc/nftables.conf첫 번째 명령은 2분 후에 규칙 세트를 지우고 이름을 인쇄하는 일시적 유닛을 예약한다. 새 세션을 여십시오. 작동하면 타이머를 중지하십시오:
systemctl stop run-u1234.timer작동하지 않으면 기다리면 머신이 스스로 다시 들어오게 한다. 빈 규칙 세트는 필터링이 없음을 의미하므로, 밤새 그대로 두지 말고 일을 끝내십시오.
실제로 무엇을 하는지 확인
nft list ruleset
nft -a list chain inet filter input
nft list set inet filter ssh_flood-a은 핸들을 인쇄하며, 파일을 다시 쓰지 않고 단일 규칙을 제거하는 방법이다:
nft delete rule inet filter input handle 12카운터는 아무도 묻지 않는 질문에 답한다: 일주일 후 0에 있는 규칙은 틀렸거나 불필요하며, 둘 다 알 가치가 있다.
추적
패킷이 규칙 세트가 말하는 대로 행동하기를 거부할 때:
nft add rule inet filter input tcp dport 8443 meta nftrace set 1
nft monitor trace나중에 추적 규칙을 삭제하십시오. 무료가 아니라 저렴하다.
호스트 방화벽이 아닌 것
정책을 필터링하지, 홍수를 필터링하지 않는다. 대규모 공격은 포트에 도달하기 훨씬 전에 가장자리에서 차단되며, 인스턴스의 규칙은 이미 처리된 패킷에 CPU를 소비할 뿐이다. 자세한 내용은 DDoS 보호 참조.
영구화
nft list ruleset > /etc/nftables.conf
systemctl restart nftables쉬방과 flush ruleset 줄을 내보낸 파일 맨 위에 다시 넣으십시오. 없으면 다음 로드가 실행 중인 규칙 세트에 추가하여 대체하지 않으며, 모든 규칙이 두 번 나타난다.