• XSS.stack #1 – первый литературный журнал от юзеров форума

FreePBX Centos 7 | Необходимо помощь с Iptables

Nasslor

CD-диск
Пользователь
Регистрация
09.02.2023
Сообщения
10
Реакции
0
На удаленной машине есть звонилка на Centos7, нужен грамотный человек который разбирается в iptables и сможет его настроить! Мне человек дал скрипт, который полностью корректирует правила под мои ip. Загвоздка в том, что после применений данных правил, система начинает виснуть( Возможно кто-то поможет разобраться?
 
На удаленной машине есть звонилка на Centos7, нужен грамотный человек который разбирается в iptables и сможет его настроить! Мне человек дал скрипт, который полностью корректирует правила под мои ip. Загвоздка в том, что после применений данных правил, система начинает виснуть( Возможно кто-то поможет разобраться?
А что скрипт делает? Покажи скрипт
 
#!/bin/sh

#
# Восстановление сохраненных правил iptables по таймауту
#
TIMEOUT=120
(
sleep $TIMEOUT
service iptables stop
service iptables start
) &
TIMEOUT_PID=$!
disown -h

### Скрипт конфигурации iptables ###

IPTABLES=/sbin/iptables
IP6TABLES=/sbin/ip6tables
IPSET=/usr/sbin/ipset

#
# Сетевые интерфейсы и диапазоны ip-адресов
# (обычно не нужно)
#
#LAN_IFACE=eth0
#LAN_NET=192.168.50.0/24
#PHONES_IFACE=vlan10
#INET_IFACE=eth1

#
# Установка политик по умолчанию
#
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT

#
# Очищаем предыдущие записи
#
$IPTABLES -F
$IP6TABLES -F
#$IPTABLES -F -t nat
$IPTABLES -F -t raw
$IPTABLES -X PHONES 2>/dev/null
$IPTABLES -X ADMIN 2>/dev/null
$IPTABLES -X SIP 2>/dev/null
$IPTABLES -X IAX2 2>/dev/null
$IPTABLES -X TELECOM 2>/dev/null
$IPTABLES -X PBXCLIENTS 2>/dev/null
$IPTABLES -X GREEN 2>/dev/null
$IPTABLES -X BLACKLIST 2>/dev/null
$IPTABLES -X fail2ban-SSH 2>/dev/null
$IPTABLES -X fail2ban-FTP 2>/dev/null
$IPTABLES -X fail2ban-SIP 2>/dev/null
$IPTABLES -X fail2ban-BadBots 2>/dev/null
$IPTABLES -X fail2ban-PBX-GUI 2>/dev/null
$IPTABLES -X f2b-asterisk-auth 2>/dev/null
$IPTABLES -X f2b-httpd-auth 2>/dev/null
$IPTABLES -X f2b-sshd-auth 2>/dev/null
$IP6TABLES -X f2b-asterisk-auth 2>/dev/null
$IP6TABLES -X f2b-httpd-auth 2>/dev/null
$IP6TABLES -X f2b-sshd-auth 2>/dev/null
#$IPTABLES -X LAN 2>/dev/null
$IPSET -F
$IPSET -X

#
# Черный список подсетей (содержимое в конце скрипта для читабельности)
#
$IPSET -N blacklisted_nets hash:net

#
# Сюда заносим подсети из которых можно админить АТС (SSH и HTTP)
#
$IPTABLES -N ADMIN
$IPTABLES -A ADMIN -i eth0 -s 33.42.75.164/32 -j ACCEPT
$IPTABLES -A ADMIN -j RETURN

#
# Подсети телефонов
#
$IPTABLES -N PHONES
$IPTABLES -A PHONES -i eth0 -s 33.42.75.164/24 -j ACCEPT
$IPTABLES -A PHONES -j RETURN

#
# Сюда заносим подсети из которых можно подключаться по SIP
#
$IPTABLES -N SIP
# Телефоны
$IPTABLES -A SIP -j PHONES
# Провайдер
$IPTABLES -A SIP -s 171.45.182.141/32 -j ACCEPT
$IPTABLES -A SIP -j RETURN

#
# Сюда заносим подсети из которых можно подключаться по IAX2
#
$IPTABLES -N IAX2
# АТС клиента
#$IPTABLES -A IAX2 -s 192.168.1.162 -j ACCEPT
$IPTABLES -A IAX2 -j RETURN

#
# Цепочка INPUT
#
# Allow "ping -s 777" from anywhere
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -m length --length 805 -j ACCEPT
# Защита от спуфинга
$IPTABLES -A INPUT -p tcp -m state --state NEW --tcp-flags SYN,ACK SYN,ACK -j REJECT --reject-with tcp-reset
# Защита от попытки открыть входящее соединение TCP не через SYN
$IPTABLES -A INPUT -p tcp -m state --state NEW ! --syn -j DROP

# Разрешаем RELATED, ESTABLISHED
$IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Запрещаем INVALID
$IPTABLES -A INPUT -m state --state INVALID -j DROP

# Черный список подсетей
$IPTABLES -A INPUT -m set --match-set blacklisted_nets src -j DROP

# Разрешаем локальный интерфейс
$IPTABLES -A INPUT -i lo -j ACCEPT

# Закрываемся от кривого icmp
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ADMIN

# Разрешаем сервисные порты для доступа только из сервисных сетей
$IPTABLES -A INPUT -p tcp --dport 22 -j ADMIN # SSH
$IPTABLES -A INPUT -p tcp --dport 80 -j ADMIN # HTTP
$IPTABLES -A INPUT -p tcp --dport 443 -j ADMIN # HTTPS
$IPTABLES -A INPUT -p tcp --dport 8088 -j ADMIN
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j SIP # ping от провайдеров и SIP-девайсов
$IPTABLES -A INPUT -p udp --dport 5060 -j SIP # SIP
$IPTABLES -A INPUT -p tcp --dport 5060 -j SIP # SIP TCP
$IPTABLES -A INPUT -p tcp --dport 5061 -j SIP # SIP TLS
$IPTABLES -A INPUT -p udp --dport 10000:20000 -j SIP # RTP
$IPTABLES -A INPUT -p udp --dport 4569 -j IAX2 # IAX2
$IPTABLES -A INPUT -p udp --dport 69 -j PHONES # TFTP provisioning
$IPTABLES -A INPUT -p tcp --dport 8969 -j PHONES # HTTP provisioning
$IPTABLES -A INPUT -p udp --dport 123 -j PHONES # NTP для телефонов (обычно нужно)
$IPTABLES -A INPUT -p tcp --dport 80 -j PHONES # HTTP (XML-службы для телефонов, FOP2 и т.д.)
#$IPTABLES -A INPUT -p tcp --dport 4445 -j PHONES # FOP2 (раскомментировать, если нужно FOP2)
#$IPTABLES -A INPUT -p udp --dport 123 -j LAN # NTP
#$IPTABLES -A INPUT -p udp --dport 53 -j LAN # DNS

#Разрешение DHCP-сервера при необходимости. Указать интерфейс, откуда будет трафик
#$IPTABLES -A INPUT -i eth0 -p udp --dport 68 -j ACCEPT

# Разрешение главных типов протокола ICMP
$IPTABLES -A INPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 5/sec -j ACCEPT

#
# цепочка FORWARD
# (редко)
#
#$IPTABLES -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
#$IPTABLES -A FORWARD -m state --state INVALID -j DROP
#$IPTABLES -A FORWARD -i $LAN_IFACE -o $INET_IFACE -s $LAN_NET -j ACCEPT

$IPTABLES -t raw -A PREROUTING -p dccp -j NOTRACK
$IPTABLES -t raw -A OUTPUT -p dccp -j NOTRACK

#
# цепочка PREROUTING в таблице NAT
#
#$IPTABLES -t nat -A PREROUTING -p tcp -i eth+ --dport 80 -j REDIRECT --to-ports 443

#
# цепочка POSTROUTING в таблице NAT
# (редко)
#
#$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE

#
# цепочка OUTPUT
# (для параноиков)
#
#$IPTABLES -A OUTPUT -s 127.0.0.1 -j ACCEPT
#$IPTABLES -A OUTPUT -s 10.10.155.1 -j ACCEPT
#$IPTABLES -A OUTPUT -s 192.168.50.162 -j ACCEPT
#$IPTABLES -P OUTPUT DROP

$IPTABLES -P INPUT DROP

#
# Скидываем весь IP6, вдруг он включен
#
$IP6TABLES -P INPUT DROP 2>/dev/null
$IP6TABLES -P FORWARD DROP 2>/dev/null
$IP6TABLES -P OUTPUT DROP 2>/dev/null
service ip6tables save >/dev/null 2>&1
systemctl enable ip6tables.service

#
# Черный список подсетей
#
$IPSET -A blacklisted_nets 1.0.0.0/8
$IPSET -A blacklisted_nets 7.0.0.0/8
$IPSET -A blacklisted_nets 14.0.0.0/8
$IPSET -A blacklisted_nets 23.0.0.0/8
$IPSET -A blacklisted_nets 24.0.0.0/8
$IPSET -A blacklisted_nets 27.0.0.0/8
$IPSET -A blacklisted_nets 35.0.0.0/8
$IPSET -A blacklisted_nets 36.0.0.0/8
$IPSET -A blacklisted_nets 39.0.0.0/8
$IPSET -A blacklisted_nets 40.0.0.0/8
$IPSET -A blacklisted_nets 41.0.0.0/8
$IPSET -A blacklisted_nets 42.0.0.0/8
$IPSET -A blacklisted_nets 43.0.0.0/8
$IPSET -A blacklisted_nets 45.0.0.0/8
$IPSET -A blacklisted_nets 47.0.0.0/8
$IPSET -A blacklisted_nets 49.0.0.0/8
$IPSET -A blacklisted_nets 50.0.0.0/8
$IPSET -A blacklisted_nets 54.0.0.0/8
$IPSET -A blacklisted_nets 58.0.0.0/8
$IPSET -A blacklisted_nets 59.0.0.0/8
$IPSET -A blacklisted_nets 60.0.0.0/8
$IPSET -A blacklisted_nets 61.0.0.0/8
$IPSET -A blacklisted_nets 63.0.0.0/8
$IPSET -A blacklisted_nets 64.0.0.0/8
$IPSET -A blacklisted_nets 65.0.0.0/8
$IPSET -A blacklisted_nets 66.0.0.0/8
$IPSET -A blacklisted_nets 67.0.0.0/8
$IPSET -A blacklisted_nets 68.0.0.0/8
$IPSET -A blacklisted_nets 69.0.0.0/8
$IPSET -A blacklisted_nets 70.0.0.0/8
$IPSET -A blacklisted_nets 71.0.0.0/8
$IPSET -A blacklisted_nets 72.0.0.0/8
$IPSET -A blacklisted_nets 73.0.0.0/8
$IPSET -A blacklisted_nets 74.0.0.0/8
$IPSET -A blacklisted_nets 75.0.0.0/8
$IPSET -A blacklisted_nets 76.0.0.0/8
$IPSET -A blacklisted_nets 96.0.0.0/8
$IPSET -A blacklisted_nets 97.0.0.0/8
$IPSET -A blacklisted_nets 98.0.0.0/8
$IPSET -A blacklisted_nets 99.0.0.0/8
$IPSET -A blacklisted_nets 100.0.0.0/8
$IPSET -A blacklisted_nets 101.0.0.0/8
$IPSET -A blacklisted_nets 102.0.0.0/8
$IPSET -A blacklisted_nets 103.0.0.0/8
$IPSET -A blacklisted_nets 104.0.0.0/8
$IPSET -A blacklisted_nets 105.0.0.0/8
$IPSET -A blacklisted_nets 106.0.0.0/8
$IPSET -A blacklisted_nets 107.0.0.0/8
$IPSET -A blacklisted_nets 108.0.0.0/8
$IPSET -A blacklisted_nets 110.0.0.0/8
$IPSET -A blacklisted_nets 111.0.0.0/8
$IPSET -A blacklisted_nets 112.0.0.0/8
$IPSET -A blacklisted_nets 113.0.0.0/8
$IPSET -A blacklisted_nets 114.0.0.0/8
$IPSET -A blacklisted_nets 115.0.0.0/8
$IPSET -A blacklisted_nets 116.0.0.0/8
$IPSET -A blacklisted_nets 117.0.0.0/8
$IPSET -A blacklisted_nets 118.0.0.0/8
$IPSET -A blacklisted_nets 119.0.0.0/8
$IPSET -A blacklisted_nets 120.0.0.0/8
$IPSET -A blacklisted_nets 121.0.0.0/8
$IPSET -A blacklisted_nets 122.0.0.0/8
$IPSET -A blacklisted_nets 123.0.0.0/8
$IPSET -A blacklisted_nets 124.0.0.0/8
$IPSET -A blacklisted_nets 125.0.0.0/8
$IPSET -A blacklisted_nets 126.0.0.0/8
$IPSET -A blacklisted_nets 128.0.0.0/8
$IPSET -A blacklisted_nets 129.0.0.0/8
$IPSET -A blacklisted_nets 130.0.0.0/8
$IPSET -A blacklisted_nets 131.0.0.0/8
$IPSET -A blacklisted_nets 132.0.0.0/8
$IPSET -A blacklisted_nets 133.0.0.0/8
$IPSET -A blacklisted_nets 134.0.0.0/8
$IPSET -A blacklisted_nets 135.0.0.0/8
$IPSET -A blacklisted_nets 136.0.0.0/8
$IPSET -A blacklisted_nets 137.0.0.0/8
$IPSET -A blacklisted_nets 138.0.0.0/8
$IPSET -A blacklisted_nets 139.0.0.0/8
$IPSET -A blacklisted_nets 140.0.0.0/8
$IPSET -A blacklisted_nets 142.0.0.0/8
$IPSET -A blacklisted_nets 143.0.0.0/8
$IPSET -A blacklisted_nets 144.0.0.0/8
$IPSET -A blacklisted_nets 146.0.0.0/8
$IPSET -A blacklisted_nets 147.0.0.0/8
$IPSET -A blacklisted_nets 148.0.0.0/8
$IPSET -A blacklisted_nets 149.0.0.0/8
$IPSET -A blacklisted_nets 150.0.0.0/8
$IPSET -A blacklisted_nets 152.0.0.0/8
$IPSET -A blacklisted_nets 153.0.0.0/8
$IPSET -A blacklisted_nets 154.0.0.0/8
$IPSET -A blacklisted_nets 155.0.0.0/8
$IPSET -A blacklisted_nets 156.0.0.0/8
$IPSET -A blacklisted_nets 157.0.0.0/8
$IPSET -A blacklisted_nets 158.0.0.0/8
$IPSET -A blacklisted_nets 159.0.0.0/8
$IPSET -A blacklisted_nets 160.0.0.0/8
$IPSET -A blacklisted_nets 161.0.0.0/8
$IPSET -A blacklisted_nets 162.0.0.0/8
$IPSET -A blacklisted_nets 163.0.0.0/8
$IPSET -A blacklisted_nets 164.0.0.0/8
$IPSET -A blacklisted_nets 165.0.0.0/8
$IPSET -A blacklisted_nets 166.0.0.0/8
$IPSET -A blacklisted_nets 167.0.0.0/8
$IPSET -A blacklisted_nets 168.0.0.0/8
$IPSET -A blacklisted_nets 169.0.0.0/8
$IPSET -A blacklisted_nets 170.0.0.0/8
$IPSET -A blacklisted_nets 171.0.0.0/8
$IPSET -A blacklisted_nets 173.0.0.0/8
$IPSET -A blacklisted_nets 174.0.0.0/8
$IPSET -A blacklisted_nets 175.0.0.0/8
$IPSET -A blacklisted_nets 177.0.0.0/8
$IPSET -A blacklisted_nets 179.0.0.0/8
$IPSET -A blacklisted_nets 180.0.0.0/8
$IPSET -A blacklisted_nets 181.0.0.0/8
$IPSET -A blacklisted_nets 182.0.0.0/8
$IPSET -A blacklisted_nets 183.0.0.0/8
$IPSET -A blacklisted_nets 184.0.0.0/8
$IPSET -A blacklisted_nets 186.0.0.0/8
$IPSET -A blacklisted_nets 187.0.0.0/8
$IPSET -A blacklisted_nets 189.0.0.0/8
$IPSET -A blacklisted_nets 190.0.0.0/8
$IPSET -A blacklisted_nets 191.0.0.0/8
$IPSET -A blacklisted_nets 196.0.0.0/8
$IPSET -A blacklisted_nets 197.0.0.0/8
$IPSET -A blacklisted_nets 198.0.0.0/8
$IPSET -A blacklisted_nets 199.0.0.0/8
$IPSET -A blacklisted_nets 200.0.0.0/8
$IPSET -A blacklisted_nets 201.0.0.0/8
$IPSET -A blacklisted_nets 202.0.0.0/8
$IPSET -A blacklisted_nets 203.0.0.0/8
$IPSET -A blacklisted_nets 204.0.0.0/8
$IPSET -A blacklisted_nets 205.0.0.0/8
$IPSET -A blacklisted_nets 206.0.0.0/8
$IPSET -A blacklisted_nets 207.0.0.0/8
$IPSET -A blacklisted_nets 208.0.0.0/8
$IPSET -A blacklisted_nets 209.0.0.0/8
$IPSET -A blacklisted_nets 210.0.0.0/8
$IPSET -A blacklisted_nets 211.0.0.0/8
$IPSET -A blacklisted_nets 216.0.0.0/8
$IPSET -A blacklisted_nets 218.0.0.0/8
$IPSET -A blacklisted_nets 219.0.0.0/8
$IPSET -A blacklisted_nets 220.0.0.0/8
$IPSET -A blacklisted_nets 221.0.0.0/8
$IPSET -A blacklisted_nets 222.0.0.0/8
$IPSET -A blacklisted_nets 223.0.0.0/8

KEY=""
while [ ! "$KEY" == "y" ]; do
echo -e "Убедитесь, что можете подключиться по SSH, и нажмите 'y'\nПравила iptables будут восстановлены через $TIMEOUT секунд"
read -n 1 -s KEY
KEY="$(echo $KEY | tr Y y)"
done

exec 2>/dev/null
kill -s TERM $TIMEOUT_PID
service iptables save
service ipset save
systemctl enable iptables.service
systemctl enable ipset.service
systemctl restart fail2ban.service
 
I don't actually see any reason for manually adding these rules.
FreePBX comes with an in-built security system called Responsive Firewall which will handle most of the attacks and stuff by itself (https://wiki.freepbx.org/display/fpg/responsive+firewall)
If you get locked-out off the WebAdmin panel, SSH into the server and try to run fwconsole firewall disable to stop the service for 10 minutes and proceed to add your IPs/Subnets to the "Trusted Zone" so you won't get banned anymore.
 
$ sudo systemctl stop firewalld
$ sudo systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)

Так же после чего отключил сервис iptables
$ systemctl stop iptables.service
$ systemctl status iptables.service
● iptables.service - IPv4 firewall with iptables
Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Fri 2023-04-21 16:01:16 UTC; 2min 27s ago
Process: 2404 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=1/FAILURE)
Main PID: 2404 (code=exited, status=1/FAILURE)

Apr 21 16:01:16 freepbx.sangoma.local systemd[1]: Starting IPv4 firewall with iptables...
Apr 21 16:01:16 freepbx.sangoma.local iptables.init[2404]: iptables: Applying firewall rules: i....
Apr 21 16:01:16 freepbx.sangoma.local iptables.init[2404]: Error occurred at line: 25
Apr 21 16:01:16 freepbx.sangoma.local iptables.init[2404]: Try `iptables-restore -h' or 'iptabl....
Apr 21 16:01:16 freepbx.sangoma.local iptables.init[2404]: [FAILED]
Apr 21 16:01:16 freepbx.sangoma.local systemd[1]: iptables.service: main process exited, code=...RE
Apr 21 16:01:16 freepbx.sangoma.local systemd[1]: Failed to start IPv4 firewall with iptables.
Apr 21 16:01:16 freepbx.sangoma.local systemd[1]: Unit iptables.service entered failed state.
Apr 21 16:01:16 freepbx.sangoma.local systemd[1]: iptables.service failed.
Hint: Some lines were ellipsized, use -l to show in full.

При это ошибка никуда не делась, по ssh подключение уже проходит как положено, но веб панель Freepbx так же не прогружаеться(((
 
$ sudo systemctl stop firewalld
$ sudo systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)

Так же после чего отключил сервис iptables
$ systemctl stop iptables.service
$ systemctl status iptables.service
● iptables.service - IPv4 firewall with iptables
Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Fri 2023-04-21 16:01:16 UTC; 2min 27s ago
Process: 2404 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=1/FAILURE)
Main PID: 2404 (code=exited, status=1/FAILURE)

Apr 21 16:01:16 freepbx.sangoma.local systemd[1]: Starting IPv4 firewall with iptables...
Apr 21 16:01:16 freepbx.sangoma.local iptables.init[2404]: iptables: Applying firewall rules: i....
Apr 21 16:01:16 freepbx.sangoma.local iptables.init[2404]: Error occurred at line: 25
Apr 21 16:01:16 freepbx.sangoma.local iptables.init[2404]: Try `iptables-restore -h' or 'iptabl....
Apr 21 16:01:16 freepbx.sangoma.local iptables.init[2404]: [FAILED]
Apr 21 16:01:16 freepbx.sangoma.local systemd[1]: iptables.service: main process exited, code=...RE
Apr 21 16:01:16 freepbx.sangoma.local systemd[1]: Failed to start IPv4 firewall with iptables.
Apr 21 16:01:16 freepbx.sangoma.local systemd[1]: Unit iptables.service entered failed state.
Apr 21 16:01:16 freepbx.sangoma.local systemd[1]: iptables.service failed.
Hint: Some lines were ellipsized, use -l to show in full.

При это ошибка никуда не делась, по ssh подключение уже проходит как положено, но веб панель Freepbx так же не прогружаеться(((
Please read my comment above.
I think you're already been banned by fail2ban on some of it's rules so please try to run this .sh script and check which IP got banned, in case yours is flagged then proceed to unban it.

Bash:
#!/bin/bash
for i in apache-tcpwrapper recidive ssh-iptables apache-badbots pbx-gui asterisk-iptables vsftpd-iptables;
 do fail2ban-client status $i;
 done

Regarding this specific iptables error

Apr 21 16:01:16 freepbx.sangoma.local iptables.init[2404]: iptables: Applying firewall rules: i.... Apr 21 16:01:16 freepbx.sangoma.local iptables.init[2404]: Error occurred at line: 25 Apr 21 16:01:16 freepbx.sangoma.local iptables.init[2404]: Try `iptables-restore -h' or 'iptabl....

This just means your iptables configuration is wrong and can't be loaded, check what is inside that at line 25 and try to sort out the issue. (Even tho I higly discourage to do this. On a default installation you DON'T NEED TO DO ANYTHING other than ENABLING the IN-BUILT RESPONSIVE FIREWALL)
 
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх