Vesta Control Panel - Forum

Community Forum

Skip to content

Advanced search
  • Quick links
    • Main site
    • Github repo
    • Google Search
  • FAQ
  • Login
  • Register
  • Board index Language specific forums Russian (Русский) Общие вопросы
  • Search

iptables/firewall дырка + не оптимально

Общие вопросы о панели управления Vesta
Post Reply
  • Print view
Advanced search
6 posts • Page 1 of 1
Scorcher
Posts: 13
Joined: Sat Jan 16, 2016 5:57 pm

iptables/firewall дырка + не оптимально
  • Quote

Post by Scorcher » Sun Jan 24, 2016 7:58 pm

Файрвол у вас настроен крайне странно и не оптимально...

1. -A INPUT -p tcp -m tcp --sport 21 -j ACCEPT
такого рода правила открывают доступ на ЛЮБОЙ порт инициированные с порта 21 (например) с ЛЮБОГО хоста в интернете! Это дырень размером с планету... (в конце сообщения скрипт, подтверждающий это)

2. -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
Это правило должно стоять как можно выше. У вас же оно в самом низу. 99% пакетов попадают именно под это правило.

3. -A INPUT -s X.X.X.X/32 -j ACCEPT и аналогичное для локалхоста
Эти правила тоже надо ставить как можно выше, т.к. исходя из настроек панели весь трафик даже между nginx и apache идет через внешний интерфейс - дак вот его путь надо минимизировать, а не ставить после проверки всех правил с портами.

Вот тут diff текущего и того, что надо бы сделать...

Code: Select all

root@vsh01:~# iptables-save > iptables.txt
root@vsh01:~# diff -up iptables.txt iptables-new.txt
--- iptables.txt        2016-01-24 22:20:32.230995408 +0300
+++ iptables-new.txt    2016-01-24 22:21:45.064172243 +0300
@@ -8,6 +8,9 @@
 :fail2ban-VESTA - [0:0]
 :fail2ban-ssh - [0:0]
 :vesta - [0:0]
+-A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
+-A INPUT -s X.X.X.X/32 -j ACCEPT
+-A INPUT -s 127.0.0.1/32 -j ACCEPT
 -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
 -A INPUT -p tcp -m tcp --dport 8083 -j fail2ban-VESTA
 -A INPUT -p tcp -m multiport --dports 25,465,587,2525,110,995,143,993 -j fail2ban-MAIL
@@ -22,25 +25,6 @@
 -A INPUT -p tcp -m multiport --dports 143,993 -j ACCEPT
 -A INPUT -p tcp -m tcp --dport 8083 -j ACCEPT
 -A INPUT -p icmp -j ACCEPT
--A INPUT -s X.X.X.X/32 -j ACCEPT
--A INPUT -s 127.0.0.1/32 -j ACCEPT
--A INPUT -p tcp -m tcp --sport 20 -j ACCEPT
--A INPUT -p tcp -m tcp --sport 21 -j ACCEPT
--A INPUT -p tcp -m tcp --sport 22 -j ACCEPT
--A INPUT -p tcp -m tcp --sport 25 -j ACCEPT
--A INPUT -p udp -m udp --sport 53 -j ACCEPT
--A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
--A INPUT -p tcp -m tcp --sport 443 -j ACCEPT
--A INPUT -p tcp -m tcp --sport 110 -j ACCEPT
--A INPUT -p udp -m udp --sport 123 -j ACCEPT
--A INPUT -p tcp -m tcp --sport 143 -j ACCEPT
--A INPUT -p tcp -m tcp --sport 3306 -j ACCEPT
--A INPUT -p tcp -m tcp --sport 5432 -j ACCEPT
--A INPUT -p tcp -m tcp --sport 8080 -j ACCEPT
--A INPUT -p tcp -m tcp --sport 8433 -j ACCEPT
--A INPUT -p tcp -m tcp --sport 8083 -j ACCEPT
--A INPUT -p tcp -m tcp --sport 12000:12100 -j ACCEPT
--A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
 -A fail2ban-MAIL -j RETURN
 -A fail2ban-SSH -j RETURN
 -A fail2ban-VESTA -j RETURN


Скрипт теста обхода iptables:

Code: Select all

root@vsh02:~# cat iptables-test.php
<?php
$localip = 'LOCAL IP';
$localport = LOCAL PORT (one of listed with parameters --sport) (for example 8080);
$remoteip = 'REMOTE IP - жертва';
$remoteport = REMOTE PORT, который не открыт там с помощью iptables;

// Создаём новый сокет
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

// Привязываем адрес источника
socket_bind($sock, $localip, $localport);

// Соединяемся с адресом назначения
$r = socket_connect($sock, $remoteip, $remoteport);

