использование iptables для тестирования приложения

Я тестирую свое веб-приложение, которое подключается к двум БД. Я не могу их остановить, но я хочу смоделировать отключение одного из них.

Поэтому я открыл один терминал, на котором я пингую сервер БД:

 ping 172.21.7.188

Во втором терминале я сделал:

sudo iptables -A INPUT -s 172.21.7.188 -j DROP
sudo iptables -A OUTPUT -d 172.21.7.188 -j DROP

Но я не вижу никаких изменений - пинги еще возвращаются. Что я делаю не так?

0
задан 18 October 2013 в 17:56

2 ответа

Хотя вы можете использовать Ubuntu, этот вопрос относится не к Ubuntu, а к Linux, поэтому я думаю, что лучше задать его по ServerFault.


Ответ на первоначальный вопрос (до того, как OP его отредактировал)

Ваше правило в цепочке INPUT верно, но правило в цепочке OUTPUT неверно. Вы хотите отбросить туда пакеты, адресованные упомянутому IP, а не тем, которые приходят с него (что бессмысленно в этой цепочке).

Вот почему вы должны изменить -s (--source) на -d (--destination) в правиле:

# iptables -A OUTPUT -d 172.21.7.188 -j DROP

Но даже когда вы отбрасывали только входящие пакеты, оно было достаточно, можно сказать. Это правда, что ping возвращался (эхо-ответ ICMP достиг вашего хоста) без вышеприведенной строки, и при обращении к tcpdump или wireshark показывались бы датаграммы, связанные с ping (то есть исходящие и входящие), но приложение ping не получало входящие дейтаграммы, потому что они были отброшены.

Очевидно, что в большинстве случаев отбрасывать только входящие пакеты довольно неразумно, поскольку это приводит к разным состояниям на обоих концах соединения (на уровне соединения или на уровне приложения).


Ответ на отредактированный вопрос

Если после исправления оно все еще не работает, то я подозреваю, что у вашего брандмауэра уже есть некоторые правила, которые делают ваши новые правила недоступными. То, как вы добавили свои правила, делает их добавленными в конце цепочки. Сначала вы должны удалить новые правила (те же команды, что и для добавления, но измените -A на -D).

Теперь добавьте ваши правила в начало цепочек (т.е. вставьте их в данное правило № 1), для которых они подходят (те же команды, что и для добавления, измените -A на -I):

# iptables -I INPUT  -s 172.21.7.188 -j DROP
# iptables -I OUTPUT -d 172.21.7.188 -j DROP
[ 1120] Теперь это должно работать.

0
ответ дан 18 October 2013 в 17:56
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

Это заблокирует пинг

Я использую этот скрипт для Iptables на нашем сервере

#!/bin/bash 

#This Script was Used for Only Setting up Iptables in ubuntu 12.04 server
#uncomment the Lines With # Which u don't need to use 
#if u going to use this script in remote VPS Test it in local systems before applying it in remote VPS .
#final line will be commented with # cos it will save the iptables if its not commented with #


#0. Flush every Rules what ever there already 

iptables -F

#1. This enable traffic for (lo) loopback interface(-i) 


iptables -A INPUT -i lo -j ACCEPT


#2. This Will Keep the rules for Which service currently Established  eg : ssh


iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


#3. This Will Enable the Port Number 22 for ssh which i we have defined 


iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT


#4.This Will Enable the Port Number 80 for http 


iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT


#5.This Will Enable the Port Number 443 for httpd 


iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT


#6. Allow rsync from a specific network


iptables -A INPUT -i eth0 -p tcp --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT


iptables -A OUTPUT -o eth0 -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT


#7. Blow ICMP PING Request 

iptables -A INPUT -p icmp --icmp-type echo-request -j DROP


#11. This Will Block Other connections 


iptables -A INPUT -j DROP



#saving the iptables 


#sudo apt-get install iptables-persistent
#sudo service iptables-persistent save
#sudo service iptables-persistent restart
0
ответ дан 18 October 2013 в 17:56

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

Похожие вопросы: