We are happy to announce that Vesta is back under active development as of 25 February 2024. We are working on v1 candidate and expect to engage more with the community over the coming months. We are committed to open source, and we encourage contributors to help us build the future of Vesta.
Настройки Iptables для сервера
Настройки Iptables для сервера
Было бы очень хорошо если бы разработчики Vesta или тот кто хорошо разбирается написали конфиги Iptables для серверов с их панелькой.
У меня например установлена панель с таким набором:
- Nginx frontend web server
- Apache application web server
- Bind DNS server
- Exim mail server
- Dovecot IMAP and POP3 server
- MySQL database server
- Vsftpd FTP server
Конфиг по умолчанию не подходит:
На просторах этого форума нашел еще конфиг один от пользователя "demian":
Но с ним у меня тоже возникли проблемы, бывает закрывает доступ к shh. Может есть и другие...
Пробовал еще такой:
Через время блокируется доступ к сайтам.
Хотелось бы все таки, чтоб кто-то толковый написал конфиги нормальные.
Думаю много пользователей будет вам благодарно)
У меня например установлена панель с таким набором:
- Nginx frontend web server
- Apache application web server
- Bind DNS server
- Exim mail server
- Dovecot IMAP and POP3 server
- MySQL database server
- Vsftpd FTP server
Конфиг по умолчанию не подходит:
Code: Select all
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
Code: Select all
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [16807:31509796]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -m state --state NEW -m recent --rcheck --seconds 6000 --name BLOCK --rsource -j DROP
-A INPUT -p tcp -m tcp --dport 21 -m state --state NEW -m hashlimit --hashlimit-above 2/min --hashlimit-burst 2 --hashlimit-mode srcip --hashlimit-name BLOCK -m recent --set --name BLOCK --rsource -j DROP
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --rcheck --seconds 6000 --name BLOCK --rsource -j DROP
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m hashlimit --hashlimit-above 2/min --hashlimit-burst 2 --hashlimit-mode srcip --hashlimit-name BLOCK -m recent --set --name BLOCK --rsource -j DROP
-A INPUT -p tcp -m tcp --dport 22 --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -m limit --limit 600/min --limit-burst 100 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -m state --state NEW -m limit --limit 600/min --limit-burst 100 -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
-A INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
Пробовал еще такой:
Code: Select all
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8083 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
Хотелось бы все таки, чтоб кто-то толковый написал конфиги нормальные.
Думаю много пользователей будет вам благодарно)
Re: Настройки Iptables для сервера
добавление в мое правило неблокиремых IP адресов
после правила RELATED,ESTABLISHED вставит строку с вашим IP
ЗЫ:
1. правила обработки новых соединенй на ssh/ftp допускают 2 попытки подключения в минуту, мгновенная блокировка на 100 минут
2. правила обработки новых подключений http/https допускают 10 подключений в секунду с одного IP привышение притормаживает последующие конекты на 100 секунд
3. несколько правил зашиты от флуда
ЗЫЫ:
для зашиты других портов можете самостоятельно копировать правила ssh/ftp(зашита от брутфорса), http/https(ограничение количества подключений), или использовать правило полной блокировки порта(не забудьте вставить строку со своим ip),
правило должно располагаться перед правилом, в любом другом месте, я обычно располагаю по мере возрастания портов, для удобства чтения и просмотра статистики
to imperio: разместите уже на своей how to странице )), а вообще можно дополнить конфиг различными правилами вплоть до блокировки доступа к phpmyadmin или к разделам сайтов... блокировки через iptables наиболее действены, т.к. не пропускают конекты до остальных служб, тем самым снимая лишнюю нагрузку с сервера
после правила RELATED,ESTABLISHED вставит строку с вашим IP
Code: Select all
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s xxx.xxx.xxx.xxx/32 -m comment --comment "<any text>" -j ACCEPT
ЗЫ:
1. правила обработки новых соединенй на ssh/ftp допускают 2 попытки подключения в минуту, мгновенная блокировка на 100 минут
2. правила обработки новых подключений http/https допускают 10 подключений в секунду с одного IP привышение притормаживает последующие конекты на 100 секунд
3. несколько правил зашиты от флуда
ЗЫЫ:
для зашиты других портов можете самостоятельно копировать правила ssh/ftp(зашита от брутфорса), http/https(ограничение количества подключений), или использовать правило полной блокировки порта(не забудьте вставить строку со своим ip),
Code: Select all
## блокировка доступа к панели vesta
-A INPUT -p tcp -m tcp --dport 8083 -j DROP
Code: Select all
-A INPUT -j REJECT --reject-with icmp-host-prohibited
Re: Настройки Iptables для сервера
Спасибо.
Поменял у себя на такой:
Вместо 00.00.00.00 мой ip.
Так будет нормально?
И еще хотел спросить, что делаю строки:
С остальным вроде более менее понятно...))
Поменял у себя на такой:
Code: Select all
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [16807:31509796]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 00.00.00.00 -m comment --comment "Exception text 1" -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -m state --state NEW -m recent --rcheck --seconds 6000 --name BLOCK --rsource -j DROP
-A INPUT -p tcp -m tcp --dport 21 -m state --state NEW -m hashlimit --hashlimit-above 2/min --hashlimit-burst 2 --hashlimit-mode srcip --hashlimit-name BLOCK -m recent --set --name BLOCK --rsource -j DROP
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --rcheck --seconds 6000 --name BLOCK --rsource -j DROP
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m hashlimit --hashlimit-above 2/min --hashlimit-burst 2 --hashlimit-mode srcip --hashlimit-name BLOCK -m recent --set --name BLOCK --rsource -j DROP
-A INPUT -p tcp -m tcp --dport 22 --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -m limit --limit 600/min --limit-burst 100 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -m state --state NEW -m limit --limit 600/min --limit-burst 100 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8083 -m state --state NEW -m recent --rcheck --seconds 300 --name BLOCK --rsource -j DROP
-A INPUT -p tcp -m tcp --dport 8083 -m state --state NEW -m hashlimit --hashlimit-above 5/min --hashlimit-burst 5 --hashlimit-mode srcip --hashlimit-name BLOCK -m recent --set --name BLOCK --rsource -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
-A INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
Так будет нормально?
И еще хотел спросить, что делаю строки:
Code: Select all
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
Re: Настройки Iptables для сервера
00.00.00.00/32 - Ваш IP, маска сети /32 = 255.255.255.255 - жесткое указание на 1 IP
если управляете хостингом только Вы нет смысла порт 8083 проверять на новые конекты... и проверять попытки брутфорса проще просто дропать остальные конекты... но дело Ваше... правило имеет место быть.
несколько правил зашиты от флуда по парно:
первые два sync-flood attack
вторые - tcp flood
третьи - icmp flood
ЗЫ: вариант блокировки определенных запросов на примере pma я написал в Вашем отдельном теме...
если управляете хостингом только Вы нет смысла порт 8083 проверять на новые конекты... и проверять попытки брутфорса проще просто дропать остальные конекты... но дело Ваше... правило имеет место быть.
несколько правил зашиты от флуда по парно:
первые два sync-flood attack
вторые - tcp flood
третьи - icmp flood
ЗЫ: вариант блокировки определенных запросов на примере pma я написал в Вашем отдельном теме...
Re: Настройки Iptables для сервера
Все таки сайты не доступны становятся сразу при включение iptables. :(
То у меня видно оно кешировало и открывались сразу, а через время блокировались тоже.
Проверил через сервисы онлайн... при включенном iptables сайты не доступны, при выключенном доступны.
Сами IP и панель была доступна.
DNS у меня работают тоже через панель... может в этом проблема и порта для их тоже открывать нужно?
Вот что выдает в статусе (service iptables status):
Может я че делаю не так...
1. Вписал правила в файл /etc/sysconfig/iptables
2. Остановил service iptables stop
3. /sbin/iptables -F - очистил правила
4. /sbin/iptables -F -t nat - очистил правила в таблице nat
5. service iptables status - проверил чтоб не было правил
6. запустил service iptables start
То у меня видно оно кешировало и открывались сразу, а через время блокировались тоже.
Проверил через сервисы онлайн... при включенном iptables сайты не доступны, при выключенном доступны.
Сами IP и панель была доступна.
DNS у меня работают тоже через панель... может в этом проблема и порта для их тоже открывать нужно?
Вот что выдает в статусе (service iptables status):
Code: Select all
Таблица: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
3 ACCEPT all -- <00.00.00.00 - moy IP> 0.0.0.0/0 /* Exception text 1 */
4 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 state NEW recent: CHECK seconds: 6000 name: BLOCK side: source
5 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 state NEW limit: above 2/min burst 2 mode srcip recent: SET name: BLOCK side: source
6 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 state NEW recent: CHECK seconds: 6000 name: BLOCK side: source
7 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 state NEW limit: above 2/min burst 2 mode srcip recent: SET name: BLOCK side: source
8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 flags:0x17/0x02
9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 state NEW limit: avg 10/sec burst 100
10 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 state NEW limit: avg 10/sec burst 100
11 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8083 state NEW recent: CHECK seconds: 300 name: BLOCK side: source
12 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8083 state NEW limit: above 5/min burst 5 mode srcip recent: SET name: BLOCK side: source
13 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x17/0x02 limit: avg 1/sec burst 5
14 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x17/0x02
15 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x17/0x04 limit: avg 1/sec burst 5
16 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x17/0x04
17 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 8 limit: avg 1/sec burst 5
18 DROP icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 8
19 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
1. Вписал правила в файл /etc/sysconfig/iptables
2. Остановил service iptables stop
3. /sbin/iptables -F - очистил правила
4. /sbin/iptables -F -t nat - очистил правила в таблице nat
5. service iptables status - проверил чтоб не было правил
6. запустил service iptables start
Re: Настройки Iptables для сервера
Нашел вроде что для DNS нужен 53 порт.
Может так:
Хотя закрадывается мысль что для DNS там по хитрому как-то нужно...))
И еще появились вопросы:
- Nginx, Apache (HTTP, HTTPS)___ - порт 80, 443 (учтен в правилах)
- Bind DNS server_______________ - порт 53
- Exim mail server_______________ - порт ?
- Dovecot IMAP and POP3 server__ - порт ?
- MySQL database server_________ - порт ?
- Vsftpd FTP server______________ - порт 21 (учтен в правилах)
- ssh__________________________ - порт 22 (учтен в правилах)
- vesta_________________________ - порт 8083 (учтен в правилах)
Тех что нету в правилах... нужно же тоже учитывать я думаю или нет?
Может так:
Code: Select all
-A INPUT -p tcp -m tcp --dport 53 -m state --state NEW -m limit --limit 600/min --limit-burst 100 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -m state --state NEW -m limit --limit 600/min --limit-burst 100 -j ACCEPT
И еще появились вопросы:
- Nginx, Apache (HTTP, HTTPS)___ - порт 80, 443 (учтен в правилах)
- Bind DNS server_______________ - порт 53
- Exim mail server_______________ - порт ?
- Dovecot IMAP and POP3 server__ - порт ?
- MySQL database server_________ - порт ?
- Vsftpd FTP server______________ - порт 21 (учтен в правилах)
- ssh__________________________ - порт 22 (учтен в правилах)
- vesta_________________________ - порт 8083 (учтен в правилах)
Тех что нету в правилах... нужно же тоже учитывать я думаю или нет?
Re: Настройки Iptables для сервера
Разместим когда будет wiki - он есть в планах :)to imperio: разместите уже на своей how to странице )), а вообще можно дополнить конфиг различными правилами вплоть до блокировки доступа к phpmyadmin или к разделам сайтов... блокировки через iptables наиболее действены, т.к. не пропускают конекты до остальных служб, тем самым снимая лишнюю нагрузку с сервера
В багтрекере можете оставить подробное предложение по правилам iptables
как вы видите реализацию данной фичи.
Вас интересует на каких портах данные службы?Exim mail server_______________ - порт ?
- Dovecot IMAP and POP3 server__ - порт ?
- MySQL database server_________ - порт ?
Re: Настройки Iptables для сервера
Порты и правила Iptables для:
- Bind DNS server_______________ - порт 53
- Exim mail server_______________ - порт ?
- Dovecot IMAP and POP3 server__ - порт ?
- MySQL database server_________ - порт ?
- Bind DNS server_______________ - порт 53
- Exim mail server_______________ - порт ?
- Dovecot IMAP and POP3 server__ - порт ?
- MySQL database server_________ - порт ?
Re: Настройки Iptables для сервера
Exim обычно 25 но возможно и 587
Dovecot IMAP and POP3 server 110 также возможно 993
MySQL 3306
А что именно требуется по правилам?
Dovecot IMAP and POP3 server 110 также возможно 993
MySQL 3306
А что именно требуется по правилам?
Re: Настройки Iptables для сервера
Ну у меня сейчас прописаны такие правила:
Но при запуске Iptables сайты становятся недоступны. Я думаю это через то что у меня DNS идут через сервер и они не добавлены в правила.
Ну и для остальных хотелось бы узнать нужны ли вообще правила:
- Exim mail server
- Dovecot IMAP and POP3 server
- MySQL database server
Если да, то какие...
Code: Select all
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [16807:31509796]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s <00.00.00.00 - moy IP> -m comment --comment "Exception text 1" -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -m state --state NEW -m recent --rcheck --seconds 6000 --name BLOCK --rsource -j DROP
-A INPUT -p tcp -m tcp --dport 21 -m state --state NEW -m hashlimit --hashlimit-above 2/min --hashlimit-burst 2 --hashlimit-mode srcip --hashlimit-name BLOCK -m recent --set --name BLOCK --rsource -j DROP
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --rcheck --seconds 6000 --name BLOCK --rsource -j DROP
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m hashlimit --hashlimit-above 2/min --hashlimit-burst 2 --hashlimit-mode srcip --hashlimit-name BLOCK -m recent --set --name BLOCK --rsource -j DROP
-A INPUT -p tcp -m tcp --dport 22 --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -m limit --limit 600/min --limit-burst 100 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -m state --state NEW -m limit --limit 600/min --limit-burst 100 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8083 -m state --state NEW -m recent --rcheck --seconds 600 --name BLOCK --rsource -j DROP
-A INPUT -p tcp -m tcp --dport 8083 -m state --state NEW -m hashlimit --hashlimit-above 5/min --hashlimit-burst 5 --hashlimit-mode srcip --hashlimit-name BLOCK -m recent --set --name BLOCK --rsource -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
-A INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
Ну и для остальных хотелось бы узнать нужны ли вообще правила:
- Exim mail server
- Dovecot IMAP and POP3 server
- MySQL database server
Если да, то какие...