Python CGI на микро-инстанции Amazon AWS EC2 - практический!

Как вы можете сделать экземпляр EC2 для проверки подлинности CGI из lighthttpd? Например, Python CGI?

Ну, это заняло полдня, но я получил Python cgi на бесплатном микро-экземпляре Amazon AWS EC2, используя сервер lighttpd. Я думаю, это поможет моим собратьям noobs сделать все шаги в одном месте. Вооруженный простыми шагами ниже, вам потребуется всего 15 минут!

Мой вопрос для более опытных пользователей, читающих это: Есть ли недостатки безопасности в том, что я сделал? (См. Разрешения файлов и каталогов.)

Шаг 1: Запустите свой экземпляр EC2 и ssh в него.

[Очевидно, вам нужно будет подписаться на Amazon EC2 и сохранить пар ключей в файле * .pem. Я не буду этого делать, поскольку Амазонка говорит вам, как это сделать.]

  1. Войдите в свою учетную запись AWS и запустите свой экземпляр EC2. На этом веб-сайте есть учебники по этому поводу. Обратите внимание, что размер экземпляра по умолчанию, который представляет вам Amazon, «маленький». Это не «микро», и это будет стоить вам денег. Не забудьте вручную выбрать «микро». (Micro экземпляры бесплатны только в течение первого года ...)

  2. Найдите общедоступный код DNS для вашего исполняемого экземпляра. Для этого щелкните экземпляр в верхней панели панели управления, и в итоге вы увидите поле «Public DNS», заполненное в нижней панели. (Возможно, вам придется немного поиграть.) Открытый DNS выглядит примерно так:
    ec2-174-129-110-23.compute-1.amazonaws.com

  3. Запустите консольную программу Unix. (В Max OS X он называется Terminal и живет в папке Applications -> Utilities.)

  4. cd в каталог вашей настольной системы с вашим * .pem-файлом, содержащим ваши ключевые пары AWS.

  5. ssh для вашего экземпляра EC2 с помощью команды типа:
    ssh -i <<your *.pem filename>> [email protected]<< Public DNS address >>

    Итак, для меня это было:
    ssh -i amzn_ec2_keypair.pem [email protected]

  6. Ваш экземпляр EC2 должен впустить вас.

Шаг 2: Загрузите lighttpd в ваш экземпляр EC2.

  1. Чтобы установить lighttpd, вам понадобится root-доступ к вашему экземпляру EC2. Проблема в том, что Amazon не позволит вам войти в систему как root. (Не прямо, по крайней мере.) Но есть обходной путь. Введите эту команду:
    sudo /bin/bash

  2. Системный символ подсказки изменится с $ на #. Мы не выйдем из «судо» до самого последнего шага в этом процессе.

  3. Установите приложение lighttpd (версия 1.4.28-1.3.amzn1 для меня):
    yum install lighttpd

  4. Установите библиотеки FastCGI для lighttpd (не нужно, но почему бы и нет?):
    yum install lighttpd-fastcgi

  5. Проверьте, работает ли ваш сервер:
    /etc/init.d/lighttpd start

