Установить некоторые порты брандмауэра, чтобы только принять соединения локальной сети?

Команда lsof (уже упомянутый в нескольких ответах) скажет Вам, какой процесс имеет файл, открытый в то время, когда Вы выполняете его. lsof доступно для примерно каждого варианта Unix.

lsof /path/to/file

lsof не скажет Вам о файле, которые были открыты две микросекунды назад и закрылись одну микросекунду назад. Если необходимо наблюдать конкретный файл и реагировать, когда к нему получают доступ, Вам нужны различные инструменты.

Если можно запланировать немного заранее, можно поместить файл на файловую систему LoggedFS. LoggedFS является сложенной файловой системой FUSE, которая регистрирует все доступы к файлам в иерархии. Регистрирующиеся параметры высоконастраиваемы. FUSE доступен на всех главных нельдах. Вы захотите зарегистрировать доступы к каталогу, где файл создается. Запустите с обеспеченного демонстрационного конфигурационного файла и настройте его согласно этому руководству.

loggedfs -l /path/to/log_file -c /path/to/config.xml /path/to/directory
tail -f /path/to/log_file

Много нельдов предлагают другие контрольные средства. В соответствии с Linux, можно использовать относительно новую контрольную подсистему. Нет большой литературы об этом (но больше, чем о loggedfs); можно запустить с этого учебного руководства или a немногие примеры или только с auditctl страница справочника. Здесь, должно быть достаточно удостовериться, что демон запускается, затем выполняется auditctl:

auditctl -w /path/to/file

(Я думаю, что более старым системам нужно auditctl -a exit,always -w /path/to/file) и наблюдайте журналы в /var/log/audit/audit.log.

18
08.06.2018, 09:01
4 ответа

С ядром, iptables абсолютно пустой (iptables -F), это сделает то, что Вы спрашиваете:

# iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j DROP

Это говорит, что всем адресам локальной сети позволяют говорить с портом TCP 22, что localhost получает то же соображение (да, 127.* не всего 127.0.0.1), и пакеты от любого адреса, не соответствующего тем первым двум правилам, просто заскакиваются битоприемник. Можно использовать REJECT вместо DROP если Вы хотите активное отклонение (TCP RST) вместо того, чтобы делать порт TCP 22 черная дыра для пакетов.

Если Ваша LAN не использует 192.168.0.* блок, необходимо будет естественно изменить IP и маску на первой строке для соответствия схеме IP LAN.

Эти команды не могут сделать то, что Вы хотите, если Ваш брандмауэр уже имеет некоторые настроенные правила. (Скажите iptables -L как базируются для обнаружения.), Что часто происходит, то, что одно из существующих правил захватывает пакеты, которые Вы пытаетесь отфильтровать, так, чтобы добавление новых правил не имело никакого эффекта. В то время как можно использовать -I вместо -A с iptables управляйте для соединения новых правил в середину цепочки вместо того, чтобы добавить их, обычно лучше узнать, как цепочки заполняются на начальной загрузке системы, и измените тот процесс, таким образом, новые правила всегда устанавливаются в правильном порядке.

RHEL 7 +

В недавних системах типов RHEL, лучший способ сделать, который должен использовать firewall-cmd или его эквивалентный GUI. Это говорит ОС firewalld демон, что Вы хотите, который является тем, что на самом деле заполняет и управляет тем, через что Вы видите iptables -L.

RHEL 6 и ранее

В более старых системах типов RHEL самый легкий способ изменить цепочки брандмауэра при упорядочивании вопросов состоит в том, чтобы отредактировать /etc/sysconfig/iptables. GUI ОС и инструменты брандмауэра TUI довольно упрощенны, поэтому после того как Вы начинаете добавлять более сложные правила как это, лучше вернуться к старым добрым файлам конфигурации. Остерегайтесь, после того как Вы начинаете делать это, Вы рискуете терять свои изменения, если Вы когда-либо используете инструменты брандмауэра ОС для изменения конфигурации, так как она не может знать, как иметь дело с правилами ручной работы как они.

Добавьте что-то вроде этого к тому файлу:

-A RH-Firewall-1-INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 22 -j DROP

Где Вы добавляете, что это - хитрый бит. Если Вы находите строку в том файле, говорящем о --dport 22, просто замените его этими тремя строками выше. Иначе это должно, вероятно, пойти перед первой существующей строкой, заканчивающейся в -j ACCEPT. Обычно необходимо будет получить некоторое знакомство с путем iptables работы, на которой точке корректная точка вставки будет очевидна.

Сохраните тот файл, затем скажите service iptables restart перезагружать правила брандмауэра. Обязательно сделайте это, в то время как вошли консоль, в случае, если Вы толстый палец редактирования! Вы не хотите блокировать себя из своей машины, в то время как зарегистрированный по SSH.

Подобие командам выше не является никаким совпадением. Большая часть этого файла состоит из аргументов iptables команда. Различия относительно вышеупомянутого то, что iptables команда отбрасывается и INPUT цепочечное имя становится RHEL-конкретным специальным предложением RH-Firewall-1-INPUT цепочка. (Если Вы будете хотеть исследовать файл более подробно, то Вы будете видеть ранее в файле, где они по существу переименовали INPUT цепочка. Почему? Не мог сказать.)

