firewall-cmd отклонить адрес назначения

Я использую следующее:

# cat /etc/redhat-release 
CentOS Linux release 7.1.1503 (Core) 
# rpm -q firewalld
firewalld-0.3.9-11.el7.noarch
#

Я пытаюсь заблокировать доступ определенного IP-адреса (10.52.208.220) из моей системы, но не могу этого сделать:

до:

# firewall-cmd --reload
success
# firewall-cmd --list-all
public (default, active)
  interfaces: eno1
  sources: 
  services: dhcpv6-client high-availability http https ssh
  ports: 5666/tcp 3306/tcp 5900/tcp 9001/tcp
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 

# ping -c1 wcmisdlin01
PING wcmisdlin01.uftmasterad.org (10.52.208.220) 56(84) bytes of data.
64 bytes from wcmisdlin01.uftmasterad.org (10.52.208.220): icmp_seq=1 ttl=64 time=0.379 ms

--- wcmisdlin01.uftmasterad.org ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.379/0.379/0.379/0.000 ms
#

после:

# firewall-cmd --add-rich-rule='rule family="ipv4" destination address="10.52.208.220" protocol value="icmp" reject'
success
# firewall-cmd --list-all
public (default, active)
  interfaces: eno1
  sources: 
  services: dhcpv6-client high-availability http https ssh
  ports: 5666/tcp 3306/tcp 5900/tcp 9001/tcp
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 
    rule family="ipv4" destination address="10.52.208.220" protocol value="icmp" reject

# ping -c1 wcmisdlin01
PING wcmisdlin01.uftmasterad.org (10.52.208.220) 56(84) bytes of data.
64 bytes from wcmisdlin01.uftmasterad.org (10.52.208.220): icmp_seq=1 ttl=64 time=0.266 ms

--- wcmisdlin01.uftmasterad.org ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.266/0.266/0.266/0.000 ms
# 

IPTABLES(8) - iptables/ip6tables — administration tool for IPv4/IPv6 packet filtering and NAT

# iptables --list IN_public_deny
Chain IN_public_deny (1 references)
target     prot opt source               destination         
REJECT     icmp --  anywhere             wcmisdlin01.uftmasterad.org  ctstate NEW reject-with icmp-port-unreachable
# 

Что я делаю неправильно?

1 ответ

Решение

На осмотре полный iptables -n --list выход, IN_public_deny (в конце концов) вызывается из INPUT цепочка, которая не имеет ничего общего с пакетами, отправляемыми из системы на таким образом неиспользованный хост; эти пакеты вместо этого направляются через OUTPUT цепь (или, возможно, FORWARD если межсетевой экран является маршрутизатором или мостом между источником и назначением). firewalld.richlanguage(5) не предлагает каких-либо средств указания того, что правило должно идти на OUTPUT (или же FORWARD), так что вариант "последнего средства" прямого правила представляется одним из решений.

firewall-cmd --direct --add-rule ipv4 filter OUTPUT_direct 0 -p icmp -d 10.52.208.220 -j REJECT --reject-with icmp-host-prohibited

(Хотя обычно я предпочитаю DROP (и, возможно, LOG с ограничением скорости) вместо отправки ICMP-отклонений, как если бы хост-блокируемый сходит с ума, пересылка пакетов ответа ICMP обратно в перегруженную сеть может заставить дела пойти все хуже и хуже...)

Другие вопросы по тегам