Шукати в цьому блозі

пʼятницю, 30 жовтня 2009 р.

Быстрая установка и настройка lighttpd на Ubuntu server 9.04 + SSL

Возникла необходимость поднять легкий(на слабом компьютере) веб-сервер с поддержкой SSL.
Был выбран lighttpd с установкой на имеющиюся платформу на базе ОС Ubuntu Server Edition 9.04 (Jaunty Jackalope).

Установка веб-сервера:
sudo apt-get install lighttpd

Для поддержки SSL:
sudo apt-get install openssl

Создаем каталоги, назначение которых буде указанно позже при конфигурации веб-сервера:


sudo mkdir -p /var/www/Abase/
sudo mkdir -p /var/www/Abase/cgi-bin/
sudo mkdir -p /var/www/Abase/cgi-bin/.access
sudo mkdir -p /etc/lighttpd/certs
sudo mkdir -p /var/www/log.Abase
sudo chown www-data:www-data /var/www/log.Abase
sudo chmod 755 /var/www/log.Abase



Редактируем файл конфигурации:

cd /etc/lighttpd
vim lighttpd.conf


lighttpd.conf

Подключаемые модули:
server.modules = (
"mod_access",
"mod_alias",
"mod_accesslog",
"mod_compress",
"mod_cgi",
"mod_auth",

)


Указываем корень сервера и лог-файлов:

server.document-root = "/var/www/Abase/"
server.errorlog = "/var/log/lighttpd/error.log"
accesslog.filename = "/var/log/lighttpd/access.log"


Указываем файлы, которые будут подставляться, в качестве индексных файлов:
index-file.names = ( "index.cgi", "index.html",
"index.htm", "default.cgi",
"index.shtml" )



Описываем правила для CGI скриптов (в моем случае-это скрипты написанные на Perl):

static-file.exclude-extensions = ( ".cgi",".pl" )

cgi.assign = ( ".pl" => "/usr/bin/perl",
".cgi" => "/usr/bin/perl" )

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


Описываем авторизацию при доступе к серверу, в даном случае от корня и всем разрешенным пользователям:
auth.debug = 2
auth.backend = "plain"
auth.backend.plain.userfile ="/var/www/Abase/cgi-bin/.access/.lpassword"
auth.require = ( "/" => (
"method" => "basic",
"realm" => "Password protected area",
"require" => "valid-user"
)
)


Назначаем порт, на котором будет работать сервер, если эта инструкция за комментирована, то по-умолчанию порт 80.
server.port = 8080


SSL инструкции:

$SERVER["socket"] == ":443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/lighttpd/certs/lighttpd.pem"
server.document-root = "/var/www/Abase/"
server.errorlog = "/var/www/log.Abase/Abase.error.log"
accesslog.filename = "/var/www/log.Abase/Abase.access.log"
}


UID от которых будет работать lighttpd:
server.username = "www-data"
server.groupname = "www-data"



Lighttpd по-умолчанию разрешает листать все каталоги от корня и показывать все вложенные файлы. Поэтому введем некоторые ограничения на каталоги /cgi-bin/.access/ и /cgi-bin/, а именно запретим листание и показ файлов начинаемых с точки:

$HTTP["url"] =~ "^/cgi-bin/.access/($|/)" {
dir-listing.activate = "disable",
dir-listing.hide-dotfiles = "enable"
}
$HTTP["url"] =~ "^/cgi-bin/($|/)" {
dir-listing.activate = "disable",
dir-listing.hide-dotfiles = "enable"
}


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

Небольшое отступление от параноика, я всегда думаю, о том что-то упустил в настройках по безопасности, потому в каталоге /var/www/Abase/cgi-bin/ разместил индексный файл с редиректом на корень, вот его листинг:

cat /var/www/Abase/cgi-bin/default.cgi

#!/usr/local/bin/perl
use CGI;
my $query = CGI->new();
print $query->redirect('/')


Создание сертификатов.
Конечно, если Вы работаете в большой солидной компании, но лучше прикупить сертификатов, но в частном случае можно сгенерировать и свои:

cd /etc/lighttpd/certs
openssl req -new -x509 -keyout lighttpd.pem -out lighttpd.pem -days 365 -nodes
chmod 400 lighttpd.pem


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

Создаем файл, где будут хранится списки разрешенных пользователей и их пароли:
cat > .lpassword
username1:username1password
username2:username2password
username3:username3password

^D
Добавили три пользователя username1, username2, username3 с паролями username1password, username2password, username3password.

sudo chown root:www-data /var/www/Abase/cgi-bin/.access
sudo chmod 750 /var/www/Abase/cgi-bin/.access
sudo chown root:www-data /var/www/Abase/cgi-bin/.access/.lpassword
sudo chmod 640 /var/www/Abase/cgi-bin/.access/.lpassword



Теперь редактировать файл пользователей Вы сможете только указав прямую ссылку на файл:
sudo vim /var/www/Abase/cgi-bin/.access/.lpassword


Перезапускаем наш веб-сервер:
/etc/init.d/lighttpd restart

Проверяем в браузере.

источник 1
источник 2

Немає коментарів: