내 서버에서 방화벽을 실행하고 있으며 더 나은 보안을 위해 (firewalld를 사용하여) Fail2ban을 설정하려고 합니다. 문제는 설정된 연결을 종료할 수 없다는 것입니다.
Firewalld에는 몇 가지 서비스(Ssh 등)만 추가된 기본 구성이 있습니다.
문제가 무엇인지 알 것 같습니다.
iptables -L INPUT
이것을 주세요.
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
INPUT_direct all -- anywhere anywhere
INPUT_ZONES_SOURCE all -- anywhere anywhere
INPUT_ZONES all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
iptables에 대한 내 이해에 따르면 이는 첫 번째 규칙이기 때문에 관련 있고 확립된 연결이 무슨 일이 있어도 허용된다는 것을 의미합니다(지정된 포트만 열려 있는 동안 두 번째 규칙이 존재하는 이유는 모르겠지만 지금은 무시하겠습니다). .
내가 시도한 것은 첫 번째 규칙을 제거하는 것이었지만 iptables -D INPUT 1
, 이로 인해 네트워크도 네트워크도 전혀 없는 시스템이 남게 되었습니다. 그래서 나는 그 규칙을 다시 추가했지만 마지막 규칙에서 두 번째로 추가했습니다. iptables -I INPUT 7 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
.
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
INPUT_direct all -- anywhere anywhere
INPUT_ZONES_SOURCE all -- anywhere anywhere
INPUT_ZONES all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
이렇게 하면 원하는 효과가 있는 것 같습니다. 이제 Fail2ban 항목이 작성되면 설정된 연결이 종료되고 나머지 네트워크가 작동하는 것처럼 보입니다.
질문:이를 보존하기 위해 방화벽을 어떻게 사용합니까? 나는 방화벽을 영구적으로 변경할 수 있다는 것을 알고 있으며 firewall-cmd --permanent
and를 통해 더 낮은 수준의 작업을 수행할 수 있다는 것을 알고 있지만 INPUT 체인을 심층적으로 조작할 수 있는 방법을 찾지 못했습니다.--direct
--xxx-rich-rule
편집하다:나는 이것을 사용하여 --passthrough
INPUT 체인을 조작할 수 있다는 것을 발견했습니다. 그러나 영구적으로 만들려고 하면 다음과 같습니다.
firewall-cmd --direct --passthrough ipv4 -I INPUT 7 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
firewall-cmd --direct --passthrough ipv4 -D INPUT 1
systemctl restart firewalld
삽입은 작동하지만 삭제는 작동하지 않습니다. 이 후 다음이 iptables -L INPUT
생성됩니다.
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
INPUT_direct all -- anywhere anywhere
INPUT_ZONES_SOURCE all -- anywhere anywhere
INPUT_ZONES all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
편집하다:
나는 아직 Fail2ban의 방화벽 작업을 작동시키는 방법을 찾지 못했기 때문에 현 시점에서는 그것이 가능하다고 생각하지 않습니다.
대신 Fail2ban iptables 작업을 사용하면 작동하므로 계속 사용하겠습니다.
답변1
방화벽이 PREROUTING에 대한 요청을 차단하려는 것 같습니다.으깨다이전에 확인했던 테이블필터규칙을 추가하려는 테이블입니다.
간단한 금지
설정된 세션을 차단하기 위한 간단한 옵션은 소스 규칙을 추가하는 것입니다.줄이다구역.
firewall-cmd --zone=drop --add-source=192.168.1.xx
PREROUTING_ZONES_SOURCE 체인에 소스 IP가 추가됩니다.으깨다테이블.
# iptables -L PREROUTING_ZONES_SOURCE -nv --line -t mangle
Chain PREROUTING_ZONES_SOURCE (1 references)
num pkts bytes target prot opt in out source destination
1 23 1656 DROP all -- * * 192.168.1.xx 0.0.0.0/0
PREROUTING_ZONES_SOURCE전화를 걸다사전 라우팅모든 트래픽을 처리하기 전에 처리하는 체인입력하다링크 인필터또는으깨다.
# iptables -L PREROUTING -nv --line -t mangle
Chain PREROUTING (policy ACCEPT 1809 packets, 90324 bytes)
num pkts bytes target prot opt in out source destination
1 227K 22M PREROUTING_direct all -- * * 0.0.0.0/0 0.0.0.0/0
2 227K 22M PREROUTING_ZONES_SOURCE all -- * * 0.0.0.0/0 0.0.0.0/0
3 226K 22M PREROUTING_ZONES all -- * * 0.0.0.0/0 0.0.0.0/0
사용자 정의 금지 규칙
보다 구체적인 규칙을 추가해야 하는 경우 다음을 사용하세요.--직접--규칙 추가규칙 추가손상/입력이후에 실행맹글/사전 라우팅. 다음은 특정 IP에 대해 포트 443을 차단하는 예입니다.
# firewall-cmd --direct --add-rule ipv4 mangle INPUT 0 -p tcp --dport 443 -s 192.168.1.xx -j DROP
형식은 다음과 같습니다.
--direct --add-rule { ipv4 | ipv6 | eb } table chain priority args
이 예에서는 다음과 같습니다.
- { IPv4 | IPv6 엡 } ->IPv4:IPv4 프로토콜 지정
- 테이블->으깨다: 패킷을 수신한 후 규칙을 확인하기 전에 즉시 실행합니다.필터ESTABLISHED 연결의 패킷을 허용하는 테이블과 같은 테이블입니다.
- 체인->입력하다: 이 INPUT 체인은 PREROUTING 후에 확인되지만 이 INPUT은 PREROUTING과 관련이 없다는 점에 유의하세요.으깨다테이블.
- 우선순위->0: 규칙 우선순위. 여기서 0이 가장 높은 우선순위입니다.
- 매개변수->-p tcp --dport 443 -s 192.168.1.xx -j 삭제: 동일한 매개변수가 iptables에 전달됩니다.
그럼 그게 다야맹글/INPUT_direct좋다:
# iptables -L INPUT_direct -nv --line -t mangle
Chain INPUT_direct (1 references)
num pkts bytes target prot opt in out source destination
1 30 1888 DROP tcp -- * * 192.168.1.181 0.0.0.0/0 tcp dpt:443
몇 가지 메모
첫 번째 예는 소스 IP의 모든 패킷을 차단하지만 두 번째 예는 PREROUTING 규칙 후에 실행되므로 INPUT에 도달하기 전에 패킷이 수정되거나 패킷이 FORWARD 테이블로 라우팅되는 경우 데이터 패키지는 DROP 규칙에 도달하지 않습니다.
다음은 간단한 흐름도입니다.웹 필터표면. 다음에서 추출된 이미지http://www.iptables.info/en/struct-of-iptables.html