Один из основных принципов компьютерной безопасности - никогда не запускать то, что вам не нужно.
Я был pgrep
пинг для процесса сегодня , когда я заметил , что мой Ubuntu 9,04 (рабочий стол) машина работает демон мерзавец сервера. После небольшой клятвы я обнаружил, что git-daemon-run
пакет был (возможно, случайно) установлен, и удалив его, избавился от этого процесса (и гарантировал, что он не будет перезапущен позже).
Но в других случаях я хочу, чтобы был установлен пакет сервера, но не хочу, чтобы работал демон сервера. Например, я использую lighttpd
для внутреннего тестирования (оно запускается специальными тестовыми сценариями для некоторых приложений и прослушивает только localhost в этих конфигурациях), но я не хочу, чтобы оно прослушивало внешние соединения с каким-то случайным файлом конфигурации. (Если бы я хотел запустить одно прослушивание для внешних подключений, я бы настроил и запустил его сам.)
Мне действительно не нравится запускать все виды случайных серверов, которые мне не нужны, на компьютерах, выходящих в Интернет, так как кто знает, какие дыры в безопасности они открывают. И я предпочитаю не лезть в брандмауэры, поскольку это еще один потенциальный источник ошибок и неправильной конфигурации, которые могут открыть дыры в безопасности. Не так сложно настроить машины Unix, чтобы они не запускали серверы, если администратор не попросил об этом; NetBSD (и я думаю, OpenBSD тоже) идут по умолчанию.
Как мне сконфигурировать мои системы Ubuntu, чтобы они никогда не запускали какой-либо серверный демон, если я специально не скажу, что хочу, чтобы он запускался?
(Просить установить пакет не является, в моей книге, просьбой запустить сервер. Если это должно быть, это ужасный пользовательский интерфейс, так как во многих установках пакета даже нет сервера для запуска, поэтому он делает слишком легко непреднамеренно запустить сервер, не осознавая, что вы это сделали.)
РЕДАКТИРОВАТЬ: Просто чтобы прояснить, проблема не в том, что я хочу иметь возможность остановить существующие серверы. Проблема в том, что я не хочу, чтобы новые серверы запускались без явного запроса. Это означает, что я должен быть в состоянии выполнить любую задачу системного администратора, например установить пакет, и быть уверенным, что ни один сервер не запущен. Большинство ответов не касаются этого вопроса.
Ответы:
Установите sysv-rc-conf и просто отключите службы, которые вы не хотите запускать.
источник
Как человек с подобной проблемой, я очень твердо убежден, что для демона не разумно предполагать, что пользователь хочет, чтобы он запускался по умолчанию: существует множество совершенно допустимых случаев использования, когда это не так. (Не говоря уже о том, что не всегда понятно, какие установки на самом деле включают в себя демон.) Демон может быть отключен по умолчанию, пользователь может получить явный запрос или может быть центральный параметр. Все остальное - рассуждения Микрософта, совершенно недостойные Linux.
Кроме того, я нахожу некоторые из приведенных выше комментариев к оригинальному постеру грубыми, покровительственными и лишенными конструктивности. Например, предположить, что он должен либо принять поведение по умолчанию, либо изменить распределение, действительно замечательно. Во-первых, ни один дистрибутив не будет идеально подходить, и переход к новому дистрибутиву со связанной дополнительной работой вряд ли будет реалистичным решением этой проблемы. Во-вторых, опытные пользователи Linux / Unix привыкли к тому, что каждое поведение может быть изменено: проблема может занять два часа без копания, но затем она решается. Для такого пользователя естественным делом, когда значения по умолчанию не подходят, является принятие обходного пути и попытка выяснить, что это такое. В-третьих, в этикете с открытым исходным кодом и свободным программным обеспечением,
If you don't like it, then patch the source code!'' is an acceptable response; however,
..., тогда походите! '' Нет.источник
Ожидается, что система упаковки при установке серверного пакета захочет запустить этот сервер. Это разумное ожидание.
Рой ответил на этот вопрос для вас. Когда вы устанавливаете новый серверный пакет, вы останавливаете этот сервер и затем используете инструмент, такой как sysv-rc-conf, чтобы предотвратить запуск этого сервера при следующей перезагрузке или изменении уровня запуска. Да, вы должны сделать некоторую работу самостоятельно, и это разумно, потому что вы настраиваете свою систему иначе, чем большинство людей, которые используют Ubuntu.
Вы должны потратить некоторое время, чтобы узнать, как настроить lighttpd так, чтобы он постоянно был настроен на прослушивание только на локальном хосте. Затем, когда вы запускаете сервер, вы знаете, что он уже настроен по вашему вкусу.
источник
Я нашел следующее полезное для установки Ubuntu в средах chroot, таких как debootstrapping новых гостей xen. На самом деле заслуга скриптов xen-tools в том, что они научили меня этому:
echo '#! / bin / sh'> /usr/sbin/policy-rc.d
echo 'выход 101' >> /usr/sbin/policy-rc.d
chmod 755 /usr/sbin/policy-rc.d
С этим сценарием apt не запустит службы после установки. Тем не менее, это только половина вашей проблемы, потому что символические ссылки все еще на месте, службы будут запущены после следующей загрузки. Я не знаю, как автоматически остановить это :(
источник
invoke-rc.d nginx rotate
в Ubuntu используется в разделе постротации. Я использую немного отличающуюся версию gist.github.com/hostmaster/7c25ef4e1e47bc3e2d71Барри Браун в комментарии к вопросу дает ключ к возможному ответу.
Система упаковки использует
invoke-rc.d
программу для запуска сервера после установки пакета. [1] Эта программа будет запущена/usr/sbin/policy-rc.d
для определения политики запуска этого сервера.Пакет
policyrcd-script-zg2
включает в себяpolicy-rc.d
сценарий, который либо запускается/etc/policy-rc.d
со своими параметрами, если таковые имеются, и завершается с кодом ошибки этого сценария, либо завершается с 0 (успех) в противном случае. Ожидается, что интерфейсpolicy-rc.d
предложит кратко документированы вinvoke-rc.d
управлении, и гораздо более подробно в/usr/share/doc/sysv-rc/README.policy-rc.d.gz
.Следующий шаг, я полагаю, для меня, чтобы проверить это.
Осталось ответить:
[1] Какие другие части системы используют
invoke-rc.d
? [2] Это действительно работает?источник
Как насчет просмотра каталогов, в которых находятся сценарии инициализации? Скорее всего, вы можете сделать эти каталоги неизменяемыми с помощью команды chatr.
источник
В идеале это вопрос
post-inst
сценариев. В начале проекта Ubuntu были предприняты преднамеренные усилия, чтобы заставить вменяемые значения по умолчанию использовать скрипты конфигурации dpkg, чтобы вам и мне не приходилось отвечать на каждый чертов вопрос, который может возникнуть, или тратить время на изучение вариантов. Теперь, когда Ubuntu настроил это, многие люди не знают о его существовании. Должна быть возможность задать вопрос о том, следует ли устанавливать как демон или нет, но я не вижу таких вопросов в нескольких проверенных мной пакетах.Возможно, вам следует сотрудничать с Ubuntu Server Team и, возможно, даже с политикой Debian, чтобы улучшить ситуацию.
источник
Вы можете попробовать создать скрипт, который проверит список установленных сервисов и проверит их по некоторому списку разрешенных сервисов. Если службы нет в списке, скрипт отключит ее. Сценарий должен быть запущен при запуске до общих служб. И, возможно, запустить как демон, чтобы закрыть недавно установленные службы. Или, если возможно, запускаться автоматически после каждой установки, чтобы проверить наличие новых сервисов.
PS Я могу вспомнить две возможные причины запуска служб после установки пакета. Это функция пакета или функция менеджера пакетов. Если это особенность пакета, я не думаю, что есть какой-то способ изменить поведение службы. Если это функция менеджера пакетов, возможно, есть какая-то опция конфигурации, чтобы предотвратить запуск службы после установки. Я не знаю сейчас, так что просто бросаю идеи.
источник
Если вы устанавливаете iptables с политикой по умолчанию DROP для цепочки INPUT, вам не нужно слишком беспокоиться о прослушивающих портах, потому что они будут заблокированы iptables. Ubuntu сервер поставляется с удобным интерфейсом для iptables, если вы новичок в iptables.
Из твоего поста мне кажется, что ты можешь быть счастливее с другим дистрибутивом Linux, таким как CentOS. Процесс установки по умолчанию для CentOS позволит вам устанавливать различные метапакеты, и, выбрав ни один из них, вы, возможно, будете более довольны базовой установкой.
Кроме того, я думаю, что ваш вопрос мог бы быть немного понятнее, если вы заменяете слово «сервер» словом «сервис» или «демон», когда имеете в виду нечто, работающее на сервере. Люди склонны использовать «сервер» для обозначения физического блока или виртуальной машины. Хотя я думаю, это технически неверно.
источник
Посмотрите, на каком уровне выполнения вы находитесь, с помощью команды 'runlevel' и удалите все символические ссылки в / etc / rc
<
runlevel> .d /. Возможно, вы захотите запустить некоторые из демонов, но большинство из них, вероятно, можно будет удалить.Вы можете добавить их обратно с помощью символической ссылки из скрипта в /etc/init.d.
Я думаю, что есть команда, которая сделает тот же трюк и добавит все символические ссылки для всех уровней выполнения, но я просто делаю это вручную.
источник
В качестве альтернативы вы можете использовать
update-rc.d
команду.Отключить
apache2
сервисРЕДАКТИРОВАТЬ:
Это поведение контролируется скриптами внутри пакетов .deb. Когда вы устанавливаете пакет, этот скрипт выполняется автоматически. IIRC, мы не можем обойти этот сценарий.
источник
По сути, вы не можете.
Если вы устанавливаете пакет, и он запускает службу, то это то, что происходит. Если вам не нравится, сообщите об ошибке на https://launchpad.net/ .
Вы не должны возиться с пакетами deb. Такие вещи могут вернуться и укусить вас в задницу позже.
Если вы хотите, чтобы в стиле OpenBSD «по умолчанию ничего не выполнялось», запустите OpenBSD. Не каждый дистрибутив подходит всем. В Ubuntu обязательно найдутся вещи, которые вам не нравятся. Если вы все еще хотите запустить Ubuntu, вам придется проверить работающие службы и отключить их.
источник
Вы можете включить и отключить некоторые службы в меню «Система»> «Службы» в GNOME.
источник