저는 한동안 Fail2ban을 실행하다가 최근에 설치해서 iptables-persistent
블랙리스트와 함께 사용하고 있습니다 ipset
(이 컴퓨터에는 항상 공격하는 특정 IP가 있습니다). ipset
/ iptables
Persistence는 우분투에서 약간의 작업을 했는데 이 부분은 먹히는 것 같습니다. 지금 내 문제는 다음과 같습니다.
머신을 재부팅하면 내 (관련 부분) iptables는 다음과 같습니다.
Chain INPUT (policy ACCEPT 682 packets, 84744 bytes)
pkts bytes target prot opt in out source destination
347 23254 f2b-sshd tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 match-set blacklist src
347 23254 f2b-sshd tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22
Chain f2b-sshd (2 references)
pkts bytes target prot opt in out source destination
694 46508 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
netfilter-persistent.service
이를 통해 명확 하게 규칙 파일을 로드했음에도 불구하고 "loaded failed failed"
. systemctl
netfilter-percious 이후에 로드하기 위해 failure2ban 서비스를 편집하려고 시도했는데 이제 netfilter-persist가 "loaded active exited"
...로 표시되었지만 규칙은 여전히 중복됩니다(분명히 f2b는 규칙이 이미 존재하는지 여부에 관계없이 규칙을 생성합니다).
실행할 때마다 f2b 항목을 삭제하기 위해 이 파일을 수동으로 편집하는 iptables-save
것은 허용 가능한 옵션일 수 있습니다(특히 이 작업을 잊어버린 경우 결과가 그다지 심각하지 않다는 점을 고려하면). 하지만 더 나은 옵션이 있는지 궁금합니다.
답변1
해결책을 생각해 봤지만 제 생각엔... 좀 이상하네요. 다음 파일을 생성하고 실행해 보세요. 다른 항목이 아닌 f2b 항목에 의존하고 모든 항목에 "f2b"가 있으며 스크립트가 iptables-save
직접 실행되는 대신 ...
~/bin£ cat saveFilteredIptables.sh
#!/usr/bin/zsh
sudo iptables-save | perl -ne 'print if !/f2b/'
~/bin£