타임스탬프 값을 사용하여 iptable 규칙을 설치합니다.
$ iptables -A INPUT -i eth0 -s 10.0.0.3 -m comment --comment "Timestamp=`date +%Y/%m/%d-%H:%M:%S`" -j DROP
그 결과 다음과 같은 iptable 규칙이 생성됩니다.
$ iptables -A INPUT -i eth0 -s 10.0.0.3 -m comment --comment "Timestamp=2018/02/26-22:34:15" -j DROP
이제 기존 규칙을 테스트할 방법을 찾을 수 없습니다.
$ iptables -C INPUT -i eth0 -s 10.0.0.3 -j DROP
cut 명령과 egrep을 사용해 보았지만 아무것도 작동하지 않는 것 같습니다.
$ iptables -S INPUT | cut -d' ' --complement -s -f7-10
타임스탬프 값이 포함된 기존 iptables 규칙을 어떻게 테스트해야 합니까?
답변1
이 -C
기능은 다음에서만 사용할 수 있습니다.정밀한규칙을 맞춰보세요.
즉, 내가 추가한 규칙이 iptables -A INPUT -i eth0 -p tcp --dport 22 -m comment "DropSSH" -j DROP
이면 iptables -C INPUT -i eth0 -p tcp --dport 22 -m comment "DropSSH" -j DROP
일치하며 -C
오류가 발생하지 않습니다. 그러나아니요정확히 일치 iptables -C INPUT -i eth0 -p tcp --dport 22 -j DROP
하므로 삭제할 수 없습니다.
찾고 있는 사양이 존재하는지 실제로 알 수 있는 유일한 방법그리고규칙 일치의 일부가 분할 grep
필터링이라는 점을 고려하세요.
그래서:
iptables -S INPUT | grep -i '-p tcp' | grep -i '--dport 22' | grep -i '-j DROP'
TCP 포트 22를 통해 허용하는 모든 규칙과 일치할 수 있습니다. 그러나 보시다시피 이는 간단하지 않으며 문제를 일으킬 수 있습니다. cut
데이터를 조정하는 것도 별로 도움이 되지 않습니다. 까다로운 부분은 검색 중인 내용을 실행할 부분으로 나누어야 한다는 것입니다 grep
.
타임스탬프를 추가하는 또 다른 옵션논평iptables
규칙을 업데이트하고 저장할 때마다 규칙 세트의 버전이 지정된 복사본을 별도의 개정으로 업데이트하여 시간이 지남에 따라 변경된 사항을 확인할 수 있도록 규칙의 버전을 지정하는 것입니다 . 그리고아니요댓글에는 올바르게 사용할 수 있는 타임스탬프가 있으며 -C
, 누가 변경했는지 확인해야 하는 경우 버전 관리 데이터로 돌아가서 누가 언제 무엇을 변경했는지 확인할 수 있습니다.