- Закрыть все кроме 22, 80, 5432 портов через iptables?
- Как найти и закрыть открытый порт в linux
- Как найти открытый порт
- Как закрыть порт
- Как открыть или закрыть порт в Iptables
- Файл конфигурации Iptables
- Открытие порта в Iptables
- Закрытие порта в Iptables
- Открытие нескольких портов в Iptables
- Открытие диапазона портов в Iptables
- Порядок считывания конфигурации
- Глобальные настройки цепочек
Закрыть все кроме 22, 80, 5432 портов через iptables?
Подскажите пожалуйста команды в iptables, для того что бы:
1. закрыть все входящие порты, кроме 22, 80, 5432
2. открыть все исходящие порты
3. открыть порт 80 для всех входящих соединений
4. открыть 22 и 5432 порты только для конкретного IP
1. закрыть все входящие порты
iptables -P INPUT DROP
2. открыть все исходящие порты
iptables -P OUTPUT ACCEPT
3. открыть порт 80 для всех входящих соединений
iptables -A INPUT —dport 80 -j ACCEPT
4. открыть 22 и 5432 порты только для конкретного IP
iptables -A INPUT -m multiport —dports 22,5432 -s IP_ADDRESS -j ACCEPT
И сохранить настройки вроде так: //sbin/iptables-save. Помнится вроде так и делал, но что-то не всё выходило. Отпишитесь, если всё получится (и скрипт тоже)).
iptables-save выдает список правил в формате, который можно скормить iptables-restore.
Можно это вручную, сохранять в файл, на автозапуск настроить iptables-restore < file, либо init-скрипты дистрибутивов это обычно умеют:
service iptables save в федоре
/etc/init.d/iptables save в gentoo
ГЛАВНОЕ не выполнять это по ssh, иначе после первой строчки настройка закончится.
Дополнительно советую сначала отправлять «остальные» пакеты не в дроп, а в лог — так можно обнаружить порты, которые изначально забыли открыть.
Не закончиться, если делать через &&…
Для пущей безопасности можно подстаховаться и сделать (sleep 120 && reboot) &
Ну, ты пишешь в консоле «iptables -P INPUT DROP» и отрубаешься от своего сервера до тех пор, пока он не перезапуститься =) VPS можно из панели управления перезапустить, а если сервер физический… придеться звонить ребятам тех. поддержки =)
При настройке через ssh лучше сначала сделать разрешающее правило на порт ssh, после чего убедиться что оно работает (посмотреть счетчик пакетов по нему). Если всё сделать с первого раза правильно, то проблем, конечно, не будет, однако береженого бог бережет. У меня поначалу случались такие ошибки.
И еще раз повторюсь про трюк с отправкой в лог по-умолчанию, пару раз это помогало найти порты, которые изначально открыть забыл.
С вашим конфигом исходящие соединения работать не будут. Необходимо ещё правило, разрешающее прохождение ответных пакетов (что-то вроде «iptables -A INPUT -i eth0 —match state —state ESTABLISHED,RELATED -j ACCEPT»). Ниже есть правильное решение.
должно получиться что-то вроде этого
# Настраиваем политики по умолчанию
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# удаляем все имеющиеся правила
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
# правила входящих соединений
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 —match state —state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp —dport 80 —match state —state NEW -j ACCEPT
iptables -A INPUT -i eth0 —source 192.168.0.10 -p tcp —dport 22 —match state —state NEW -j ACCEPT
iptables -A INPUT -i eth0 —source 192.168.0.10 -p tcp —dport 5432 —match state —state NEW -j ACCEPT
# Правила исходящих соединений
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -o eth0 —match state —state NEW, ESTABLISHED, RELATED -j ACCEPT
Как найти и закрыть открытый порт в linux
Итак, вы являетесь сетевым администратором, и у вас есть несколько машин Linux в вашей сети или дата-центре. Вы обнаружили странный трафик и вам требуется его определить. Возможно ли, что трафик использует открытый порт на машине? Если так, где находится порт и как вы его закроете?
На машинах с Linux эта задача на самом деле довольно проста. Я хочу показать вам, как найти открытый порт и закрыть его. Я буду демонстрировать на Ubuntu Server 18.04, хотя процесс будет схожим во многих дистрибутивах, единственное отличие будет в том, как закрыть порт.
Как найти открытый порт
К счастью, вам не нужно устанавливать какое-либо программное обеспечение, чтобы сделать эту работу. Почему? Потому что мы будем использовать команду ss (так как netstat устарел) для просмотра портов прослушивания на вашем сервере. Это будет сделано полностью из командной строки, поэтому либо войдите на свой сервер, либо используйте безопасную оболочку для доступа. Когда вы получите приглашение bash, введите команду:
sudo ss -tulwn | grep LISTEN
Возможны следующие варианты:
-t Показать только сокеты TCP в Linux
-u Показать только сокеты UDP в Linux
-l Показать прослушивающие сокеты (например, TCP-порт 22 открыт SSHD-сервером)
-p Список имен процессов, которые открывали сокеты
-n Не разрешать имена сервисов
Вывод команды будет перечислять только прослушиваемые порты.
Как видите, на этой машине имеется только несколько открытых портов (53, 22, 631, 445, 3306, 11211, 80, 8080).
Если вы не уверены, какой порт соответствует какой службе, вы всегда можете узнать это в файле /etc/services. Прочитайте этот файл с помощью команды:
Вы должны увидеть список всех портов, доступных для Linux.
Как закрыть порт
Скажем, вы размещаете веб-сервер на компьютере, но не хотите прослушивать порт 8080. Вместо этого вы хотите, чтобы трафик проходил только через порты 80 (HTTP) и 443 (HTTPS). Чтобы закрыть порт 8080, мы будем использовать команду ufw (Uncomplicated FireWall) следующим образом:
Вы должны увидеть, что правила были обновлены, а порт заблокирован. Если вы обнаружите, что блокирование этого порта вызывает проблемы со службой или приложением, вы можете снова открыть его с помощью команды:
И это все, что нужно для поиска и закрытия открытого порта на Ubuntu. Этот процесс должен работать в большинстве дистрибутивов, единственное предостережение — как вы блокируете порт, так как не каждый дистрибутив использует ufw. Если выбранный вами дистрибутив использует другую команду для блокировки портов (например, sudo iptables -A INPUT -p tcp —destination-port 80 -j DROP), убедитесь, что вы знаете, как выполнить эту задачу на своем сервере.
Как открыть или закрыть порт в Iptables
Здравствуйте, уважаемые читатели. Сегодня наша тема: «Как открыть или закрыть порт в Iptables». В прошлой статье, мы делали установку утилиты Iptables в операционной системе CentOS. Теперь рассмотрим варианты, как с её помощью производить конфигурацию брандмауэра.
Файл конфигурации Iptables
Конфигурационный файл Iptables, находится по адресу /etc/sysconfig/iptables.
Конфигурация Iptables по умолчанию :
Есть три цепочки по умолчанию:
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
INPUT – Входящие соединения.
FORWARD – Сквозные соединения.
OUTPUT – Исходящие соединения.
- ACCEPT — глобальный атрибут для всей цепочки, это означает, что соединения в цепочке будут приниматься.
- В квадратных скобках, количество соединений и пакетов. При просмотре состояния правил в консоли, счётчики будут активны, и будет отображаться количество в реальном времени.
- Ниже, находится базовый набор правил.
Первое правило
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Второе правило
Третье правило
Четвёртое правило
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
Пятое правило
-A INPUT -j REJECT --reject-with icmp-host-prohibited
- Правило означает, что все отброшенные входящие соединения, будут отбрасываться с ответом — icmp запрещено.
Шестое правило
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
- Это правило означает, что все отброшенные сквозные соединения, будут отбрасываться с ответом — icmp запрещено.
Открытие порта в Iptables
- Для того, чтобы открыть какой-нибудь порт, нужно добавить разрешающее правило.
- Например, чтобы открыть 80 порт для веб-сервера, нужно добавить такое правило:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
- В конце строчки правила, находится атрибут ACCEPT, который и отвечает за открытие порта.
- Чтобы изменения вступили в силу, нужно перезагрузить Iptables:
# systemctl restart iptables
Закрытие порта в Iptables
- Если требуется принудительно закрыть какой-нибудь порт, то добавляемое правило будет выглядеть так:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j DROP
- В примере, принудительно закрывается 80 порт.
- В конце правила стоит атрибут DROP, который и отвечает за закрытие порта.
- После перезагрузки Iptables, можно проверить конфигурацию:
# systemctl restart iptables
# iptables -L -v -n
Открытие нескольких портов в Iptables
- Если нужно открыть (закрыть) несколько портов сразу, то можно не создавать правила для каждого порта, а использовать одно правило для нескольких портов:
-A INPUT -m state --state NEW -m tcp -p tcp --match multiport --dports 22,80 -j ACCEPT
- Нужные порты указываются через запятую.
- Перезагружаем Iptables, и проверяем конфигурацию:
# systemctl restart iptables
# iptables -L -v -n
Открытие диапазона портов в Iptables
- Если есть необходимость открыть (закрыть) диапазон портов, то так же, как и в предыдущем случае, можно сделать это при помощи одного правила:
-A INPUT -m state --state NEW -m tcp -p tcp --match multiport --dports 49900:49999 -j ACCEPT
- Диапазон портов указывается через двоеточие.
- Выполняем перезагрузку Iptables, и проверяем конфигурацию:
# systemctl restart iptables
# iptables -L -v -n
Порядок считывания конфигурации
- Считываются все имеющиеся правила, и если нет правил для какой-нибудь цепочки, то действует глобальный атрибут, указанный сверху, рядом с названием цепочки.
- Если правило для какого-нибудь соединения не назначено, то так же будет задействован глобальный атрибут цепочки.
Глобальные настройки цепочек
Можно настроить глобальные атрибуты для имеющихся цепочек:
- Если сервер не производит маршрутизацию, то можно указать глобальным атрибутом для цепочки FORWARD -> DROP.
- После добавления необходимых правил для входящих соединений, можно указать глобальный атрибут DROP, и для цепочки INPUT.
- Если нет понимания количества всех необходимых портов, нужных для исходящих соединений самого сервера, то для цепочки OUTPUT можно оставить глобальным атрибутом ACCEPT.
Это были базовые примеры настроек, которые можно использовать при конфигурации брандмауэра Linux, при помощи утилиты Iptables.
Сегодня мы рассмотрели тему: «Как открыть или закрыть порт в Iptables». Рассмотрели базовые примеры использования Iptables.
Надеюсь статья была вам полезна. До встречи в новых статьях.
Видео на тему «Как открыть или закрыть порт в Iptables»: