Назад | Перейти на главную страницу

Заблокирован IP в iptables, но все еще виден в журналах apache

Я использую сервер Centos 6.0 с Apache 2 / MySQL. У меня запущены iptables. Сегодня вечером я выполнил следующие шаги, чтобы заблокировать весь трафик с IP-адреса с помощью iptables:

iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP
iptables -A OUTPUT -d xxx.xxx.xxx.xxx -j DROP
service iptables save
service iptables restart

Но я все еще постоянно вижу обращения с этого IP в моих журналах доступа Apache, даже после перезапуска Apache. iptables определенно запущен, и это определенно правильный IP-адрес.

Это остальные записи в iptables:

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     all  --  anywhere             anywhere            
2    REJECT     all  --  anywhere             loopback/8          reject-with icmp-port-unreachable 
3    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
4    ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http 
5    ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:https 
6    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:30000 
7    ACCEPT     icmp --  anywhere             anywhere            icmp echo-request 
8    REJECT     all  --  anywhere             anywhere            reject-with icmp-port-unreachable 

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         
1    REJECT     all  --  anywhere             anywhere            reject-with icmp-port-unreachable 

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     all  --  anywhere             anywhere

Что мне не хватает?

Ваше первое правило iptables разрешает именно тот трафик, который вы пытаетесь заблокировать.

1    ACCEPT     all  --  anywhere             anywhere            

Порядок имеет значение.

Сначала я предлагаю вам использовать system-config-firewall или system-config-firewall-tui . Есть раздел с «собственными правилами», который сделает это за вас.

Если вы хотите делать такие вещи вручную, вам нужно вставить правило перед «ACCEPT» для tcp dpt: http. Самый простой способ: iptables -I INPUT 1 -s xxx.xxx.xxx.xxx -j DROP

(Вставить в позицию 1 вместо Добавить)

Поскольку ваша проблема уже решена, позвольте мне добавить отступление: в вашей цепочке INPUT уже задана политика ACCEPT. Правило ПРИНЯТЬ весь трафик не только мешает работе вашего брандмауэра, оно также является избыточным, поскольку работает иначе, чем политика (в зависимости от того, где в цепочке размещено правило ПРИНЯТИЯ), что делает его бесполезным и сложным для отладки. Не закрывайте одно и то же дважды своим брандмауэром.

Вы можете видеть этот IP-адрес, потому что у вас есть правило для принятия СВЯЗАННЫХ и УСТАНОВЛЕННЫХ сеансов:

3    ACCEPT     all  --  anywhere             anywhere state RELATED,ESTABLISHED

Вам нужно убить соединение с заблокированного IP-адреса va tcpkill, и этот IP-адрес больше не будет подключаться :)