var_dump($r);

// Закрываем сокет
socket_close($sock);

Фикс не сложный - могу сделать pull-request.
Top

Mr.Erbutw
Posts: 1040
Joined: Tue Apr 29, 2014 10:05 pm

Os: CentOS 6x
Web: apache + nginx
Re: iptables/firewall дырка + не оптимально
  • Quote

Post by Mr.Erbutw » Sun Jan 24, 2016 8:32 pm

Все хорошо только тут обсуждения,
надо https://bugs.vestacp.com/ добавить вашу " iptables/firewall дырка".
Top

logger
Posts: 19
Joined: Thu Jan 31, 2013 5:26 pm

Os: CentOS 6x
Web: apache + nginx
Re: iptables/firewall дырка + не оптимально
  • Quote

Post by logger » Mon Jan 25, 2016 4:06 am

подтверждаю - сделано криво
iptables -N ban
iptables -A INPUT -j ban
при ддос если добавить цепочку ban и в нее добавлять скриптом ддос ip - то правило не работает

Code: Select all

iptables -A ban -s 79.141.160.23 -j DROP
выше установленные правила игнорят эту новую цепочку ban
https://bugs.vestacp.com/responses/prob ... faervollom
видимо правила iptables продумывал не специалист - поэтому приходится сносить faerwall
Last edited by logger on Fri Jan 29, 2016 6:29 am, edited 2 times in total.
Top

skurudo
VestaCP Team
Posts: 8099
Joined: Fri Dec 26, 2014 2:23 pm
Contact:
Contact skurudo
Website Facebook Google+ Skype
Twitter

Re: iptables/firewall дырка + не оптимально
  • Quote

Post by skurudo » Mon Jan 25, 2016 9:36 pm

Scorcher wrote:Файрвол у вас настроен крайне странно и не оптимально...
Фикс не сложный - могу сделать pull-request.
Занятно замечание.
Пулл или баг (bugs.vestacp.com) было бы отлично.
Естественно потестируем и добавим, если все ок.
Top

Scorcher
Posts: 13
Joined: Sat Jan 16, 2016 5:57 pm

Re: iptables/firewall дырка + не оптимально
  • Quote

Post by Scorcher » Tue Jan 26, 2016 6:28 am

все замечания из темы проверю.
сделаю PR.
Top

Scorcher
Posts: 13
Joined: Sat Jan 16, 2016 5:57 pm

Re: iptables/firewall дырка + не оптимально
  • Quote

Post by Scorcher » Sun Feb 28, 2016 10:27 am

logger wrote:подтверждаю - сделано криво
iptables -N ban
iptables -A INPUT -j ban
при ддос если добавить цепочку ban и в нее добавлять скриптом ддос ip - то правило не работает

Code: Select all

iptables -A ban -s 79.141.160.23 -j DROP
выше установленные правила игнорят эту новую цепочку ban
https://bugs.vestacp.com/responses/prob ... faervollom
видимо правила iptables продумывал не специалист - поэтому приходится сносить faerwall
Тут у вас две фундаментальные ошибки:
* при реальном DDoS файерволы не помогают - скорее проблема в каналах до вашей железки проявится. Если вы просто про большой поток HTTP запросов - то можно закрываться как фаерволом, так и на уровне nginx.
* если я правильно понял вашу потребность, то она достигается таким образом:
iptables -N ban # создает цепочку ban
iptables -F ban # сбрасывает содержимое цепочки ban
iptables -A ban -s 0.0.0.0/0 -j RETURN # добавить в конец цепочки ban правило возврата из цепочки, чтобы трафик проходил к следующим правилам и цепочкам
iptables -I INPUT -j ban # добавляем в НАЧАЛО цепочки INPUT переход в цепочку ban

после этого можете добавлять (-I) или удалять (-D) правила из цепочки ban и все будет работать:
iptables -I ban -s 79.141.160.23/32 -j DROP
iptables -D ban -s 79.141.160.23/32 -j DROP

Т.е. надо иметь фундаментальные понятия о том как работает firewall и не путать -I и -A в частности.

PS: PR сделал. https://github.com/serghey-rodin/vesta/pull/657 для общих целей подойдет. Но я конечно всегда настраиваю с учетом интерфейсов и точного контроля того что приходит... Но тут тяжко, особенно кроссплатформенно это делать.
Top


Post Reply
  • Print view

6 posts • Page 1 of 1

Return to “Общие вопросы”



  • Board index
  • All times are UTC
  • Delete all board cookies
  • The team
Powered by phpBB® Forum Software © phpBB Limited
*Original Author: Brad Veryard
*Updated to 3.2 by MannixMD
 

 

Login  •  Register

I forgot my password