24
27.01.2020, 19:46

Инструмент низкого уровня для установки брандмауэра в соответствии с Linux является iptables. Существуют также высокоуровневые доступные инструменты. Я не знаю, имеет ли Научный Linux рекомендуемый инструмент брандмауэра.

Согласно этой веб-странице (я не проверил, что она относится 6.1), service iptables save сохранит текущие правила брандмауэра, и эти сохраненные правила загружаются во время начальной загрузки. Таким образом, необходимо установить правила, Вы хотите через iptables команды (или любые другие средства), затем выполненный service iptables save сделать Вашу установку персистентной.

Сообщение в блоге Scott Pack является запуском для отбрасывания “чудных” пакетов, которые не обычно необходимы и имеют высокий риск того, чтобы быть частью нападения. Кроме того, Вы захотите закрыть все входящие порты, и открыть только тех Вам нужно. Что-то вроде этого:

# Accept everything on the loopback interface
iptables -A INPUT -i lo -j ACCEPT
# Accept ICMP
iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
# Drop oddball packets
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -f -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
# Accept packets that are part of established connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Accept selected incoming connections, e.g. ssh from 10.0.42.x
iptables -A INPUT -p tcp --dport 22 -s 10.0.42.0/24 -j ACCEPT
# Reject incoming connections that aren't explicitly accepted
iptables -A INPUT -j REJECT
5
27.01.2020, 19:46
  • 1
    Gilles, разве Вы не неправильно читали вопрос немного? Я понимаю, что поле Scientific Linux является одним из компьютеров на LAN, но не брандмауэра. –  rozcietrzewiacz 31.08.2011, 01:49
  • 2
    @Gilles Да, поле является одним из компьютеров на LAN. –  hpy 31.08.2011, 01:51
  • 3
    @rozcietrzewiacz я понимаю, что брандмауэр находится на той же машине как сервер. Я соглашаюсь, что вопрос неоднозначен в некоторой степени, но так как penyuan только упомянул ОС одной машины, я предполагаю, что все происходит на той машине. Иначе это не было бы вопросом о Unix, это будет underspecified сетевым вопросом об администраторе. –  Gilles 'SO- stop being evil' 31.08.2011, 01:52

Предпочтительный способ сделать это с iptables. Выглядит, как будто это было соответственно перепето другими, таким образом, только для полноты, я укажу на альтернативный метод управления доступом, который доступен многим демонам на большинстве дистрибутивов Linux. Тот метод управления доступом предоставлен libwrap библиотека.

Проверять, имеет ли Ваш любимый демон libwrap поддержка, попытайтесь выполнить следующее:

ldd `which sshd` | grep libwrap

Если Вы получаете непустой результат, такой как

libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f84e7b0e000)

затем Вы определенно хороши для движения.

Это - почти уверенность что Ваш sshd демон действительно имеет libwrap поддержка, и таким образом, это должно консультироваться /etc/hosts.allow и /etc/hosts.deny файлы для управления доступом. Принятие Вашей локальной локальной сети 192.168.100.0/24, можно запретить доступа к sshd всем клиентам кроме тех, которые на локальном хосте или на локальной LAN путем помещения следующего в Ваш /etc/hosts.deny файл:

sshd: ALL EXCEPT 127.0.0.0/255.0.0.0, [::1]/128, 192.168.100.0/255.255.255.0

Обратите внимание, что этот метод на самом деле не открывает или закрывает порты по сути. Это просто говорит демонам, которые используют этот метод управления доступом, принять ли или отклонить попытки подключения от клиентов, которые соответствуют данному шаблону (шаблонам).

Для полных деталей проверьте страницы справочника, начиная с hosts_access(5).

1
27.01.2020, 19:46

Если бы у Вас есть свой собственный основанный на Linux брандмауэр, Вы лучше всего установили бы iptables, поскольку другие описывают здесь. Если не и брандмауэр Ваш маршрутизатор, то по всей вероятности конфигурация по умолчанию уже предотвращает доступ снаружи, если Вы явно не включаете перенаправление портов (как я недавно описал в ответе на этот вопрос).

Для дополнительной безопасности, выше которой, можно использовать отдельную подсеть для В СОЕДИНЕНИЯХ LAN. Для этого для каждого компьютера добавляют второй IP-адрес, который использовался бы только в LAN а не маршрутизатором. Скажем, целая LAN теперь использует 192.168.0.xxx адреса и маршрутизатор (шлюз, брандмауэр) 192.168.0.1. Поэтому добавьте второй адрес для каждого компьютера - например:

ifconfig eth0:0 192.168.5.1/24

Затем, редактирование sshd конфигурация для использования только этого адреса (так, чтобы это не позволяло бы продвигающиеся соединения 192.168.0.xxx) - редактирование /etc/ssh/sshd_config и измените ListenAddress к тому Вашей новой подсети (192.168.5.1 в вышеупомянутом примере).Именно! Если Вы не настраиваете шлюз для маршрутизации коммуникации той подсети, он должен быть разделен от внешней стороны.

1
27.01.2020, 19:46

Теги

Похожие вопросы