- Iptables — закрыть всё, кроме некоторых
- Основные настройки iptables, или как настроить фаервол в Linux
- Установка iptables
- Основные настройки iptables для десктопа
- Просмотр правил iptables
- Как открыть порт в iptables
- Как заблокировать IP адрес в iptables
- Как сохранить правила iptables
- Как откатить сохраненные правила iptables
- Как удалить правило в iptables
- Как сбросить все правила iptables
- Основные настройки iptables для веб-сервера
- Как закрыть порты в Linux?
- Как найти и закрыть открытый порт в linux
- Как найти открытый порт
- Как закрыть порт
Iptables — закрыть всё, кроме некоторых
Приветствую, господа. Собстнна, сабж. Поднят опенвпн на впс, дебиан 9. Задача: 1. Дать отдельным ип доступ по опенвпн(upd, 1950 порт) в сеть. Моих кривых рук хватило только на: iptables -A INPUT ! -s xxx.xxx.xxx.xxx -j DROP и так повторять, пока не наберётся нужное нам кол-во 2. Закрыть любые дыры\утечки — заблокировать все входящие\исходящие, кроме тех ип, что указаны выше + заблокировать все порты, кроме 443, 1950, 22 и 80-го.
Комментарии в стиле «кури основы» приветствуются, но, увы, с Линуксом работать тесно не требуется, нужно только установить данные правила.
Дать отдельным ип доступ по опенвпн(upd, 1950 порт) в сеть
Какую сеть? Рыболовную может быть?
iptables -A INPUT ! -s xxx.xxx.xxx.xxx -j DROP и так повторять, пока не наберётся нужное нам кол-во
«нам» это кому? Не ну «набирать» можно много, вот только смысл? Первое же правило пропускает все что не содержит в входящем адресе xxx.xxx.xxx.xxx
Закрыть любые дыры\утечки
заблокировать все входящие\исходящие
Вы случайно не в ркн устроились работать?
Комментарии в стиле «кури основы» приветствуются
ssh на 22 порту — несекурно
Ога, при учете еще 443 и 80 со скорее всего кучей пых и тому подобного мусора. Конечно только через ssh вас и поломают. не, ну если рутовый с пассом 111. поломают быстро, только смена порта это страусиная политика при таких условиях.
Сначала нужно закрыть все, потом уже разрешать что хочется:
Источник
Основные настройки iptables, или как настроить фаервол в Linux
С помощью утилиты iptables мы можем: ограничить все входящие соединения на свой компьютер или сервер; создать белый список IP адресов, с которых можно подключиться или наоборот заблокировать конкретный IP; а также открывать и закрывать порты и многое другое. В этой статье мы разберем только основные настройки iptables. Не будем погружаться в подробности и делать обзор всех возможностей утилиты, а лишь разберем те, которые требуются чаще всего.
Если вы хотите разобраться с утилитой более подробно, тогда стоит открыть статью в wikibooks и хорошенько запастись энтузиазмом и терпением, а в этой статье будут следующие, довольно простые, но в тоже время важные темы (кликабельно):
Перед тем, как начинать настраивать фаервол, необходимо авторизоваться под root. Если вы уже авторизованы под обычным пользователем в группе sudo , то перейти в root можно простой командой:
Debian 9: переход в root
Если ввести команду с sudo не предоставляется возможности, тогда нужно ввести просто su , но для этого потребуется ввести пароль от root.
Установка iptables
Для начала убедимся, что утилита iptables установлена. Для этого введем команду iptables -h и если вывод будет command not found , значит утилиту требуется установить.
Debian 9: проверка наличия iptabes
Установка iptables очень простая, для этого достаточно ввести:
Вместо apt может быть ваш вариант, который зависит от вашего дистрибутива и что там стоит по-умолчанию. Дожидаемся конца установки.
Debian 9: установка iptables завершена
Основные настройки iptables для десктопа
Чтобы защитить наш десктоп огненной стеной и не бояться, что к нам подключатся извне посторонние, технически подкованные персоны, следует прописать базовые правила в фаервол. Это не даст 100% гарантии безопасности вашего ПК (что в принципе невозможно), но существенно усложнит жизнь незваным гостям, которые скорее всего выберут цель полегче.
И так, если вы уже авторизованы под root в вашем домашней ОС и готовы забаррикадироваться от недоброжелателей, то стоит начать с правил по-умолчанию. Они будут срабатывать, если для соединения не нашлось других правил.
Теперь по-умолчанию у нас стоит запрет на все соединения, кроме исходящих. Но для комфортной работы этого мало и необходимо добавить несколько исключений:
Просмотр правил iptables
После того, как мы внесли новые правила в iptables, необходимо их проверить и убедиться, что мы все сделали правильно. Для этого достаточно ввести простую команду, которая отобразит все установленные правила:
Если вы вводили команды из прошлого раздела, то у вас должен быть примерно такой вывод:
Debian 9 : просмотр списка правил iptables
Как открыть порт в iptables
Чтобы разрешить подключаться к нашей ОС по SSH, нам потребуется разрешить подключение через порт 22, прописав правило в iptables:
Далее проверим все наши правила с помощью команды iptables -L
Debian 9: просмотр списка правил iptables
Как мы видим, появилось новое правило для ssh по стандартному порту 22. Теперь он открыт и можно подключаться, так как теперь блокируются все входящие соединения, кроме соединений по этому порту. О том, как подключаться к серверу по SSH, вы можете почитать здесь.
Как заблокировать IP адрес в iptables
После того, как мы настроили исключение для входящих соединений для 22 порта, возможно потребуется ограничить подключение с конкретного IP. Допустим адрес с которого мы хотим ограничить любые подключения — 192.168.122.122 , для этого введем команду:
Вместо используемого адреса в примере может быть любой, как внутренний, так и внешний. Проверим правила с помощью iptables -L
Debian 9: просмотр списка правил iptables
Как сохранить правила iptables
Одной из особенностей утилиты iptables является то, что прописанные правила полностью сбрасываются после перезагрузки системы. Самый простым способом сохранить настройки iptables будет поставить утилиту iptables-persistent . В debian и ubuntu это делается так, если вы по прежнему авторизованы под root:
Во время установки будет вопрос, сохранить ли текущие настройки iptables, пока выберем не сохранять, то есть No , потому что для начала нужно сохранить их в отдельный текстовый файл. В противном случае iptables-persistent ничего не сохранит.
После установки сохраним текущие настройки iptables в отдельный файл, который будет располагаться в папке утилиты:
А затем перезапустим службу iptables-persistent
Если вы получили сообщение, что данная служба не найдена…
То попробуйте перезапустить службу с другим названием:
В debian и ubuntu должен работать второй вариант.
Все, теперь можно смело перезагружать компьютер или сервер, все настройки iptables при это сохранятся.
Как откатить сохраненные правила iptables
Если вы ввели несколько правил по ошибке и хотите откатиться к тому набору правил, которые мы сохранили в файл в предыдущем разделе с помощью команды iptables-save , то для их восстановления достаточно ввести команду iptables-restore и указать пусть к этому файлу с сохраненными настройками:
Как удалить правило в iptables
Чтобы удалить одно конкретное правило из iptables, для начала нужно выяснить его номер и цепочку. Для этого нужно получить список всех правил с опцией —line-numbers :
Если вы вводили команды из прошлых разделов, то у вас должен быть примерно такой вывод:
Debian 9: вывод всех правил с их уникальными номерами
В данном примере мы будем удалять правило под номером 1, который запрещает все входящие соединения с IP адреса 192.168.122.122 :
Уникальный номер правила мы знаем, теперь смотрим название его цепочки:
Наша «жертва» находится в цепи INPUT (Chain INPUT). Теперь у нас есть все переменные, для того, чтобы ввести команду удаления правила и можно уже вводить ее с опцией -D :
Теперь выведем весь список и проверим удалилось ли правило:
Debian 9: проверка удалилось ли правило под номером 1
Как мы видим, правило успешно удалилось.
Как сбросить все правила iptables
Если необходимо сбросить все правила сразу, то нужно ввести следующие команды:
Теперь выведем список правил и проверим сбросились ли они:
Debian 9: сброс всех правил iptables
Основные настройки iptables для веб-сервера
Для начала следует очистить правила, которые выставляет хостер по-умолчанию, потому что при определенных обстоятельствах прописанные ниже правила могут конфликтовать с теми, что уже есть.
Затем выставим настройки по-умолчанию, запретив все входящие соединения. А потом будем уже настраивать исключения из этих правил.
Теперь разрешим внутренние соединения с 127.0.0.1 (localhost), а также установленные соединения для приложений и пинга.
Добавим несколько дополнительных фильтров:
Далее откроем порт 22, чтобы была возможность подключаться к серверу по SSH:
Открываем порты для базовых сервисов веб-сервера:
Если дополнительно планируется настраивать на сервере почту, то следует открыть порты и для этих служб:
Затем проверим все настройки командой iptables -L
Debian 9: Базовые правила iptables для веб-сервера
И наконец стоит сохранить наши правила, чтобы они не испарились после перезагрузки сервера. Как это сделать, уже рассказано в разделе выше.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Как закрыть порты в Linux?
У меня есть какой-то вопрос в закрытии порта, я думаю, что у меня есть некоторые странные вещи.
Когда я использую выполнить
это показывает, что порт 23 / TCP открыт.
Но когда я выполню
это показывает, что порт 23 / tcp закрыт.
Какой из них является правдой? Я хочу закрыть этот порт на всей моей системе, как я могу это сделать?
Nmap — отличный сканер портов, но иногда вам хочется чего-то более авторитетного. Вы можете спросить ядро, какие процессы имеют какие порты открывать, используя netstat утилиту:
Варианты, которые я дал:
- -t Только TCP
- -l Только прослушивающие порты
- -n Не ищите имена сервисов и хостов, просто отображайте номера
- -p Показать информацию о процессе (требуется привилегия root)
В этом случае мы можем видеть, что sshd прослушивает любой 0.0.0.0 порт интерфейса ( ) 22 и cupsd прослушивает 127.0.0.1 порт 631 loopback ( ). Ваш вывод может показать, что telnetd имеет локальный адрес 192.168.1.1:23 , то есть он не будет отвечать на соединения на адаптере обратной связи (например, вы не можете telnet 127.0.0.1 ).
Существуют и другие инструменты, которые отображают аналогичную информацию (например, lsof или /proc ), но netstat является наиболее широко доступным. Это даже работает на Windows ( netstat -anb ). Netstat в BSD немного отличается: вам придется использовать sockstat (1) для получения информации о процессе.
Если у вас есть идентификатор процесса и имя программы, вы можете найти процесс и убить его, если хотите закрыть порт. Для более детального управления вы можете использовать брандмауэр (iptables в Linux), чтобы ограничить доступ только определенными адресами. Возможно, вам придется отключить запуск службы. Если PID в Linux означает «-», это, вероятно, процесс ядра (например, это характерно для NFS), так что удачи в выяснении, что это такое.
Примечание: я сказал «авторитетный», потому что вам не мешают условия сети и брандмауэры. Если вы доверяете своему компьютеру, это здорово. Однако, если вы подозреваете, что вас взломали, вы не сможете доверять инструментам на своем компьютере. Замена стандартных утилит (а иногда даже системных вызовов) на те, которые скрывают определенные процессы или порты (или руткиты), является стандартной практикой для злоумышленников. Лучше всего на этом этапе сделать криминалистическую копию вашего диска и восстановить ее из резервной копии; затем используйте копию, чтобы определить, как они вошли, и закройте ее.
Источник
Как найти и закрыть открытый порт в linux
Итак, вы являетесь сетевым администратором, и у вас есть несколько машин Linux в вашей сети или дата-центре. Вы обнаружили странный трафик и вам требуется его определить. Возможно ли, что трафик использует открытый порт на машине? Если так, где находится порт и как вы его закроете?
На машинах с Linux эта задача на самом деле довольно проста. Я хочу показать вам, как найти открытый порт и закрыть его. Я буду демонстрировать на Ubuntu Server 18.04, хотя процесс будет схожим во многих дистрибутивах, единственное отличие будет в том, как закрыть порт.
Как найти открытый порт
К счастью, вам не нужно устанавливать какое-либо программное обеспечение, чтобы сделать эту работу. Почему? Потому что мы будем использовать команду ss (так как netstat устарел) для просмотра портов прослушивания на вашем сервере. Это будет сделано полностью из командной строки, поэтому либо войдите на свой сервер, либо используйте безопасную оболочку для доступа. Когда вы получите приглашение bash, введите команду:
Возможны следующие варианты:
-t Показать только сокеты TCP в Linux
-u Показать только сокеты UDP в Linux
-l Показать прослушивающие сокеты (например, TCP-порт 22 открыт SSHD-сервером)
-p Список имен процессов, которые открывали сокеты
-n Не разрешать имена сервисов
Вывод команды будет перечислять только прослушиваемые порты.
Наши открытые порты
Как видите, на этой машине имеется только несколько открытых портов (53, 22, 631, 445, 3306, 11211, 80, 8080).
Если вы не уверены, какой порт соответствует какой службе, вы всегда можете узнать это в файле /etc/services. Прочитайте этот файл с помощью команды:
Вы должны увидеть список всех портов, доступных для Linux.
Какой порт linux соответствует какой службе
Как закрыть порт
Скажем, вы размещаете веб-сервер на компьютере, но не хотите прослушивать порт 8080. Вместо этого вы хотите, чтобы трафик проходил только через порты 80 (HTTP) и 443 (HTTPS). Чтобы закрыть порт 8080, мы будем использовать команду ufw (Uncomplicated FireWall) следующим образом:
Вы должны увидеть, что правила были обновлены, а порт заблокирован. Если вы обнаружите, что блокирование этого порта вызывает проблемы со службой или приложением, вы можете снова открыть его с помощью команды:
И это все, что нужно для поиска и закрытия открытого порта на Ubuntu. Этот процесс должен работать в большинстве дистрибутивов, единственное предостережение — как вы блокируете порт, так как не каждый дистрибутив использует ufw. Если выбранный вами дистрибутив использует другую команду для блокировки портов (например, sudo iptables -A INPUT -p tcp —destination-port 80 -j DROP), убедитесь, что вы знаете, как выполнить эту задачу на своем сервере.
Источник