Действительно ли возможно не моделировать “внешний доступ” от машины Linux при разработке?

По крайней мере частично это - так система, может иметь a games группа, что определенные пользователи являются членами, и они все имеют права выполнить игры в games папка

7
21.04.2011, 10:23
4 ответа

Удаление маршрута по умолчанию должно сделать это. Можно показать таблицу маршрутизации с /sbin/route, и удалите значение по умолчанию с:

sudo /sbin/route del default

Это оставит Вашу систему подключенной к локальной сети, но без идеи, куда отправить пакеты, предназначенные за вне. Это, вероятно, не моделирует "внешний доступ" ситуация очень точно.

Можно отложить его с route add (помнящий, что Ваш шлюз, как предполагается), или просто перезапустив сети. Я просто примерил систему с NetworkManager, и уничтожение значения по умолчанию хорошо работало, и я мог восстановить его просто путем нажатия на значок панелей и перевыбора локальной сети. Возможно, что NM мог бы сделать это отдельно на других событиях, поэтому остерегаться этого.

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

8
27.01.2020, 20:15

Вы записали

Так, как я не моделирую "внешнего доступа" в моей машине разработки?

Как я "деактивирую" свой интерфейс Ethernet и повторно активирую позже без преград?

Эти два вопроса или один вопрос? Я не уверен, под чем Вы подразумеваете simulate "no external access". Однако для деактивации интерфейса Ethernet Вы могли просто сделать

#ifdown eth0
#ifup eth0

или независимо от того, что Ваше интернет-устройство. Это снизит Ваш интерфейс Ethernet и, соответственно.

5
27.01.2020, 20:15
  • 1
    Простой, безопасный, убеждающийся работать. Просто помните, что Вам, вероятно, придется повторно выполнить Вашего клиента DHCP (для рабочего стола, это может быть автоматически, или Вам, вероятно, придется нажать на апплет администратора сети и выбрать "Connect"). –  phunehehe 21.03.2011, 17:45

Вы могли выполнить свой код в виртуальной машине (Непривилегированный режим Linux, VServer, OpenVZ, VirtualBox, VMware, KVM, …), что Вы предоставляете только сетевой интерфейс только для хоста (т.е. никакая маршрутизация от VM до где угодно, но хост-машина).

Если Вы запускаете приложение как преданный пользователь appuser, можно ограничить доступ к сети того пользователя. Удостоверьтесь, что Вы имеете iptables (Ubuntu: iptables Установите iptables http://bit.ly/software-small) и iproute2 (ip команда) (Ubuntu: iproute Установите iproute http://bit.ly/software-small, iproute-документ Iproute-документ установки http://bit.ly/software-small) установленный. Затем можно использовать iptables отметить исходящий трафик от процессов, работающих как appuser, и ip rule и ip route настраивать альтернативную таблицу маршрутизации для того пользователя.

ip rule add fwmark 1 table 1
ip route add 127.0.0.0/0 table 1 dev lo
iptables -t mangle -A OUTPUT -m owner --uid-owner appuser -j MARK --set-mark 1

(Примечание: непротестированный. См. также больше пакетных примеров искажения IP Linux.)

2
27.01.2020, 20:15

Вот для чего нужны контейнеры ( https://linuxcontainers.org/ ) они немного похожи на chroot, но более тонкие, с контролем сети и другими вещами.

К сожалению, я понятия не имею, как их использовать. (Мое обучение заключалось только в том, что я знал, что они существуют, и что они примерно делают)

docker - это приложение, которое управляет контейнерами, вы не хотите делать это вручную.

1
27.01.2020, 20:15

Теги

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