Редактирование файла, если он не является исполняемым

( Признаюсь, я не понимаю всех настроек переключателей, но это не относится к вопросу.)

Ваше текущее правило в filter/INPUT запрещает пакетам от eth1.10 достигать IP-адресов, принадлежащих маршрутизатору , отличных от 192.168.10.0/28, поэтому оно действительно имеет предполагаемый эффект, заключающийся в запрете IP-адресов, исходящих от eth1..10 для доступа к 192.168.1.1.

  • Зачем это нужно?

    Это связано с тем, что система Linux с несколькими интерфейсами будет рассматривать свои IP-адреса как пул и может использовать любой из своих IP-адресов на любом из своих интерфейсов. Здесь не используется маршрутизация (переадресация ). Единственный известный мне метод решения этой проблемы — iptables ' filter/INPUT.

  • Как избежать необходимости указывать IP-адреса в этом правиле, чтобы сделать его несколько общим?

    Существует специальное совпадение iptables -extensions , которое может помочь, но его нужно использовать дважды в дополнительной цепочке для логического склеивания:addrtypeс его --limit-iface-inи без него. вариант. Таким образом, вы можете заменить свое правило и иметь правило, зависящее только от имени интерфейса:

    iptables -N dropotherlocalips
    iptables -A dropotherlocalips -i eth1.10 -m addrtype --dst-type LOCAL --limit-iface-in -j RETURN
    iptables -A dropotherlocalips -i eth1.10 -m addrtype --dst-type LOCAL -j DROP
    iptables -I INPUT -j dropotherlocalips
    

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

    Обратите внимание: если вы хотите, чтобы это правило было более общим и работало на любой стороне, вы можете просто удалить -i eth1.10в dropotherlocalips:

    iptables -A dropotherlocalips -m addrtype --dst-type LOCAL --limit-iface-in -j RETURN
    iptables -A dropotherlocalips -m addrtype --dst-type LOCAL -j DROP
    

    это, кроме того, предотвратит эхо-запрос со стороны eth1192.168.10.1.

I want to completely isolate the network 192.168.1.0 from 192.168.10.0...

Вы должны (но вы уже это сделали, не так ли? )также добавьте для этого правило filter/FORWARD, например:

iptables -I FORWARD -i eth1.10 -d 192.168.1.0/24 -j DROP

Я не вижу здесь, как избежать указания LAN в правиле, если только eth1.10 не запрещает любой пункт назначения, но тогда его вообще не нужно было бы маршрутизировать. Или FORWARD может иметь политику DROP и разрешать только маршрутизацию/переадресацию, явно прописанную в правилах.

С этими правилами 192.168.1.0/24 полностью недоступен на уровне IP из eth1.10, включая 192.168.1.1.


ДОПОЛНИТЕЛЬНО, для придирки:ARP все еще может сообщить о существовании 192.168.1.1 из локальной сети eth1.10.

Приведенные выше правила не помешают хосту, находящемуся за eth1.10–, узнать (, например, путем грубого -принудительного сканирования )существования 192.168.1.1 посредством ARP, который не фильтруется iptables . Это по-прежнему происходит из-за того, что Linux рассматривает все свои IP-адреса как пул даже при ответе на объяснение ARP (в настройке по умолчанию arp_filter, но см. также нижеarp_announceиarp_ignore). Таким образом, используя arping из системы Linux в 192.168.10.0/28 (, поступающую на маршрутизатор eth1.10 )с интерфейсом eno1 (, измените имя):

$ ping -c2 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.

--- 192.168.1.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 10ms

$ ip neighbour
192.168.10.1 dev eno1 lladdr b6:f2:aa:82:21:d4 REACHABLE
$ arping -c2 -I eno1 192.168.1.1
ARPING 192.168.1.1 from 192.168.10.10 eno1
Unicast reply from 192.168.1.1 [B6:F2:AA:82:21:D4]  0.552ms
Unicast reply from 192.168.1.1 [B6:F2:AA:82:21:D4]  0.552ms
Sent 2 probes (1 broadcast(s))
$ 

Поскольку MAC-адрес тот же, это означает, что 192.168.1.1 находится на узле 192.168.10.1 :маршрутизатора.

Минимальная настройка, позволяющая избежать этого (, когда нет сложной конфигурации маршрутизации, требующей arp_filter), будет на маршрутизаторе :

.

echo 1 > /proc/sys/net/ipv4/conf/eth1.10/arp_ignore=1

(илиsysctl -w net.ipv4.conf.eth1/10.arp_ignore=1)

То есть изarp_ignore:

1 - reply only if the target IP address is local address configured on the incoming interface

В качестве альтернативы вы можете использовать arp_filter=1(, что имеет смысл только в том случае, если вы уже используете ip ruleи дополнительные таблицы, потому что вам, вероятно, придется в любом случае )или даже фильтровать запросы ARP с помощью arptables, чтобы предотвратить это.

1
21.04.2021, 02:50
1 ответ

Ваш файл secretinfo.txtимеет длину 81 символ. Когда вы catего содержимое, отображается только небольшая его часть.

Одна из причин может заключаться в том, что в нем несколько строк 4565, и вы подставляете скрытую, а не отображаемую. Таким образом, попробуйте заменить все возможные строки, а не только первую из каждой строки:

sed -i ‘s/4565/1111/g’ /var/SensitiveData/secretinfo.txt

Другая причина может состоять в том, что между отображаемыми символами есть невидимые символы. Попробуйте команду hd(hexdump), чтобы выяснить точное содержимое файла secretinfo.txt. Только тогда вы сможете создать соответствующую команду sed.

Кстати, не делайте этого:

cat /var/SensitiveData/secretinfo.txt | sed -i ‘s/4565/1111/’ > /var/SensitiveData/secretinfo.txt

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

Во-вторых, опция -iтребует, чтобы в качестве аргумента был указан файл, и команда не выводит результат, поэтому ваше перенаправление просто очищает файл.

0
28.04.2021, 22:51

Теги

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