Администрирование сети компьютеров с Ubuntu через web-интерфейс

Не так давно я принялся за довольно трудный, длительный и, как оказалось, не до конца возможный в реализации проект перевода информационной инфраструктуры предприятия с одноранговой безсерверной сети Windows в сеть Ubuntu с централизованным управлением.

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

На ПК пользователей — Ubuntu 10.04 и стандартный набор программ — архиваторы, кодеки, документоридеры, переводчик, браузеры, скайп, клиент удаленного рабочего стола Remmina. По протоколу RDP пользователи подключаются к серверу терминалов Windows 2003 (который я выше назвал сервером приложений) и в терминальных сессиях работают с приложениями, которые оказалось не так просто заменить аналогами из мира Ubuntu: 1С-бухгалтерия, клиент Лига-закон, MS Office, Me-doc, некоторые клиентбанки. Интернет на сервере приложений запрещен и закрыт фаерволом. Набор каталогов с разрешениями на запись и исполнение для каждого пользователя (группы, если их несколько) четко ограничен. Для прироста файлов от каждого пользователя на дисках выделено по 1-2 Гб места, и основной файловый сервер вынесен на отдельный примитивный файловый сервер Ubuntu и настроена samba. Для каждого пользователя в samba заведен личный каталог и заведен каталог с возможностью для записи для каждой пары пользователей. На файловом сервере и на сервере приложений заведены одинаковые пользователи с одинаковыми паролями, на каждом из компьютеров пользователя заведен только один пользователь и админ. Это дает возможность присоединить расшаренные на файловом сервере каталоги к серверу приложений как сетевые диски (для каждого пользователя сервера приложений эти диски свои), а на локальные ПК пользователей монтировать эти каталоги через файл fstab. Шлюз благополучно работает под управлением FreeBSD, на котором настроен ipfw, natd, squid, sams, dhcpd.

Так вот, в процессе настройки и управления получившейся сетью ПК с Ubuntu мне очень часто приходится делать однотипные задачи типа заведения, удаления пользователя на сервере и на локальном ПК пользователя, создание и удаление общих каталогов на сервере и подключение их на компьютерах пользователей, мониторинг актуальности версий установленных у пользователей приложений, многоразовый запуск, остановка и перезапуск различных сервисов на сервере и на ПК пользователей, шаблонная правка одних и тех же конфигов, в общем все то, что делается после ssh admin@remotePC. В поисках автоматизации всех этих рутинных действий был найден Webmin, но, к сожалению, либо я не разобрался, как с его помощью управлять всем, что мне нужно на серверах и ПК пользователей, либо Webmin этого пока не умеет. Отдельные скрипты, во множестве встречающиеся на разных форумах использовать не очень хотелось, поэтому немного поразмыслив, я придумал как можно своими силами большинство задач, выполняемых при администрировании своей сети упростить и сделать доступными даже секретарше.

1. На ПК с реальным IP (либо с нереальным, но тогда на шлюзе нужно пробрасывать порт на нужный адрес внутри сети) ставится apache, запускаемый далее от имени пользователя с правами суперпользователя (правка httpd.conf) — назовем его условно admin.

2. Этот же пользователь admin заводится на всех ПК сети.

3. Генерируется пара ключей для безпарольного доступа по ssh с сервера, где стоит apache, к любому ПК локальной сети.

4. Далее в файле /etc/sudoers каждого локального ПК нужно дописать строки типа: admin ALL = (ALL) NOPASSWD: ALL — это уберет запрос подтверждения принадлежности группе суперпользователей, и уберет необходимость использования expect скриптов.

