IPTables не блокирует IPStresser [закрыто]

Я четыре дня безуспешно пытался заблокировать DDoS-атаки. Я хочу заблокировать все, что не внесено в белый список.

Это моя идея для OS Centos 7:

//Delete All Existing Rules
iptables --flush

//Set Default Chain Policies
iptables -P INPUT REJECT
iptables -P OUTPUT REJECT
iptables -P FORWARD REJECT

//This is the IP i want to whitelist
//I think this line doesnt work, because i cant connect BUT...
iptables -A INPUT -i eth0 -s 180.243.22.122 -j ACCEPT

//Loop here for add desired future IP

В моем тесте никто не может подключиться к какому-либо порту, но я могу атаковать его сам с помощью DDoS, используя любой UDP-сервер ... Почему?

-1
задан 4 April 2015 в 23:13
2 ответа

Вы активно отклоняете любые подключения с помощью политики по умолчанию REJECT by iptables -P INPUT REJECT .

Чтобы заблокировать соединения с IP-адреса, вы должны использовать DROP или REJECT вместо ACCEPT в своем правиле:

iptables -A INPUT -i eth0 -s 180.243.22.122 - j DROP

Проблема, с которой вы столкнулись, заключается в том, что вы отклоняете все соединения, и, используя REJECT, вы отправляете ICMP-пакет источнику, сообщая ему, что соединение было отклонено. Вместо этого вы можете использовать DROP, который не отправит ответ. Проблема с невозможностью подключиться к какой-либо службе вызвана тем, что вы не открыли никаких входящих подключений, что вы могли бы сделать, например,

iptables -A INPUT -p tcp --dport <port no.> -j ACCEPT
iptables -A INPUT -p udp --dport <port no.> -j ACCEPT

Надеюсь, это поможет.

1
ответ дан 5 December 2019 в 19:26

Здесь меня волнуют три вещи.

1. Как уже упоминалось другими, ваша политика установлена ​​на REJECT . Даже не уверен, что это допустимая цель для политики - я считаю, что это просто целевое расширение, но дважды проверьте свою страницу руководства.

Требуемая цель - DROP . Вы начинаете примерно так ( убедитесь, что вы находитесь на консоли, а не по SSH, так как вы можете быть отключены и заблокированы ):

iptables -F # Clear out chains
iptables -Z # Delete user chains
iptables -X # Reset counters

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP # Do not like this, more on that in 2nd and 3rd points

2. То, как вы обрабатываете INPUT , должно работать нормально, если вы получаете соединения только с этого одного IP-адреса. Однако у вас возникнут проблемы с установкой соединения, поскольку все пакеты OUTPUT фильтруются. Вы должны сделать что-то вроде этого:

iptables -A INPUT -s 180.243.22.122 -j ACCEPT
iptables -A OUTPUT -d 180.243.22.122 -j ACCEPT

При этом ...

3. Использование DROP в качестве политики OUTPUT может иметь массу непредвиденных последствий. Примером может быть получение обновлений из репозиториев и сбой DNS-запросов. Откровенно говоря, на мой взгляд, правила выхода редко бывают оправданными. Я бы сделал следующее:

iptables -P OUTPUT ACCEPT # Replace the other policy

# This accepts all related connections
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Это будет более разумно и не вызовет головной боли.


Подводя итог, я бы выбрал вот что:

iptables -F # Clear out chains
iptables -Z # Delete user chains
iptables -X # Reset counters

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Accept loopback
iptables -A INPUT -i lo -p all -j ACCEPT

# Accept based on state
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# IP-based exceptions
iptables -A INPUT -s 180.243.22.122 -j ACCEPT
1
ответ дан 5 December 2019 в 19:26

Теги

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