Шаг 3. Пусть внешний мир увидит ваш сервер.

  1. Если вы теперь пытаетесь ударить свой сервер из браузера на своем рабочем столе, он потерпит неудачу. Причина: По умолчанию Amazon AWS не открывает никаких портов для вашего экземпляра EC2. Таким образом, вы должны открывать порты вручную.

  2. Перейдите на панель управления EC2 в браузере вашего рабочего стола. Нажмите «Группы безопасности» на левой панели. В правой верхней панели появится одна или несколько групп безопасности. Выберите тот, который был назначен вашему экземпляру EC2 при запуске вашего экземпляра.

  3. В правой нижней панели появится таблица с надписью «Разрешенные соединения». Всплывающее меню позволит вам выбрать «HTTP» в качестве метода подключения.

  4. Другими значениями в этой строке таблицы должны быть: tcp, 80, 80, 0.0.0.0/0

  5. Теперь удалите сервер экземпляра EC2 с рабочего стола в своем браузере. Используйте общедоступный DNS-адрес, который вы использовали ранее для входа в SSH. Вы должны увидеть общую веб-страницу lighttpd. Если вы этого не сделаете, я не могу вам помочь, потому что я такой нуб. : - (

Шаг 4: Настройте lighttpd для обслуживания CGI.

  1. Вернуться в консольную программу, cd в каталог конфигурации для lighttpd:
    cd /etc/lighttpd

  2. Чтобы включить CGI, вы хотите раскомментировать одну строку в <modules.conf> файл. (Я мог бы включить Fast CGI, но детские шаги - это лучше!) Вы можете сделать это с помощью редактора «ed» следующим образом:
    ed modules.conf

  3. Создайте каталог, в котором будут жить программы CGI. (Файл /etc/lighttpd/lighttpd.conf определяет, где это будет.) Мы создадим наш каталог в местоположении по умолчанию, поэтому нам не нужно редактировать файлы конфигурации:
    cd /var/www/lighttpd
    mkdir cgi-bin
    chmod 755 cgi-bin

  4. Почти там! Конечно, вам нужно поставить тестовую программу CGI в каталог cgi-bin. Здесьодин:
    cd cgi-bin
    ed
    a
    #!/usr/bin/python
    print "Content-type: text/html\n\n"
    print "<html><body>Hello, pyworld.</body></html>"
    .
    w hellopyworld.py
    q
    chmod 655 hellopyworld.py

  5. Перезагрузите сервер lighttpd:
    /etc/init.d/lighttpd restart

  6. Проверьте свою программу CGI. В браузере вашего рабочего стола нажмите этот URL-адрес, заменив общедоступный DNS-адрес вашего экземпляра EC2:
    http://<<Public DNS>>/cgi-bin/hellopyworld.py

    Для меня это было:
    http://ec2-174-129-110-23.compute-1.amazonaws.com/cgi-bin/hellopyworld.py

Шаг 5: Вот именно! Очистите и благодарите!

  • Чтобы выйти из команды «sudo /bin /bash», заданной ранее, введите:
    exit

  • Благодарности: Спасибо за благодарность:

    wiki.vpslink.com/Install_and_Configure_lighttpd

    www.cyberciti.biz/tips/lighttpd-howto-setup-cgi-bin-access-for-perl-programs.html

    aws.typepad.com/aws/2010/06/building-three-tier-architectures-with-security-groups.html

  • Удачи, амигос! Я прошу прощения за нетрадиционный характер этого «вопроса», но я получил так много помощи от Stackoverflow, что я очень хотел что-то вернуть.

22 голоса | спросил 3 revs, 2 users 99%
user595585
1 Jam1000000amThu, 01 Jan 1970 03:00:00 +030070 1970, 03:00:00

1 ответ


2

(Странный пост, так что, надеюсь, это будет не так странно, как ответ).

В отношении уязвимостей безопасности: считается общей плохой практикой для хранения скриптов cgi-bin в корневом каталоге документа веб-сервера. Даже W3C избегает этого в разделе «Скомпилированные языки, такие как C безопаснее ...» в их Часто задаваемые вопросы по безопасности в Интернете :

  

Рассмотрим следующий сценарий. Для удобства, вы решили   для идентификации скриптов CGI на сервере   используя расширение .cgi. Позже,   вам нужно внести небольшое изменение в   интерпретируемый сценарий CGI. Вы открываете его   с текстовым редактором Emacs и изменить   сценарий. К сожалению, редактирование   оставляет резервную копию скрипта   исходный код, лежащий в   дерево документов. Хотя удаленный   пользователь не может получить исходный код   выбирая сам сценарий, он может теперь   получить резервную копию вслепую   запрашивая URL-адрес:

    http://your-site/a/path/your_script.cgi~
     

(Это еще одна веская причина ограничить   CGI-скрипты в cgi-bin и сделать   убедитесь, что cgi-bin отделен от   document root.)

Это не такая значительная угроза, как возможность записи файла в корневом каталоге документа. Однако злоумышленник может получить исходный код cgi, разработать направленную атаку против него и использовать его в качестве шага в сервер.

Чтобы смягчить это, вы можете добавить следующие строки в lighttpd.conf (или некоторые изменения в нем), чтобы направить cgi-bin в каталог, отдельный из корня документа /var /www /lighttpd.

$HTTP["url"] =~ "/cgi-bin/" { cgi.assign = ( "" => "" ) }
alias.url = ( "/cgi-bin/" => "/usr/lib/cgi-bin/" )

Для этого требуется как cgi, так и псевдонимы для lighttpd.

ответил Chris Cheah 26 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 26 Sep 2016 04:17:00 +0300 2016, 04:17:00

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132