1. Рады видеть Вас на русскоязычном форуме TeamSpeak!

    У нас Вы можете скачать последнюю версию:

    Перед регистрацией рекомендуем ознакомиться

    с Правилами форума.

    Присоединяйтесь! Учите и обучайтесь!

    Скрыть объявление
  2. Новая группа "Новичок" на нашем форуме!

    Новые пользователи будут попадать в группу "Новичок".

    Это сделано для того чтобы "Новички" ознакомились с форумом, так как в большинстве случаев проблема с которой вы хотите обратиться уже обсуждалась.

    Перейти в тему обсуждения
    Быстрый переход в группу Пользователь
  3. VPS/VDS и дедикейт сервера в аренду с DDoS защитой

    • Низкий пинг
    • Действующий SLA
    • Рублевые цены без привязки к курсу валют

    Бесплатный тестовый период VPS-OpenVZ

    Попробовать

Как закрыть порты SQ и не только (Debian/Ubuntu)

Закрываем порты с помощью iptables

  1. Gho$t
    Много тем было создано о портах SQ, много слёз было пролито Biggrin_man32 Сегодня я расскажу вам как закрыть порты SQ и не только.
    Для начала определим какую систему инициализации использует ваша ОС. Выполним следующую команду:

    ps -p 1 -o comm=

    Ответ этой команды, укажет вам путь к правильному спойлеру ;)

    У Вас systemd. Итак, продолжим сей тернистый путь...
    Начнем с обновления индексов репозиториев и установки iptables-persistent

    sudo apt update && sudo apt install iptables-persistent

    Будет предложено сохранить правила ipv4 & ipv6, соглашаемся.

    Открываем блокнотом файл rules.v4 (рассмотрим вариант с консоли, а вы можете в winscp редактировать)

    nano /etc/iptables/rules.v4

    Удаляем содержимое и копируем и вставляем текст из спойлера

    Код:
    # Generated by iptables-save v1.4.21 on Tue Feb  7 13:31:28 2017
    *filter
    :INPUT DROP [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    -A INPUT -i lo -j ACCEPT
    -A INPUT -p tcp -m tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j DROP
    -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
    -A INPUT -m state --state RELATED,ESTABLISHED -m comment --comment "enable IN connections" -j ACCEPT
    
    # SSH Port
    -A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED --dport 22 -m comment --comment "Allow SSH" -j ACCEPT
    
    # TCP Ports & Uncomment and open your preferred ports
    #-A INPUT -p tcp -m state --state NEW -m multiport --dports 8087,8088 -j ACCEPT
    
    # UDP Ports & Uncomment and open your preferred ports
    #-A INPUT -p udp -m state --state NEW -m multiport --dports 8768,10999,27015 -j ACCEPT
    
    # Web Ports connection limit & http and https ports included
    -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcp -m multiport --dports 80,443 -m connlimit --connlimit-above 10 --connlimit-mask 32 -m comment --comment "nginx drop connlimit" -j REJECT --reject-with icmp-port-unreachable
    -A INPUT -p tcp -m tcp -m multiport --dports 80,443 -m state --state NEW -m comment --comment nginx -j ACCEPT
    
    # TeamSpeak 3 exploit rules
    -A INPUT -p udp -m multiport --dports 9987:9999 -m comment --comment "TeamSpeak3 Voice" -j ACCEPT
    -A INPUT -p udp -m udp -m multiport --ports 9987:9999 -m length --length 300:400 -m string --hex-string "|545333494e495431|" --algo kmp -m comment --comment "TS3 sploit" -j DROP
    -A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 30033 -m comment --comment "TeamSpeak3 Files" -j ACCEPT
    
    # GameTracker & Teamspeak-Server.org monitoring accept
    -A INPUT -p tcp --destination-port 10011 -m iprange --src-range 208.167.225.11-208.167.225.13 -m comment --comment "gametracker.com monitoring" -j ACCEPT
    -A INPUT -p tcp --destination-port 10011 -m iprange --src-range 208.167.241.183-208.167.241.190 -m comment --comment "gametracker.com monitoring" -j ACCEPT
    -A INPUT -p tcp --destination-port 10011 -m iprange --src-range 108.61.78.147-108.61.78.150 -m comment --comment "gametracker.com monitoring" -j ACCEPT
    -A INPUT -s 37.187.252.194 -p tcp -m tcp --dport 10011 -m comment --comment "teamspeak-servers.org monitoring" -j ACCEPT
    -A INPUT -s 94.23.153.152 -p tcp -m tcp --dport 10011 -m comment --comment "teamspeak-servers.org monitoring" -j ACCEPT
    
    # Uncomment for allow ping (ICMP)
    -A INPUT -p icmp --icmp-type 0 -j ACCEPT
    -A INPUT -p icmp --icmp-type 8 -j ACCEPT
    COMMIT
    # Completed on Tue Feb  7 13:31:28 2017
    

    Примечание #1: Под строкой SSH Port, установлен стандартный порт для SSH: 22, смените его на свой, если вы ранее меняли порт SSH. Иначе рискуете потерять доступ к серверу.

    Примечание #2: Перед тем как сохраниться, обратите внимание на строки под TCP Ports и UDP Ports, они закомментированы. Если вам нужно открыть какой либо порт, выясните какой тип порта вам нужен (TCP или UDP). Раскомментируйте нужное правило, добавлять порты нужно через запятые, как указано в примере.

    Запомните!
    По умолчанию открыты порты:
    SSH - 22
    TeamSpeak - 9987 по 9999 для вирт. серверов, 30033, 10011 только для сервисов мониторинга GameTracker и Teamspeak-Servers.org!
    Web порты - 80 и 443


    Тоже самое делаем для IPv6, блокнотом открываем файл rules.v6

    nano /etc/iptables/rules.v6

    Удаляем содержимое и копируем и вставляем текст из спойлера

    Код:
    # Generated by ip6tables-save v1.4.21 on Tue Feb  7 13:20:45 2017
    *filter
    :INPUT DROP [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    -A INPUT -i lo -j ACCEPT
    COMMIT
    # Completed on Tue Feb  7 13:20:45 2017
    

    Правило разрешает все локальные подключения, а INPUT запрещаем.

    Сохраняем CTRL+O, CTRL + X.

    Итак, мы добавили необходимые порты и сохранили правила. Настало время их применить.

    sudo systemctl restart netfilter-persistent.service

    Не сработала ни одна команда? Тогда старый дедовский способ!
    iptables-restore < /etc/iptables/rules.v4
    ip6tables-restore < /etc/iptables/rules.v6


    Важно! После выполнения этой команды правила применятся! Не закрывайте текущую сессию в консоли. Лучше открыть новую сессию и проверить, есть ли доступ к серверу по SSH. И все ли вы сделали правильно. Если подключение есть, значит вы справились!

    Теперь посмотрим вывод iptables -vnL --line-numbers
    Вывод должен быть примерно такого вида
    ss (2017-03-28 at 07.28.52).png

    Ура, вы это сделали. Порты SQ закрыты, для вас тоже ;) Что бы открыть для себя порт SQ, добавьте в конец раздела # GameTracker & Teamspeak-Server.org monitoring accept
    Код:
    -A INPUT -s ваш_IP -p tcp -m tcp --dport 10011 -j ACCEPT
    И примените правила еще раз.

    Рассмотрим ситуацию, если у вас ничего не получилось и новая сессия не открывается. Но старая сессия, которую вы не должны были закрывать работает. Возвращаем доступ к серверу.
    Устанавливаем открытую политику iptables для INPUT
    iptables -P INPUT ACCEPT
    Сбрасываем правила iptables
    iptables -F
    Пробуем все сначала. Удачи.

    У вас init. Итак, продолжим сей тернистый путь...
    Начнем с обновления индексов репозиториев и установки iptables-persistent

    sudo apt-get update && sudo apt-get install iptables-persistent

    Будет предложено сохранить правила ipv4 & ipv6, соглашаемся.

    Открываем блокнотом файл rules.v4 (рассмотрим вариант с консоли, а вы можете в winscp редактировать)

    nano /etc/iptables/rules.v4

    Удаляем содержимое и копируем и вставляем текст из спойлера

    Код:
    # Generated by iptables-save v1.4.21 on Tue Feb  7 13:31:28 2017
    *filter
    :INPUT DROP [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    -A INPUT -i lo -j ACCEPT
    -A INPUT -p tcp -m tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j DROP
    -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
    -A INPUT -m state --state RELATED,ESTABLISHED -m comment --comment "enable IN connections" -j ACCEPT
    
    # SSH Port
    -A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED --dport 22 -m comment --comment "Allow SSH" -j ACCEPT
    
    # TCP Ports & Uncomment and open your preferred ports
    #-A INPUT -p tcp -m state --state NEW -m multiport --dports 8087,8088 -j ACCEPT
    
    # UDP Ports & Uncomment and open your preferred ports
    #-A INPUT -p udp -m state --state NEW -m multiport --dports 8768,10999,27015 -j ACCEPT
    
    # Web Ports connection limit & http and https ports included
    -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcp -m multiport --dports 80,443 -m connlimit --connlimit-above 10 --connlimit-mask 32 -m comment --comment "nginx drop connlimit" -j REJECT --reject-with icmp-port-unreachable
    -A INPUT -p tcp -m tcp -m multiport --dports 80,443 -m state --state NEW -m comment --comment nginx -j ACCEPT
    
    # TeamSpeak 3 exploit rules
    -A INPUT -p udp -m multiport --dports 9987:9999 -m comment --comment "TeamSpeak3 Voice" -j ACCEPT
    -A INPUT -p udp -m udp -m multiport --ports 9987:9999 -m length --length 300:400 -m string --hex-string "|545333494e495431|" --algo kmp -m comment --comment "TS3 sploit" -j DROP
    -A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 30033 -m comment --comment "TeamSpeak3 Files" -j ACCEPT
    
    # GameTracker & Teamspeak-Server.org monitoring accept
    -A INPUT -p tcp --destination-port 10011 -m iprange --src-range 208.167.225.11-208.167.225.13 -m comment --comment "gametracker.com monitoring" -j ACCEPT
    -A INPUT -p tcp --destination-port 10011 -m iprange --src-range 208.167.241.183-208.167.241.190 -m comment --comment "gametracker.com monitoring" -j ACCEPT
    -A INPUT -p tcp --destination-port 10011 -m iprange --src-range 108.61.78.147-108.61.78.150 -m comment --comment "gametracker.com monitoring" -j ACCEPT
    -A INPUT -s 37.187.252.194 -p tcp -m tcp --dport 10011 -m comment --comment "teamspeak-servers.org monitoring" -j ACCEPT
    -A INPUT -s 94.23.153.152 -p tcp -m tcp --dport 10011 -m comment --comment "teamspeak-servers.org monitoring" -j ACCEPT
    
    # Uncomment for allow ping (ICMP)
    -A INPUT -p icmp --icmp-type 0 -j ACCEPT
    -A INPUT -p icmp --icmp-type 8 -j ACCEPT
    COMMIT
    # Completed on Tue Feb  7 13:31:28 2017
    

    Примечание #1: Под строкой SSH Port, установлен стандартный порт для SSH: 22, смените его на свой, если вы ранее меняли порт SSH. Иначе рискуете потерять доступ к серверу.


    Примечание #2: Перед тем как сохраниться, обратите внимание на строки под TCP Ports и UDP Ports, они закомментированы. Если вам нужно открыть какой либо порт, выясните какой тип порта вам нужен (TCP или UDP). Раскомментируйте нужное правило, добавлять порты нужно через запятые, как указано в примере.

    Запомните!
    По умолчанию открыты порты:
    SSH - 22
    TeamSpeak - 9987 по 9999 для вирт. серверов, 30033, 10011 только для сервисов мониторинга GameTracker и Teamspeak-Servers.org!
    Web порты - 80 и 443


    Тоже самое делаем для IPv6, блокнотом открываем файл rules.v6

    nano /etc/iptables/rules.v6

    Удаляем содержимое и копируем и вставляем текст из спойлера

    Код:
    # Generated by ip6tables-save v1.4.21 on Tue Feb  7 13:20:45 2017
    *filter
    :INPUT DROP [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    -A INPUT -i lo -j ACCEPT
    COMMIT
    # Completed on Tue Feb  7 13:20:45 2017
    

    Правило разрешает все локальные подключения, а INPUT запрещаем.

    Сохраняем CTRL+O, CTRL + X.

    Итак, мы добавили необходимые порты и сохранили правила. Настало время их применить.

    sudo service iptables-persistent reload
    или
    sudo service iptables-persistent restart

    Не сработала ни одна команда? Тогда старый дедовский способ!
    iptables-restore < /etc/iptables/rules.v4
    ip6tables-restore < /etc/iptables/rules.v6


    Важно! После выполнения этой команды правила применятся! Не закрывайте текущую сессию в консоли. Лучше открыть новую сессию и проверить, есть ли доступ к серверу по SSH. И все ли вы сделали правильно. Если подключение есть, значит вы справились!

    Теперь посмотрим вывод iptables -vnL --line-numbers
    Вывод должен быть примерно такого вида
    ss (2017-03-28 at 07.28.52).png

    Ура, вы это сделали. Порты SQ закрыты, для вас тоже ;) Что бы открыть для себя порт SQ, добавьте в конец раздела # GameTracker & Teamspeak-Server.org monitoring accept
    Код:
    -A INPUT -s ваш_IP -p tcp -m tcp --dport 10011 -j ACCEPT
    И примените правила еще раз.

    Рассмотрим ситуацию, если у вас ничего не получилось и новая сессия не открывается. Но старая сессия, которую вы не должны были закрывать работает. Возвращаем доступ к серверу.
    Устанавливаем открытую политику iptables для INPUT
    iptables -P INPUT ACCEPT
    Сбрасываем правила iptables
    iptables -F
    Пробуем все сначала. Удачи.


    Я как автор данной темы, рекомендую выполнять настройку iptables при покупке нового сервера. Т.к многие новички могут потерять доступ к серверу из за "прямоты" своих рук. Переустановить новый сервер без потери данных не очень то обидно, чем уже готовый сервер с данными ;)

    Благодарить @VJean за правила iptables и @Gho$t за тесты правил и статью Cool_man7890

    Нашли ошибку? Сообщите о ней в личку!
    VJean, kapabac и PlusaN нравится это.