5. В apache заводится виртуальный хост, куда вешается сайт с кнопками, типа echo 'ssh admin@remotehost 'sudo service smbd restart'' или echo 'ssh admin@remotehost 'sudo apt-get upgrade'' и другими, добавляемыми и программируемыми по необходимости Т.е. мы получаем для любого устройства, на котором есть интернет и web-браузер возможность управления сервисами сервера и локальных ПК, их конфигами, монтированием и размонтированием файловых систем, и вообще всем, что позволено делать по ssh — т.е. всем! Остается только завести базу наших пользователей и ПК и запрограммировать необходимые функции по нажатию кнопок нашего примитивного сайта-админки. И, желательно, доступ к сайту-админке настроить с использованием ssl, для пущей верности.
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 60

    +1
    По поводу ведения учеток по убунту: а не проще на самбе поднять домен и сделать на убунту авторизацию через pam_winbind?
      +3
      или ldap и pam_ldap
        0
        Пробовал делать такую связку LDAP -> машины с убунтами… В принципе всё работает, но машины очень «доменнозависимые» становятся. Если пропадает связь до PDC (домена), то все машины «колом» встают, и работать на них нереально… Плюс общая скорость работы когда ubuntu авторизуется через ldap заметно ниже чем standalone-версия (проверенно на практике)
          0
          А как вообще убунты работают c LDAP? Какие преимущества кроме централизованного логина и удобного шаринга папок это дает?
            0
            В ldap можно хранить что угодно, настройки приложений и т.п. Дергать эти настроечки можно стартовыми скриптами. А домен поднимать нет необходимости, можно просто LDAP сервис поднять.
              0
              Ну ещё можно добавить централизованный backup и обмен сообщениями, но даже перечисленных Вами преимуществ более чем достаточно, когда сеть начинается от 100 машин.
            0
            спасибо за совет, обязательно попробую применить, но заводить домен для 15-20 пользователей пока не было надобности. Разве только для эксперимента и дальнейшего изучения.
              0
              Я вообще стрелляюсь. У нас централизовали контроллер домена. Если нет с ним связи сеть медленно начинает деградировать. Управлять тоже сетью просто невозможно, т.к. то там доступа нет, то там. К тому же даже пользователи в одном кабинете оказываются в 3-4 разных группах, т.к. одни числятся в областном центре, вторые и третьи в другом городе и разных группах и четвёртые уже местные.
              P.S. К сожалени AD. В любом случае что-то централизовать на количестве ПК до 30 штук не вижу смысла.
            –8
            <trolling>Конечно — намного проще, чем остаться на виндах и развенуть AD</trolling>
              0
              Вы не представляете насколько такое решение облегчает жизнь эникею (или админу, которому приходится быть эникеем).
              А причины могут быть разные.
                –1
                Облегчает сильнее, чем AD с групповыми политиками в виндовой сети?
                  +3
                  Хватит троллить, здесь не сравнивают AD и самбу, а обсуждают управление линуксовыми машинами.
                    +6
                    Я о тормозах, зависаниях и постоянных ребутах на каждый чих, которые затрудняют работу людей из отдела продаж. Имеется в виду лицензионный Windows 7 с включенным обновлением.

                    Опыт работы в конторе, где «все на линаксах» показал, что эникею там вообще делать почти нечего.

                    Вы хотите об этом поговорить? Я не очень.

                      +2
                      А вы не пробовали машинки в нерабочее время обновлять? Для этого есть такие штуки, как wake on lan, например… или вы думаете, что под Linux secuirty-патчи прямо в реальном времени применяются?

                      В общем, причина высосана из пальца. Тем более странно, что в вашем офисе нет бухгалтерии с 1С, клиент-банками и криптопро, а также менеджеров, использующих excel-листы с макросами, площадок для элекронных торгов, открывающихся только в IE версии 6.0, рабочего места секретаря с вентафаксом и проприетарной софтиной для управления АТС. А ещё почти наверняка есть охранник, который смотрит на картинку с камер видеонаблюдения (Videoguard, например), сынишка директора, которому нужно поиграть в крузис, дизайнер, которому нужен фотошоп и торгового партнера, который притащил презентацию в поверпоинт.

                      Да и если сравнивать офисную работу в Linix и Windows, то невольно приходится сравнивать офисные пакеты и средства выгрузки документов в них. И в процессе этих размышлений мне представляется такое невероятное количество геморроя, что боевые мысли по поводу Linux на десктопах благополучно развеиваются.

                      А шлюз, файловый сервер, IP-телефония, бэкапы, почта — всё на Ubuntu Server стоит себе, и никаких проблем. Такие дела.
                        0
                        Извиняюсь за дикое количество опечаток и пропущенных запятых — у меня винда упала, переустанавливал просто наболело уже (с).
                          0
                          В текущей конторе у меня Windows на рабочих станциях и я понимаю зачем оно там. Так что, вы зря негодуете. :)
                          Но свалить все на терминальный сервер, как у автора статьи — заманчивая идея.

                            0
                            Тоже есть ньюансы, проброс usb к примеру. Флешки еще ходо бедно можно монтировать, а вот работать с со всякими rutokenами или принтерами со сканерами, для которых нет нормальных линуксовых дров (например canon), невозможно. Аппаратных usb over ip не напасешся. Свободный usbip сыроват. У самого офис на thinstation и терминале, поэтому говорю не понаслышке.
                              0
                              Как недавно прочитал:
                              Canon и терминальный сервер — несовместимы
                          0
                          Вообще то, нормальные люди в три клика настраивают обновления машин в не рабочее время.
                            0
                            А переустановку винды они тоже в нерабочее время делают, чтобы перестала тормозить «от старости»?
                        0
                        Вот тут вчера топик промелькнул. Про инвентаризацию компов в сети с помощью PowerShell. В котором человек приводил какие-то многоэтажные скрипты на этом самом повершелле для того, чтобы узнать, что за процессоры / диски / память стоят у него на компах в сети. Молодец человек, но дело не в этом.
                        Дело в том, что к тому топику нет ни одного комментария, в котором бы было написано «это три строки на bash, виндовз — мастдай». Нет таких комментов. Потому что люди занимаются всоим делом, изобретают что-то делятся с единомышленниками — дак за раби бога! Что им мешать-то?
                        И стоит появиться топику про администрирование Linux-сетей — как тут же появляется System32 сотоварищи и начинается «На виндовз все гораздо легче! Линкус — говно! AD наше все!»
                        System32, ты — тролль. У меня монитор весь жирный от твоих высказываний уже.
                          0
                          > Вот тут вчера топик промелькнул. Про инвентаризацию компов в сети с помощью PowerShell. В котором человек приводил какие-то многоэтажные скрипты на этом самом повершелле для того, чтобы узнать, что за процессоры / диски / память стоят у него на компах в сети

                          А мог бы поставить SCCM — и сделать все за пару кликов мыши.

                          > И стоит появиться топику про администрирование Linux-сетей — как тут же появляется System32 сотоварищи

                          Между прочим, за некоторыми линукс-фанатами подобные грешки тоже числятся. Я лишь пытаюсь вышибить клин клином — уравновесить линукс-пропаганду своей пропагандой.

                          > System32, ты — тролль. У меня монитор весь жирный от твоих высказываний уже.
                          Я, между прочим специально поставил тег trolling — чтобы вы могли настроить фильтр и сохранить мониторы в чистоте :)
                  +2
                  Интересная схема. Можно только пару вопросов:
                  1) адресация статитчная или dhcp?
                  2) количество пользователей/компьютеров?

                  Со своей стороны могу поделиться решением по удалённому управлению linux-машин в локальной сети. У нас на работе (примерно 350 машин) на сотне стоит ubuntu. IP-адреса выдаются по dhcp. На каждом системнике написан hostname маркером (вида «news-01»). По запуску ubuntu стартует скрипт, который скидывает на сервер время входа, hostname, логин… Таким образом узнаю на каком ip-шнике какая машина сидит, у всех включено дефолтное vnc. Подключаюсь — правлю проблему.

                  Если понадобится скрипт такой — могу скинуть.
                    0
                    1) адресация конечно же dhcp с привязкой по маку. Все знакомые устройства разбиты на группы, всем новым выдается адрес из выбранного диапазона.
                    2) количество пользователей в разные времена варьирует, но всегда было в диапазоне 10-50. Т.е. масштабы не велики.
                    За предложение со скриптом спасибо, но думаю у меня пока хватает желания и умений пилить что-то самому, а вот от идей по автоматизации или идей по устройству процессов автоматизации — от этого не откажусь!
                    +1
                    Относительно недавно делал проект офисной сети для друзей, тоже обсуждалась возможность посадить людей за убунты, а частьсофта вынести в терминалки. В итоге решили что сопровождать и обучать сотрудников будет слишком проблемно для местных админов.

                    Решение принято следующее, почти всех пользователей посадили за тонкие клиенты (HP T5000 старенькие) + wtware и кластер из двух Hyper-V и iscsi на дебиане. преимуществ из этого вышло масса:
                    1. энергоптребление тонкого клиента в несколько раз меньше чем у полноценного компа (бесперебойник дольше держит и затраты на электроэнергию ниже)
                    2. в случае сбоя питания, работу не нужно делать заново после восстановления питания пользователь продолжает работу с того же места
                    3. удобство администрирования (админу достаточно RDP доступа на сервер терминалов)
                    4. безопасность (флешки отключены, стороннее ПО не установить и пр.)
                    5. если тонкий клиент умирает, замена ему ставится через 5-10 минут (пока аникей несет железку менть, админ правит два конфига) и пользователь продолжает работу с того же места.

                    Доступ в интернет с тонких клиентов строго по белому списку сайтов (squid) никакого NAT для них нет.
                    Ну а тем кому нужен прожордивый софт типа фотошопа и доступ на все сайты просто ставится полноценный комп (ну штук пять таких наберется из 60-ти).
                      +2
                      Как-то кустарно получается, особенно момент с апачем, у которого административные права на все и вся. Конечно если это прячется за шлюзом и фаерволом риск не велик, но все же советую посмотреть в сторону puppet и openldap.
                        +1
                        Поддерживаю!
                        Нужно смотреть в сторону более высокоуровнего решения.
                        puppet + mcollective намного упростят вам жизнь.
                        либо использовать cssh/pssh — тынц
                          +1
                          Ещё была какая-то утилита как раз для того, чтобы было проще управлять группой компов. То ли шеф, то ли кок. Что-то с поварсвом связанное. Может кто вспомнит название.
                        0
                        А почему бы вместо того чтоб пускать апач от админа не взять apache2-itk в котором только этот вхост пустить из-под админа? Либо же вообще — cgi-скрипт на котором стоит setuid.
                          0
                          Доработок можно провести массу, я в топике изложил концепцию, подход другими словами. И да, изобретение велосипеда происходит от недостатка грамотности, признаюсь (это всем тем, кто уже указал путь решения через ldap, большое спасибо).
                          +2
                          Называется chef, тут была пара статей на тему «готовки».
                            0
                            спасибо, действительно очень много материала есть по вашей ссылке, а именно вот эта статья
                            0
                            Интересная идея, но я бы не мучался с Apache, а сделал бы набор скриптов, положил бы их в папку на сервере и делал бы к примеру так sh SoftUpdate 192.168.0.50. Такой подход поможет делать однотипные действия на всех компах (засунуть IP в цикл и выполнить для каждого). Как-то так.
                              0
                              Вы не поняли «фишки». Ведь если сайт («страница с кнопками и менюшками», по-простому) доступен просто из интернета, то администрировать сеть можно с любого девайса, на котором есть браузер, просто авторизовавшись, как на любом другом сайте! Другой вопрос, что нужно проработать все типичные задачи, протестировать и отладить, но у каждого свои запросы. И да, я не претендую на статус изобретателя! Я просто высказал вариант, как можно, и какие это дает удобства.
                                0
                                А в чем проблема поставить SSH туда, где есть браузер? Да и онлайн-ssh клиентов сейчас вагон с тележкой. Но это все усложняет. А можно ведь и СМС-ки слать ;)
                                  0
                                  А если на сервер-шлюз поставить ssh, то администрировать сеть можно с любого девайса, на который можно поставить ssh клиент. А для выполнения команд на нескольких машинах есть clusterssh.
                                    0
                                    И еще один вопрос… Насколько вы уверены в безопасности самописного CGI скрипта, который выполняется аж под суперпользователем. Тут впору ограничивать доступ с одного единственного IP адреса (а не мечтать об администрировании из любого места в интернете).
                                      0
                                      hhtps не спасет?
                                        0
                                        Речь о том, чтобы закрыть доступ к скрипту. Впрочем, он у вас наверняка закрыт базовой авторизацией апача.
                                          0
                                          Кстати да, при basic авторизации пароль передается открытым текстом. Так что https в этом случае может быть и правильно применять. Просто вся схема кажется мне ненадежным велосипедом и примером, как делать НЕ надо.
                                            0
                                            Уточните ненадежное место, пожалуйста. Велосипед? Наверное таки да, но все минусы, которые до сих пор были озвучены, как то мелковаты, по сравнению с перспективой Собственного интерфейса для администрирования (громковато, правда) сети, понятного домохозяйке. И если уж совсем на чистоту, то получилось так: сначала я придумал то, что описано в топике, и лишь потом нашел и просмотрел вебмин, и только в камментах мне рассказали еще и о кухне с рецептами (chef).
                                            0
                                            Тем более если подумать, то у вас в схеме получилось одно очень узкое место. Если ПК с реальным IP, читай шлюз каким-то образом взломают (а такой вариант полностью исключать тоже нельзя), то мгновенно получат доступ ко ВСЕМ компьютерам в локальной сети.

                                            Предотвратить это можно двумя способами:
                                            а) не хранить открытые ключи ssh на шлюзе;
                                            б) генерировать ключи, защищенные паролем.

                                            Нет, это не паранойя.
                                              0
                                              Апач вешается на не 80 порт внутри сети с пробросом на шлюзе, как вариант + https, думаю, хватит. Поламать можно, наверное, все и ваша паранойя мне искренне не понятна.
                                      0
                                      А цена вопроса? Ну и количество клиентов тоже интересно.
                                      Просто в небольших сетях цена виндовых терминальных лицензий не окупает удобство использования/администрирования сервера терминалов.
                                        0
                                        Так там вроде рублей 900-1200 стоит одна лицензия конкурирующая, если не ошибаюсь.
                                          0
                                          1000 — это на подключение к серверу вообще (CAL)
                                          терминальная (RDS CAL) — в районе 3000, при чем это не отменяет наличия CAL.

                                          Плюс стоимость самого сервера терминалов. Плюс лицензии на всякие там офисы все равно по количеству юзеров покупаются…

                                          В общем, на небольших количествах машин варианты «толстый windows-клиент» или «линукс-клиент + виндовый сервер терминалов» по цене отличаются очень слабо.
                                            0
                                            Офигеть. Я думал CAL — это все виды подключений. А сервер терминалов — сама серверная винда.
                                            Умеет же эта компания за каждое шевеление мезинцем тонны $$$ рубить…

                                            Как-то звонил в Microsoft Russia, мне манагер не смог вменяемо объяснить какие лицензии мне нужны для этого.
                                              0
                                              Это еще что, так эти лицензии еще 2х типов: На пользователя или на устройство.
                                                0
                                                Это как раз самое простое. :)
                                                0
                                                Грубо говоря, есть у вас контроллер домена и десяток клиентов — на каждого надо CAL. Но вообще, для работы они не требуются, это просто бумажки, самому серверу пофиг, сколько у него клиентов.
                                                А вот терминальные лицензии активируются у MS и на сервере их фиксированное количество. Ну плюс некоторое количество временных.
                                                0
                                                Но, а если в расчет брать удобство администрирования. Админить один терминальный сервер или кучку виндовых машин — разные вещи.
                                                  0
                                                  Если эти машины в домене, то админить их несложно. А вот если нет, то приходится выдумывать черт знает что, как у автора поста.
                                            0
                                            Ставить на каждый клиентский комп webmin и заводить в кластер пробовали?
                                            А для управления локальными сервисами подойдет monit.
                                              0
                                              Я согласен, Webmin с кластером — самое простое и удобное решение.
                                              Для централизованной LDAP-авторизации и samba-домена отлично подходит Zentyal (бывший eBox), который можно установить и настроить за 30 минут.
                                              1С 8.2 уже давно нативно работает на linux.
                                              Многие «специальные» программы легко запускаются под Wine 1.3, в том числе и IE6.
                                              Автоматический учёт оборудования и софта и helpdesk легко настраивается при помощи связки GLPI и OCS Inventory 2.
                                                0
                                                > Автоматический учёт оборудования и софта
                                                Если я вас верно понял и речь идет о сборе статистики по оборудованию и процессам, а не о инвентаризации, то отлично подойдет zabbix, сделали типовой шаблон для linux, включили авто-обнаружение и в путь, тут и графики, и тригеры, информирующие о проблемах (смсками, в почту или жабер) и т.д.
                                                  0
                                                  Когда это 1С8.2 стала нативно работать под linux?
                                                    0
                                                    Таки да!
                                                      0
                                                      Это Веб Клиент для его нормальной работы нужна полная поддрежка управляемых форм в конфигураци, в УУП например в настоящее время поддержка не реализованна до конца. А для тех у кого конфигурация переписанная нужно не мало работы для програмиста чтобы заработал базовый функционал через веб клиент!

                                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                              Самое читаемое