14 posts tagged

ubuntu

Настраиваем свой первый VDS сервер в роли веб-сервера №1

Добрый день.

Так уж сложилось, что последнее время пришлось достаточно часто менять VDS провайдеров, и каждый раз приходится заново настраивать систему, поэтому решил написать краткий конспект по настройке. Все нижеописанное корректно работает на ОС Linux Ubuntu server 12.04 LTS. В этой статье я опишу как установить и произвести первичную настройку nginx+apache2, eaccelerator, memcached, fure-ftpd, php, mysql, phpmyadmin а также панели управления игровыми серверами — open game panel.

Начну с краткого описания некоторых терминов.

VDS — он же VPS — Virtual Dedicated(Private) сервер — виртуальная машина, сервер — нужен он, когда обычного хостинга мало, а выделенный сервер дорого. На современном рынке провайдеров, которые предоставляют услуги по аренде VDS великое множество, и у каждого есть свои плюсы и минусы, но их мы обсуждать не будем.
Тип виртуализации — говоря простым языком это то, каким способом организована виртуальная машина. В настоящее время наиболее распространены OpenVZ и XEN. Плюс OpenVZ — низкая стоимость, так как в этом типе виртуализации для всех виртуальных машин запущенных на аппаратном сервере используется специально модифицированное ядро хост-системы. Минус этого типа виртуализации — невозможно менять параметры ядра ОС, также практически всегда присутствует оверселлинг (об это позже). А для серьезных проектов лучше использовать XEN или KVM виртуализацию — там гостевая ОС даже и не знает что она установлена на виртуальную машину, и с ОС можно делать практически все, чего душа пожелает, особенно на XEN-HWM и KVM.
Оверселлинг — провайдеры продают больше ресурсов, чем есть на самом деле. Работает это за счет того что клиенты редко используют ресурсы по тарифу на 100 процентов, но у недобросовестных провайдеров с завышенным коэффициентом оверселлинга могут наблюдаться проблемы, такие как крайне медленная работа машины или невыполнение скриптов по причине нехватки памяти. Возвращаясь к типам виртуализации на XEN и KVM оверселлинг практически невозможен технически.

Выбор хостинг-провайдера


Итак, вы решили купить услугу VDS. Как же следует выбирать провайдера. Начать следует с географии — где территориально будет располагаться ваш сервер.

Германия — плюсы: дешевые тарифы, быстрые каналы, безлимитный трафик, минусы — достаточно большая задержка до России — примерно 80мс, очень серьезно относятся к торрент трекерам, торрент клиентам, варезу и т.п.
Голландия, Канада — то же самое то и Германия, но немного дороже, но основной плюс — законодательство которое лояльнее относится к различным видам хранимой и передаваемой информации, за которую у нас по голове не гладят.
США — в большинстве своем считают трафик, большие пинги до России — в общем, не самый лучший вариант.
Россия, Украина — минимальные задержки до Российской аудитории, в большинстве случаев псевдобезлимитный трафик (снижение скорости после определенного порога или необходимость соблюдать пропорции входящего\исходящего Российского\зарубежного трафика), не самые надежные дата центры — практически в каждом периодически случаются массовые отключения сервиса на несколько часов, несмотря на три независимых электроввода, резервирование каналов интернет и дизель-генераторы.
Выбор типа виртуализации
Если позволяют ресурсы, то это однозначно KVM или XEN. Но не у всех провайдеров доступны эти типы виртуальных машин, да и денег оно стоит немного больших, нежели OpenVZ. Поэтому если ваш проект это некий сайт\два\десять с невысокой посещаемостью (примерно до 10000 уникальных хостов в день) и\или какой-нибудь ICQ чат, то OpenVZ для вас будет вполне достаточно.
Ну а если требуется выполнять какие-либо более ресурсоемкие задачи, такие как размещение игровых серверов или видеочаты лучше выбрать XEN | KVM, также эти типы виртуализации стоит выбирать, если есть необходимость создания VPN-туннелей. Здесь VPN поднять проще, чем на OpenVZ.
Настройка сервера

Далее буду рассказывать про разные фичи, которые я настраивал на своем сервере, какие-то могут быть вам полезны. Операционная систем, которую я использую – Ubuntu 12.04.1 LTS. Так как подавляющее большинство выполняющихся далее команд требуют root привилегий, а я человек ленивый то все действия я выполняю под рутом. Залогиниться сразу под рутом обычно нельзя, поэтому заходим под пользователем с правами sudo и выполняем команду sudo -s

Пересобираем ядро


Если вы выбрали OpenVZ, то можете смело пропускать эту часть статьи.
Данная процедура не даст ощутимого прироста производительности, и нужна эта процедура только для саморазвития и «потренироваться на будущее».
качаем исходники последней стабильной версии ядра с сайта kernel.org. На данный момент это версия 3.6.7

wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.6.7.tar.bz2


• Распаковываем архив

tar -xjf linux-3.6.7.tar.bz2


• Устанавливаем необходимые для компиляции пакеты

aptitude update
aptitude install build-dep linux kernel-package


• заходим в папку с исходниками и генерируем конфигурацию ядра. В нашем случае все будет проходить автоматически — в ядро будут включены только те модули, которые необходимы текущему железу. Если же вам хочется вручную сконфигурировать ядро, то прошу гуглить по запросу make config или make menugonfig.

cd linux-3.6.7
make localyesconfig


• запускаем компиляцию ядра — процесс не быстрый идет от 15 минут до нескольких часов.

fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers


• поднимаемся на каталог выше и устанавливаем пакеты

cd ..
dpkg -i linux-*.deb


• Перезагружаемся и проверяем, что ядро встало.

reboot
uname -r


• Вот и все, в вашей системе новое ядро.

Меняем часовой пояс и имя ПК


Если вы устанавливаете Ubuntu на выделенный сервер сами, то языковые и географические параметры системы вы задаете в ходе установки, но в случае с VDS у провайдера есть уже готовый образ системы, который он раскатывает на ваш сервер. И всем нам приятней видеть правильное для нашего часового пояса время на сервере.
• Итак, установим часовой пояс, для этого в консоли выполним команду

dpkg-reconfigure tzdata


• Появится псевдографический интерфейс в котором мы выберем наше расположение.
• Если вдруг (ни разу еще такого не видел) есть расхождения по дате\времени, то выполним следующую команду, в которую подставим текущие дату и время

hwclock --set --date=”11/24/2012 16:19:55“


• Чтобы изменить имя сервера, откроем файл /etc/hostname и заменим содержимое на желаемое имя сервера.

Устанавливаем nginx c бэкэндом apache2, PHP, MySQL, phpmyadmin


В этой части статьи мы установим и настроим веб-сервер, рассчитанный на большое количество соединений.

• Сначала установим стандартный «детский» набор пакетов для веб сервера.

aptitude update
aptitude install mysql-server mysql-client libmysqlclient15-dev apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-certlibapache2-mod-php5 libapache2-mod-ruby php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl phpmyadmin g++


• Нас будут просить задать пароль от MySQL, потом спросят чем обрабатывать phpmyadmin — нужно ответить то апачем, и спросят пароль от MySQL для нужд phpmyadmin
• На момент написания статьи phpmyadmin автоматически не прописывался в конфигурации apache2, вследствие чего по адресу адрес_сайта.зона/phpmyadmin мы видим ошибку 404, поэтому открываем файл /etc/apache2/apache2.conf и в конец дописываем строчку

Include /etc/phpmyadmin/apache.conf


• Включаем модули apache2

a2enmod include
a2enmod rewrite
a2enmod suexec
a2enmod ssl


• Рисуем дефолтный конфиг апача. Для этого открываем /etc/apache2/sites-available/default стираем в этом файле все и пишем следующее:

<VirtualHost *:800>
ServerAdmin твой@e-mail

DocumentRoot /home/www/адрес_сайта.зона
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order deny,allow
deny from all
allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory “/usr/lib/cgi-bin”>
AllowOverride All
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel crit

CustomLog /var/log/apache2/access.log combined

Alias /doc/ “/usr/share/doc/”
<Directory “/usr/share/doc/”>
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>



• То, что указан восьмисотый порт — это не ошибка, на стандартном для http восьмидесятом порту будет висеть nginx. Параметр DocumentRoot по неизвестным мне причинам большинство советуют указывать /var/www/…, на мой же взгляд логичнее держать важные данные в /home — проще будет настраивать резервное копирование.
• Правим файл /etc/apache2/ports.conf

NameVirtualHost *:800
Listen 800


• Копируем файл /etc/apache2/sites-available/default в /etc/apache2/sites-enabled/адрес_сайта
• Директории и файлы с конфигами лучше называть по адресам сайтов т.к. в будущем это упростит поиск нужных конфигов\директорий, например /home/www/tweedle.ru /etc/apache2/sites-enabled/tweedle.ru
• Правим файл /etc/apache2/apache2.conf — меняем значение параметра MaxClients на 20, сделать это надо в двух местах.
• Прописываем репозиторий nginx, для этого откроем файл /etc/apt/sources.list и допишем в конец

deb http://nginx.org/packages/ubuntu/ precise nginx
deb-src http://nginx.org/packages/ubuntu/ precise nginx


• Устанавливаем nginx и apache2-mod-rpaf

wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key
aptitude update
aptitude install libapache2-mod-rpaf libpcre3 libpcre3-dev nginx


• Далее настроим nginx, для этого открываем файл /usr/local/etc/nginx/nginx.conf и заменяем содержимое следующим

user www-data;
worker_processes 1;

error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 64;
access_log /var/log/nginx/access.log;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;


gzip on;
gzip_proxied any;
gzip_min_length 300;
gzip_http_version 1.0;
gzip_buffers 4 8k;
gzip_comp_level 9;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
}


include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;


• в том случае если роль веб-сервера является основной ролью вашего сервера и\или сайты имеют большую посещаемость значение worker_processes выставляем равным количеству доступных ядер ЦП, в противном случае одного процесса будет вполне достаточно
• создаем конфиг для нашего сайта /etc/nginx/sites-enabled/адрес_сайта.зона

server {
listen 80;
server_name адрес_сайта.зона;
access_log /var/log/nginx.access_log;
location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx|mp3|bsp)$ {
root /home/www/адрес_сайта.зона/;
index index.php index.html index.htm;
access_log off;
expires 30d;
}
location ~ /\.ht {
deny all;
}
location / {
proxy_pass http://127.0.0.1:800/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 60;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}
}


• устанавливаем memcached, никаких дополнительных настроек для него не требуеся

aptitude install memcached


• устанавливаем eAccelerator

aptitude install php5-dev
aptitude install make
cd /tmp/
wget https://github.com/downloads/eaccelerator/eaccelerator/eaccelerator-0.9.6.1.tar.bz2
tar xvjf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1


• теперь, прежде чем мы скомпилируем eAccelerator, поправим один баг в коде, из за которого возникают всяческие проблемы, например перестает работать авторизация в phpmyadmin. Откроем файл eaccelerator.c, строка 867. Заменим if (php_check_open_basedir(realname TSRMLS_CC)) { на if (php_check_open_basedir(p->realfilename TSRMLS_CC)) { Сохраняемся и продолжаем…

phpize
./configure --enable-eaccelerator=shared
make
make install



• Создаем папку для кэша, и даем на нее права

mkdir -p /var/cache/eaccelerator
chmod 0777 /var/cache/eaccelerator


• Настраиваем php для работы с eaccelerator, для этого откроем файл /etc/php5/apache2/php.ini и допишем сверху

[PHP]
extension = “eaccelerator.so”
eaccelerator.shm_size = “16”
eaccelerator.cache_dir = “/var/cache/eaccelerator”
eaccelerator.enable = “1”
eaccelerator.optimizer = “1”
eaccelerator.check_mtime = “1”
eaccelerator.debug = “0”
eaccelerator.filter = “‘
eaccelerator.shm_max = ‘0’
eaccelerator.shm_ttl = ‘0’
eaccelerator.shm_prune_period = ‘0’
eaccelerator.shm_only = ‘0’
eaccelerator.compress = ‘1’
eaccelerator.compress_level = ‘9’
eaccelerator.allowed_admin_path = ‘/var/www/eaccelerator’


• Перезапускаем сервисы, убедившись что в /home/www/имя_сайта лежит сайт

service apache2 restart
service nginx restart
service memcached restart


• Теперь мы имеем достаточно шустрый веб-сервер, который потребляет меньше 100Мб оперативной памяти. Todo: Есть один недочет – phpmyadmin, который доступен по адресу адрес_сайта.зона/phpmyadmin отображается некрасиво(без картинок), временное решение, которое я могу предложить – открывать phpmyadmin по адресу адрес_сайта.зона:800/phpmyadmin

Установка FTP сервера pure-ftpd с поддержкой MySQL


ФТП сервер пригодиться нам для простого и быстрого и удобного переноса информации с сервера и на сервер.
• Устанавливаем pure-ftpd с поддержкой mysql

aptitude install pure-ftpd-mysql


• Создаем группу для пользователей ftp и пользователя в ней – это делается для того чтобы впоследствии было удобней следить за тем, что происходит на вашем сервере.

groupadd -g 4001 ftpusers && useradd -u 4001 -s /bin/false -d /bin/null -c ‘pureftpd user’ -g ftpusers ftp


• Создадим базу данных в MySQL для pure-ftpd. Это можно сделать и через phpmyadmin, но великим и могучим копипастом это быстрее сделать в консоли

mysql -u root –p


CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO ‘pureftpd’@’localhost’ IDENTIFIED BY ‘пароль_для_pureftpd’;
FLUSH PRIVILEGES;


• Создадим таблицу, в которой будут храниться учетные записи фтп.

USE pureftpd;
CREATE TABLE ftpd (
User varchar(16) NOT NULL default ‘‘,
status enum(‘0’,’1’) NOT NULL default ‘0’,
Password varchar(64) NOT NULL default ‘‘,
Uid varchar(11) NOT NULL default ’-1’,
Gid varchar(11) NOT NULL default ’-1’,
Dir varchar(128) NOT NULL default ‘‘,
ULBandwidth smallint(5) NOT NULL default ‘0’,
DLBandwidth smallint(5) NOT NULL default ‘0’,
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default ‘*’,
QuotaSize smallint(5) NOT NULL default ‘0’,
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) ENGINE=MyISAM;

quit;



• Теперь настроим pure-ftpd, для этого откроем файл /etc/pure-ftpd/db/mysql.conf и сделаем его содержание таким:

MYSQLSocket /var/run/mysqld/mysqld.sock
MYSQLUser pureftpd
MYSQLPassword пароль_для_pureftpd
MYSQLDatabase pureftpd
MYSQLCrypt md5
MYSQLGetPW SELECT Password FROM ftpd WHERE User=’\L” AND status=“1” AND (ipaccess = “*” OR ipaccess LIKE “\R”)
MYSQLGetUID SELECT Uid FROM ftpd WHERE User=“\L” AND status=“1” AND (ipaccess = “*” OR ipaccess LIKE “\R”)
MYSQLGetGID SELECT Gid FROM ftpd WHERE User=“\L”AND status=“1” AND (ipaccess = “*” OR ipaccess LIKE “\R”)
MYSQLGetDir SELECT Dir FROM ftpd WHERE User=“\L”AND status=“1” AND (ipaccess = “*” OR ipaccess LIKE “\R”)
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User=“\L”AND status=“1” AND (ipaccess = “*” OR ipaccess LIKE “\R”)
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User=“\L”AND status=“1” AND (ipaccess = “*” OR ipaccess LIKE “\R”)
MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User=“\L”AND status=“1” AND (ipaccess = “*” OR ipaccess LIKE “\R”)
MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User=“\L”AND status=“1” AND (ipaccess = “*” OR ipaccess LIKE “\R”)


• Теперь сделаем так, чтобы домашняя директория пользователя автоматически создавалась если она не существует

echo “yes” > /etc/pure-ftpd/conf/CreateHomeDir


• Следующая команда не даст пользователям доступа к директориям, которые выше чем их домашний каталог.

echo “yes” > /etc/pure-ftpd/conf/ChrootEveryone


• И наконец отключим проверку хостнеймов пользователей – это значительно ускорит процесс авторизации и немного сократит количество трафика.

echo “yes” > /etc/pure-ftpd/conf/DontResolve


• Перезапустим сервис чтобы применить настройки

service pure-ftpd-mysql restart


• Теперь создадим пользователя www-ftp с GID и UID 4002, домашней директорией /home/www лимитами скорости загрузки\отдачи по одному мегабайту в секунду и без ограничений по занимаемому дисковому пространству. Приведу пример с использованием командной строки, вы же можете использовать и «выполнить SQL-запрос» в phpmyadmin, или даже воспользоваться «добавить строки» в phpmyadmin – но в этом случае нужно не прошляпить то, что пароль в БД храниться в виде его md5 хеша, и в поле password выбрать «Функция» md5

mysql -u root -p


USE pureftpd;
INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES (‘www-ftp’, ‘1’, MD5(‘пароль_для_пользователя_www-ftp’), ‘4002’, ‘4002’, ‘/home/www’, ‘1024’, ‘1024’, ‘Комментарий’, ‘*’, ‘0’, ‘0’);
quit;


• Вот и все, можно пробовать подключаться к вашему фтп серверу по адресу адрес_сайта.зона c логином www-ftp и указанным паролем.
• Если вы собираетесь передавать по протоколу ФТП данные, которые не должны попасть в чужие руки, то не лишним будет настроить TLS шифрование. Для этого выполним следующее:

echo 1 > /etc/pure-ftpd/conf/TLS
mkdir -p /etc/ssl/private/


• Устанавливаем пакет openssl, если он не установлен и генерируем сертификат.

aptitude update
aptitude install openssl
openssl req -x509 -nodes -days 3652 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem


• Отвечаем на вопросы – эти данные будут отображаться в созданном сертификате.
• Устанавливаем права доступа на сертификат и перезапускаем pure-ftpd

chmod 600 /etc/ssl/private/pure-ftpd.pem
service pure-ftpd-mysql restart


• Вот и все. Помните, что для того чтобы данные шифровались необходимо включить tls шифрование со стороны клиента, и далеко не все фтп клиенты поддерживают его.
2013   apache   http   nginx   ubuntu   vds   webserver

Настраиваем свой первый VDS сервер в роли веб-сервера №2

Установка комплекса управления игровыми серверами – Open Game Panel


Open game panel – он же OGP — единственное из мною найденных бесплатное решение, которое позволяет осуществлять мониторинг и управление разнообразными игровыми серверами. На момент написания статьи поддерживаются более 50 разных игр с серверами на платформах Windows и Linux. В том числе такие популярные как Counter-Strike (2D, 1.5, 1.6, Source, GO) и Minecraft( Vanilla, Bukkit)
Состоит комплекс из двух частей – веб-морды, через которую осуществляется мониторинг и управление(фронтэнд) и агента – сервиса, который висит на машинах с игровыми серверами и передает логи в фронтэнд, а команды из фронэнда игровым серверам.
• Первым делом регистрируемся на http://www.opengamepanel.org – для установки это не обязательно, но на сайте можно скачать дополнительные модули(например систему биллинга), темы и прочие плюшки.
• Устанавливаем необходимые пакеты

aptitude update
aptitude install libxml-parser-perl libpath-class-perl libarchive-any-perl screen


• Если система x64, то дополнительно устанавливаем ia32-libs

aptitude install ia32-libs


• Скачиваем сам агент

wget “http://www.opengamepanel.org/downloads/ogp_agent_nightly.tar.gz” -O agent.tar.gz
tar xf agent.tar.gz
cd agent


• Устанавливаем. Внимание – я предварительно создал пользователя в системе, включил его в группы root и sudo и создал ему домашний каталог – это все необходимо для того чтобы агент корректно работал.

bash ./install.sh


• У нас будут спрашивать имя пользователя под которым будет крутиться сервис – нужно указать того, про которого я говорил в предыдущем пункте, его пароль, директорию в которой будут находиться исполняемые файлы(/home/имя пользователя/OGP) и попросят ввести ключ агента – это не пароль пользователя, а ключ управления агентом, он нам пригодится позже, и еще нас попросят согласиться с правилами политики Steam.
• После установки залогиниваемся под созданным пользователем и запускаем

cd /home/имя пользователя/OGP
perl ./ogp_agent.pl --log-stdout


• Нам должны написать что все в порядке, процесс запущен и слушает на 12679 порту.
• Нажимаем ctrl+c, логинимся под рутом и прописываем – это нужно для того чтобы сервис стартовал при запуске ситемы

update-rc.d ogp_agent defaults


• Если серверов (выделенных или виртуальных) несколько, то агент необходимо установить на каждом
• Теперь установим веб-интерфейс от OGP, скачиваем архив и распаковываем

wget “http://www.opengamepanel.org/downloads/ogp_web_nightly.tar.gz” -O upload.tar.gz
tar xf upload.tar.gz


• Перемещаем содержимое папки upload в папку, в которой у нас лежит сайт
• В браузере открываем адрес_сайта.зона/папка_с_ogp/ и выбираем язык, если вдруг насм говорят что не хватает прав на создание каких-либо файлов или папок то выдаем права 777 chmodом, для этого зайдем в папку с ogp и выполним команду.

chmod 777 –v –R *


• Возвращаемся в веб-интерфейс и нажимаем «Повторить», потом «Дальше»
• Указываем параметры подключения к БД и нажимаем «Дальше»
• Регистрируем учетную запись администратора и нажимаем «Дальше»
• Далее следуем инструкциям, возможно в следующей статья я опишу процесс добавления серверов в OGP

opengamepanel
, ubuntu server
, pure-ftpd
, apache2
, nginx
, linux
, eaccelerator
, memcached
, vds

+35
10692
639
xHellKern 11,7
комментарии (86)
–10
vizgl, 28 ноября 2012 в 23:40 (комментарий был изменён) #
Отличная статья. Всё подробно разжевано, бери и глотай настраивай.
0
smallbox, 29 ноября 2012 в 23:38 #


Беги.
+3
Assargin, 28 ноября 2012 в 23:52 #
О территориальном расположении и о трафике коммент.
Про Германию вы говорите — безлимитный трафик, про xUSSR же — псевдобезлимитный.
Но в то же время у одного из самых популярных хостеров Германии — Hetzner — ограничение на Dedicated сервера — 10 терабайт, после чего внешка обрезается со 100mbit/s до 10 (или плати по ~7евро за каждый доп.терабайт). 10 терабайт для 100мегабитного канала — это примерно 1/3 от его непрерывной работы в течение месяца. И это у них называется безлимитный (unlimited). Таким образом, получается, что это тоже псевдобезлимит. Сложно, наверно, достичь его границ, это надо упорно прокачивать трафик на всю ширину канала в общем сложности треть месяца. Но, в то же время, очень даже можно, если делаешь видео- или адулт-сервис.

Я как-то заинтересовался, кто-нибудь вообще предлагает именно безлимит самый что ни на есть. Было это давно, по истечении 5 минут гугления наткнулся разве что на 100tb.com. У них на серверах канал 1gbit’s, и явно и раздельно предлагаются unlimited тарифы (собственно эти самые 100 терабайт, опять же примерно 1/3 от полной загрузки канала) и, внимание — unmetered. Вот это и был тот самый безлимитный безлимит, да и еще на гигабитном канале. Прокачивай свои ~300+ терабайт в месяц, чувак. Цены на безлимит и «безлимииит!», конечно. ощутимо разнятся (вообще, серверов дешевле ~200евро я там не видал, а за unmetered еще примерно столько же надо было доплачивать)

Хотел узнать, кто-нибудь еще знает аналогичные unmetered предложения от других провайдеров?
0
MechanisM, 29 ноября 2012 в 07:56 #


Посмотрите на ovh.co.uk
+3
xHellKern, 29 ноября 2012 в 08:26 #


nqhost.com — не замечал никаких ограничений, ни в правилах предоставления услуг, ни после 5 Тб трафика.
0
qxfusion, 29 ноября 2012 в 13:50 #


fdcservers.net — несколько ДЦ в Европе, очень выгодные тарифы на трафик
0
Assargin, 29 ноября 2012 в 18:54 #


Да, эти чуваки круты, у них даже 10gbit/s unmetered каналы есть
0
qxfusion, 29 ноября 2012 в 19:00 #


брали у их реселлеров сервер 1Gbps — в реале конечно канал полностью не удалось загрузить — но до 700-800Mbps утилизация получить смогли, дальше уперлось в сеть.
+4
temoon, 28 ноября 2012 в 23:59 #

Копируем файл /etc/apache2/sites-available/default в /etc/apache2/sites-enabled/адрес_сайта


Прошу прощения за особое занудство, но тут лучше сделать так (так оно и задумывалось разработчиками апача):
Копируем файл /etc/apache2/sites-available/default в /etc/apache2/sites-available/адрес_сайта и делаем ссылку с /etc/apache2/sites-available/адрес_сайта на /etc/apache2/sites-enabled/адрес_сайта.
Для nginx аналогично. Делать так нужно для того, чтобы легко и просто «включать/выключать» сайты, убирая симлинки, не заморачиваясь с перевозкой самих конфигов.
+14
verd, 29 ноября 2012 в 00:10 #


Еще проще воспользоваться командой a2ensite адрес_сайта.
0
xHellKern, 29 ноября 2012 в 08:29 #


Вы все правильно говорите, и это не занудство. Но я статью пытался написать так, чтобы ею без проблем смогли воспользоваться люди, которые в первый раз все это увидели и перегружать их мозг информацией по тому, как устроен linux мне не хотелось.
+16
homm, 29 ноября 2012 в 08:51 #


Нахрена, скажите, людям, первый раз все увидевшим, пересобирать ядро?
0
xHellKern, 29 ноября 2012 в 10:16 #


ИМХО лучше попробовать сделать эту процедуру в самом начале, до того как на сервере есть какие-либо данные, а второй возможный профит от этой операции заключается в том что некоторые хостеры в своих шаблонах имеют ядра, например, с iptables без filtering и NAT, а после смены ядра NAT замечательным образом работает.
+1
homm, 29 ноября 2012 в 10:25 #


Получается, компилировать ядро надо только на некоторых хостингах, если нужна некоторая функция. А статья написана в стили «нет времени объяснять, прыгай в машину».
+13
iXCray, 29 ноября 2012 в 00:24 #
апач не нужен, вместо memcached нужно redis + phpredis (module), можно сайты не настраивать — nginx умеет из домена высчитывать папку, какую нужно. Ну и ко всему прочему можно php в режиме fastCGI, а вместо ftp использовать sftp.
0
icCE, 29 ноября 2012 в 09:41 #


Вы сорвали ответ прям с языка :)
–1
la0, 29 ноября 2012 в 09:44 (комментарий был изменён) #


Добавлю, что если у вас отвалился mysql(или его сознательно остановили), по FTP ничего не сделать.
Есть вот такая штука: vdsadmin.ru/ftp-proftp-ftpasswd
+3
iXCray, 29 ноября 2012 в 11:49 #


sftp = ftp via ssh,) ftp вообще не нужен, он не безопасен
0
alexxz, 29 ноября 2012 в 12:28 #


У этих двух протоколов из общего только то, что они оба — протоколы передачи файлов. Так что sftp != ftp via ssh
0
iXCray, 29 ноября 2012 в 12:50 #


Если уж придираетесь, придирайтесь до конца, чтобы не выглядеть совсем уж невежественным :D
ftp = file transfer protocol — и есть протокол передачи файлов, в каком бы контексте я его ни применял,)

А по существу, я акцентирую внимание на большом количестве методов защиты ssh, включая использование ключей, по сравнению с ftp, а также на факте, что подключение по ssh будет иметь права подключившегося пользователя, а не демона ftpd, что тоже немаловажно.
–1
alexxz, 29 ноября 2012 в 13:52 #


Не вскякий протокол передачи файлов можно называть ftp. WebDav, например, тоже протокол передачи файлов.

Если вы упоминаете ftp в каком бы то ни было контексте, вы не должны под ftp подразумевать WebDAV.

Да, я знаю, что у sftp много всяких бонусов, но и минусы тоже можно найти. Всё зависит от задачи.
+1
Kaliha, 29 ноября 2012 в 22:49 #


Под redis я так понял необходимо переписывать код?
–6
homm, 29 ноября 2012 в 00:45 #
Какое ядро? Какой Апач? Какой eaccelerator? Какой FTP? Какой OGP?
Статья полный бред.
+4
fear86, 29 ноября 2012 в 00:48 #
Мне вот интересно почему apache а не например php-fpm? Так же можно было вспомнить про webmin, если уж статья для новичков. И да, зачем ядро я так и не понял )
+6
erazer, 29 ноября 2012 в 01:05 #
… и, конечно, ничего похожего автор в интернете не нашел, поэтому «решил поделиться своими наработками»…
0
xHellKern, 29 ноября 2012 в 10:20 #


Автор нашел в интернете много похожего, но оно было разбросано по разным статьям, что-то было уже не актуально для 12.04, где-то не было написано что phpmyadmin сам в apache2 свой алиас не прописывает и т.п.
+19
saharchuk, 29 ноября 2012 в 01:27 #
Обожаю chmod 777 –v –R *
Особенно когда copy-paste сделают, не вчитываясь, от “/”
Неужели так тяжело обучать работе в правами сразу? После таких мануалов десятки и приходится у горе пользователей систему восстанавливать.
0
GreenDay, 29 ноября 2012 в 14:30 #


Эх, помню грустную историю о том, как у нас разработчик убунту поломал, случайно сделав chmod 777 -R ./* находясь в /
0
Ernillew, 29 ноября 2012 в 22:39 #


Как-то, когда я был студентом ННГУ, у нас старший оператор находясь в / и думая что он находится в ~ сделал rm -rf ./*
Пока он понял что сделал, пока нажал Ctrl+C, пока это дошло до сервера…
он снес почти половину /home в котором жили больше 6k пользователей нашего инет-центра…
с той поры он был очень аккуратен.
0
Den_CH, 30 ноября 2012 в 09:28 #


Помню грустную историю, когда клиент с VPS сделал rm -rf ./* находясь в “/”. На вопрос — нафига? ответил — «спросил на форуме, как вычистить файлы сессий в директории /var/tmp/где/то/там. Их тыщи были.»
Вот только про «cd /var/tmp/где/то/там» умолчали. Понятно, что скорее всего без злого умысла, но VPS была уничтожена.
+7
witdex, 29 ноября 2012 в 03:02 #
Ставим апач и ставим nginx… как это уже надоело ((
+8
DarthSim, 29 ноября 2012 в 06:22 #
Поставил убунту — напиши на Хабр. Эпидемия продолжается.
+8
qmax, 29 ноября 2012 в 09:18 #


Так он ещё и ядро из сорцов собрал!
Правда, не сказал — зачем.
+5
lybin, 29 ноября 2012 в 07:04 #
Вы все еще используете связку nginx + apache? — Тогда мы идем к вам!
–1
psman, 29 ноября 2012 в 10:34 #


Расскажите что не так? Просто обе стороны спора слушаю уже который год и внятных доводов однозначно определяющих ту или иную сторону ни кто не приводит. Особо упоротые php-fpm евангелизируют и не могут сказать «нафига он?».
+4
homm, 29 ноября 2012 в 10:38 #


Тут вопрос скорее нафиг Апач. php-fpm — простой прямой способ подключить php к серверу. Апач — отдельный монструозный сервер, который в данном случае используется только чтобы завести php.
0
psman, 29 ноября 2012 в 10:43 #


У апача есть пачка своих модулей облегчающих жизнь порой.
+1
homm, 29 ноября 2012 в 10:57 #


Давайте конкретнее. Много у чего есть что-то свое, порой облегчающее жизнь. Но вы хотите именно Апач.
0
psman, 29 ноября 2012 в 11:04 #


.htaccess

С учетом того что он может быть в любой папке и рулить редиректами, то при переносе сайта с одного движка на другой 301 сильно спасают положение.
0
homm, 29 ноября 2012 в 11:08 #


Непонятно, как вы хотите использовать .htaccess при переходе на другой движок, если .htaccess — это файл в реальной папке, а все адреса во всех движках уже давно виртуальные.
–2
psman, 29 ноября 2012 в 14:46 #


Не во всех движках, а уж тем более фреймворках.
0
lybin, 29 ноября 2012 в 11:22 (комментарий был изменён) #


Вам плюс конечно, для первого раза полезна статья.
Согласен с homm. php-fpm + nginx быстрее и менее ресурсоемкие, конечно все зависит от знания администратора, программиста и потребностей.
Можете загуглить для подробностей, обсуждений много и были уже до нас:
nginx php-fpm vs apache
0
psman, 29 ноября 2012 в 16:09 #


Обсуждения все на уровне «что лучше Мерседес или БМВ».
+7
qnub, 29 ноября 2012 в 07:12 #
Ещё раз прямым текстом, вдруг до автора дойдёт — не надо учить начинающих использовать Apache, а если сами без него не в состоянии что-то сделать — то и писать «умные» и «полезные» статьи тоже не сто́ит!
+4
IIIEB4YK, 29 ноября 2012 в 07:42 #
Спасаю пост. Сервера надо выбирать вот здесь: serverbear.com — есть бенчмарки, подбор по параметрам (память, тип и объём HDD, страна и т.д.), короче, это что-то вроде Яндекс.Маркета для серверов =)
+1
xHellKern, 29 ноября 2012 в 10:27 #


Плюс на этом ресурсе есть великое множество купонов на скидки. А вот по поводу бенчмарков — лучше брать тестовый период и теститровать самостоятельно ибо в зависимости от ноды, в которой крутится ваш VDS производительность может разительно меняться.
0
IIIEB4YK, 29 ноября 2012 в 10:44 (комментарий был изменён) #


Вообще да, но у них там, насколько я помню, усредняются данные нескольких тестов, если они есть (и отображается история изменений результатов тестов), поэтому в целом должно быть адекватно. Ну, и использоваться он может не только или даже не столько ради тестов, сколько ради удобного способа отфильтровать лишнее, и подобрать именно то, что нужно.
0
Newbilius, 29 ноября 2012 в 11:04 #


Один минус — нет русских серверов (игровые пинги если важны, например).
+1
IIIEB4YK, 29 ноября 2012 в 11:47 #


У них риальне отзывчивый саппорт, я как-то писал (не работала страница какая-то), попробуйте это обсудить с ними. Думаю, единственной проблемой может быть то, что многие российские хостеры не ориентированы на внешний рынок и потому не имеют англоязычной версии сайта.
+2
Newbilius, 29 ноября 2012 в 11:09 #


НО в любом случае, спасибо вам — крутейшая штукенция.
+1
ipdemon, 29 ноября 2012 в 19:36 #


К тому же там есть «горячий» раздел
0
KorP, 29 ноября 2012 в 09:53 #
Если нужно рулить пользователями Pure-FTPd, для этого есть удобная веб-морда
machiel.generaal.net/index.php?subject=user_manager_pureftpd
ставится за минуту, русский язык поддерживает.
+1
psman, 29 ноября 2012 в 10:31 #
Сразу НЕТ: <VirtualHost *:800> апач виден снаружи, это значит, что тот кто просканит порты сможет напрямую дергать картинки/видео/файлы через него, что создаст нагрузку на сервер = миниDDOS

Правильнее и кошернее делать

<VirtualHost 127.0.0.1:80>

соответственно в nginx

listen ipсервера:80; — вещает на тот же 80 порт, но на внешний ip
ну и не забыть про proxy_pass 127.0.0.1:80/;

В такой схеме «достать» апач минуя nginx невозможно.
0
homm, 29 ноября 2012 в 10:35 #


Завалить Апач в дефолтной конфигурации даже за nginx — нефиг делать. Так что это не влияет.
0
psman, 29 ноября 2012 в 10:45 #


Значит не надо в 100500-й раз дефолтные конфиги писать, на одном только Хабре подобных статей штук 20 + в песочнице стухло штабелями.
0
xHellKern, 29 ноября 2012 в 10:39 #


Наружу то апач виден, но вот это:

Order deny,allow
deny from all
allow from 127.0.0.0/255.0.0.0 ::1/128


будет огорчать миниDDoS’еров Forbidenn’ом, в моем случае во всем хостам, кроме host.name:800/phpmyadmin
+2
psman, 29 ноября 2012 в 10:44 #


Доп проверки на каждый запрос?? /irony «ок»
0
Kaliha, 29 ноября 2012 в 12:07 #


[Thu Nov 29 10:04:16 2012] [warn] VirtualHost 127.0.0.1:8080 overlaps with VirtualHost 127.0.0.1:8080, the first has precedence, perhaps you need a NameVirtualHost directive
Получаем по вашей инструкции. Ну и соответственно все работает криво.
0
4umak, 29 ноября 2012 в 12:47 #


> perhaps you need a NameVirtualHost directive

NameVirtualHost определите и будет всё в шоколаде.
0
Kaliha, 29 ноября 2012 в 12:53 #


Сработало, спасибо. Теперь по 8080 порту отдает 404, как редиректить на 80 порт?
0
4umak, 29 ноября 2012 в 16:54 #


Так _с_ 80 порта или _на_ 80 порт? Если первое, то стандартная схема nginx reverse proxy (если вы вообще об этом), либо через iptables prerouting
0
Kaliha, 29 ноября 2012 в 22:35 #


Nginx = 80, Apache = 8080, при обращении на 8080 порт дает 404 ошибку. Как редиректить все что приходит на 8080 порт в 80?
0
psman, 30 ноября 2012 в 00:34 #


А зачем апач на 8080.
Он у вас работает только на локалку? Если да, то на 80 порт локалхоста и вешать
А nginx принимает все с внешнего ip и шлет на 127.0.0.1:80 (апачу)
0
Kaliha, 30 ноября 2012 в 00:35 #


Просто есть некие пользователи, которые ходят напрямую на 8080 порт, понятия не имею откуда они его взяли. Может где то некорректно работал nginx.
+1
tamaki, 29 ноября 2012 в 10:43 #
Ну сколько можно?
+2
script88, 29 ноября 2012 в 11:14 #
1. Уже не раз писали, что eaccelerator загибается, юзайте php-apc.
2. Если увеличить параметр eaccelerator.shm_size с 16 до 128 то будет fail :)
+4
sledopit, 29 ноября 2012 в 12:21 #
1. Пересборка ядра. Я допускаю, что создатели дистрибутива полные лохи и ни фига не смыслят в сборке ядра под конкретно мой сервер, и у меня даже получилось собрать ядро, которое запускается (про производительность я благоразумно промолчу). Но твою ж дивизию, у меня 23 сервера и сегодня выпустили security patch, закрывающий получение рута при хитром обращении к ядру. Что мне делать?
2. прописывать путь к конфигу phpmyadmin в apache.conf — это вы, конечно, молодец. Но для этих целей изобрели /etc/apache2/conf.d/, куда можно кидать ссылки на конфиг.
3. Я не понимаю, зачем вы просите меня прописывать алиасы для /cgi-bin и /doc. Без них ничего не будет работать?
4. Для чего нужно прописывать репозиторий именно самого nginx’a, а не ставить из убунтовских репозиториев? Я слышал, что на сервере не стоит гнаться за самыми последними версиями ПО. Неужели врут?
5. Вы вроде вначале написали, что используете убунту. Как мне потому обновлять программы, которые вы предлагаете устанавливать make && make install’ом? Как-то на хабре был пост kekekeks’a, что каждый раз при таком способе установки бог убивает котёнка. Вы не боитесь, что после вашей статьи популяция котят сильно уменьшится? (:
6. Ещё я слышал, что ftp — небезопасно, гораздо лучше использовать sftp/scp. Неужели и тут меня обманули?
+1
xHellKern, 29 ноября 2012 в 13:34 #


Спасибо за аргументированную критику, учту ваши комментарии если буду переписывать свои наброски.
0
clslrns, 29 ноября 2012 в 13:09 #
А как же почту с этого сервера отправлять?
0
xHellKern, 29 ноября 2012 в 13:36 #


В моем случае не нужен был почтовый сервер т.к. я предпочитаю пользоваться Google Apps
0
clslrns, 29 ноября 2012 в 14:46 #


Настраиваете Postfix на использование SMTP Гугла? Или как?
–1
xHellKern, 29 ноября 2012 в 15:56 #


Нет, мой сервер вообще не шлет и не принимает почту.
0
qxfusion, 29 ноября 2012 в 13:50 #
Но самое главное — это создание снапшота для быстрого развертывания Вы не стали делать :)
+2
Ernillew, 29 ноября 2012 в 14:03 #
Говорят те кто выставляют phpMyAdmin в сеть голой дупой в следующей жизни рождаются виндовыми эникейщиками поддерживающими Oracle на FreeBSD через линукс-эмулять.
Впрочем те кто ставят апач не смотря на то, что он в их задаче явно не нужен тоже чем-то таким рождаются.
+1
pfa, 29 ноября 2012 в 15:10 #
Если часто переезжаете — почему бы для конфигурирования серверов не использовать Chef? Даже chef-solo (если нет ресурсов держать отдельную машину под шеф-сервер) сильно облегчит жизнь.
Каждый раз это все руками поднимать — это ж долбануться можно!
+5
VBart, 29 ноября 2012 в 15:26 #
gzip_comp_level 9; — это такой отличный способ убить производительность.
0
GreenDay, 30 ноября 2012 в 08:31 #


Не помню где встречал, там начинаю я с 5 левла компрессии толку мало, поэтому ставить больше 5 смысла нет.
0
IIIEB4YK, 30 ноября 2012 в 08:47 #


Я обычно ставлю 2.
4 — это последний уровень, который ещё туда-сюда в отношении времени к сжатию, уровни выше уже в этом смысле ведут себя очень плохо =) См. мой тест ниже — график Relative time to relative compress ratio это неплохо демонстрирует.
0
IIIEB4YK, 30 ноября 2012 в 08:37 #


Когда-то давным давно делал небольшой gzip бенчмарк. Есть огрехи в методологии: например, нет сравнения с чистым копированием файла — но общее представление даёт. Обратите внимание на листы с графиками (внизу), особенно отрезвляет Relative compress ratio, т.е. прирост степени сжатия по сравнению с предыдущим уровнем.
0
VBart, 30 ноября 2012 в 14:40 #


Ставить больше 1 (значение по-умолчанию в nginx) — смысла особого нет. Из ваших исследований видно, что уже даже на 2-ке проигрышь по производительности становится больше, чем выигрышь по степени сжатия.

То же самое и в тесте другого человека: webo.in/articles/habrahabr/33-gzip-level-tool/ — только графики не очень показательные из-за своих шкхал. Если присмотреться к шкалам, то можно заметить, что производительность сжатия падает много быстрее, чем растет эффективность (которая растет на единицы процентов).
+1
Claud, 29 ноября 2012 в 20:55 #
Лучше бы все в bash скрипты обернули и выложили на githube это был бы прорыв в статьях подобного типа.
+1
xHellKern, 29 ноября 2012 в 22:48 #


Отличная идея, надо будет заняться на досуге…
0
fortyseven, 1 декабря 2012 в 02:15 #


Если сделаете, отпишитесь, будем форкать =)
0
Taro, 3 декабря 2012 в 15:03 #
В очередной раз добавляю пост в избранное строго ради комментариев.
0
bezgubov, 12 декабря 2012 в 18:59 #
OpenVZ и XEN это не тип виртуализации
0
ekungurov, 14 декабря 2012 в 11:06 #

Возвращаясь к типам виртуализации на XEN и KVM оверселлинг практически невозможен технически.

Возможен — см. memory ballooning.

Теперь мы имеем достаточно шустрый веб-сервер, который потребляет меньше 100Мб оперативной памяти.

Вы используете апач с mpm-prefork’ом. Последний форкает по процессу на каждый обслуживаемый запрос. Каждый процесс будет занимать «меньше 100 Мб» виртуальной памяти. В сумме получится больше.

Конечно, форкнутые процессы должны использовать shared memory, и даже будут в случае Xen/KVM. Но не в случае OpenVZ, потому что OpenVZ очень специфически считает квоту памяти (имеются в виду user_beancounters).

Поэтому я бы рекомендовал ограничить количество апачевых worker’ов (при условии, что статика обслуживается nginx). А при использовании OpenVZ следует еще и уменьшить размер стека для апачевых процессов, поместив ulimit -s в скрипт запуска апача.

Оригинал: http://habrahabr.ru/post/160647/
2013   apache   http   nginx   ubuntu   vds   webserver

Шпаргалка начинающего Debian/Ubuntu администратора по управлению пакетами


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

Краткая справка Debian администратора

Основное и общеизвестное

Получение информации о новых/обновлённых пакетах
sudo aptitude update

Обновление
sudo aptitude safe-upgrade

Поиск пакета по именам пакетов
aptitude search key_word

Поиск пакета по точному названию
aptitude search “^name$”

Поиск по описанию
aptitude search “?description(‘key_word’)”

Информация о пакете
aptitude show package_name

Установка
sudo aptitude install package_name

Удаление
sudo aptitude remove package_name

Полное удаление (вместе с конфигами)
sudo aptitude purge package_name

Очистить кэш загруженных пакетов (освободить место)
aptitude autoclean # удалятся только пакеты неактуальных версий
aptitude clean # очистится весь кэш

Установка отдельно скачанного/созданного пакета (для создания пакета из сторонних исходников нужно использовать утилиту checkinstall с флагом -D)
sudo dpkg -i /path/to/package.deb

Для получения доп информации
man aptitude
sudo aptitude install aptitude-doc-en

и смотрим документацию, кому быструю справку по поисковым шаблонам, тому сюда. Если лень ставить доку, то в сети она есть.
Вводная на Debian Wiki: wiki.debian.org/Aptitude

А теперь то что не очевидно или требует полного прочтения документации

1. Как после update посмотреть какие пакеты будут обновлены?
aptitude search ?upgradable

также можно юзать (если поставить)
sudo daptup

2. Как узнать что изменилось в пакетах которые будут обновлены?
Можно пробовать
sudo aptitude changelog package_name

для каждого пакета.
Но лучше поставить apt-listchanges, тогда перед любой установкой обновлений будет показан список изменений, по умолчанию настройки не очень удобные, поэтому лучше перенастроить под себя, например, выбрать формат вывода (пока использую текст, при больших обновлениях наверно pager лучше), не слать писем, спрашивать подтверждения, выводить всю информацию. Для этого нужно запустить
sudo dpkg-reconfigure apt-listchanges

3. Что делать если обновление что-то поломало и нужно откатиться?
Отката нет, можно попробовать найти предыдущую версию пакета
sudo aptitude version package_name

и установить её
sudo aptitude install package_name=version

4. Как найти все пакеты установленные вручную?
aptitude search ‘~i!~M’

5. Как посмотреть список файлов в пакете?
dpkg -L package_name

или поставить apt-file и
apt-file list package_name

6. Как посмотреть какому пакету принадлежит файл?
dpkg -S file_name

7. Как удалить все пакеты, где есть key в названии пакета?
sudo aptitude purge ~ikey

8. Как удалить оставшиеся конфиги от удалённых пакетов?
sudo aptitude purge ~c

9. Как найти пакет пакет, в котором содержится файл lib.so:
apt-file search lib.so

10. Как сконвертировать rpm пакет в deb?
alien --to-deb /path/to/file.rpm

11. Как найти список установленных ядер?
dpkg --list linux-* | grep ii

12. Как установить пакет из testing или experimental?
На эту тему нужно писать отдельно (например так), но если кратко, то команды для этого есть
sudo aptitude -t testing package_name
или
sudo aptitude package_name/testing
13. Что есть ещё?
apt-cdrom
apt-spy
Некоторые вещи умеет только apt-get

Благодарю всех кто помог своими советами в рассылке и жж и хабре ( run4way, sledopit, nazarpc, AgaFonOff, amarao). Замечания и дополнения приветствуются.
2012   apt-get   aptitude   linux   ubuntu

Ubuntu, xL2TP

Конфиги для настройки подключения интернет соединения для провайдера Билайн. В интернете описания подобных настроек достаточно много, но почему то они у меня не работают! Почитав около 20 постов на 5 разных форумах Я составил картину которая как раз и заработала.


———-/etc/xl2tpd/xl2tpd.conf

[global]
access control = yes
debug avp = yes
debug network = yes
debug state = yes
debug tunnel = yes

[lac beeline] ;в место beeline можно написать что угодно
lns = tp.internet.beeline.ru ;вместо tp.internet.beeline.ru написать адрес сервера
redial = yes
redial timeout = 5
require chap = yes
require authentication = no
 name = ЛОГИН@internet.beeline.ru ;здесь пишем свой логин для доступа в интернет
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
require pap = no
 autodial = yes

———-/etc/ppp/options.xl2tpd
unit 0
remotename l2tp
ipparam beeline
connect /bin/true
mru 1460
mtu 1460
nodeflate
nobsdcomp
persist
maxfail 0
nopcomp
noaccomp
noauth
defaultroute
replacedefaultroute
name ЛОГИН@internet.beeline.ru ;снова пишем совой логин для доступа в интернет

———-/etc/ppp/chap-secrets

ЛОГИН l2tp ПАРОЛЬ
———прописываем маршруты
sudo route add -host 10.255.255.243 gw ВЫШ_ШЛЮЗ ;узнаём IP tp.internet.beeline.ru (с помощью host tp.internet.beeline.ru)
sudo route add -host 194.186.60.107 gw ВАШ_ШЛЮЗ ;DNS 1
sudo route add -host 194.186.60.108 gw ВАШ_ШЛЮЗ ;DNS 2

Что бы узнать ДНС сервера используйте команду cat /etc/resolv.conf (nameserver это они и есть), а шлюз route | grep eth0 (шлюз ищите во втором столбце)

———лог где можно посмотреть, что происходит во время конекта
/var/log/messages

—что бы соединение устанавливалось при старте системы запишите в /etc/network/interfaces
up xl2tpd restart

———основные команды команды
sudo /etc/init.d/xl2tpd stop

sudo /etc/init.d/xl2tpd start

sudo /etc/init.d/xl2tpd restart
2012   l2tp   ubuntu

cron

Программа-демон, предназначенная для выполнения заданий в определенное время, или через определенные промежутки времени.

Для редактирования заданий используется утилита crontab.
Листинг

Нельзя изменять файл расписания, просто открыв его в текстовом редакторе. Для его редактирования необходимо использовать команду crontab -e.


Простой пример файла расписания. Создание снимка экрана каждый час:
SHELL=/bin/bash
MAILTO=username
0 0-23 * * * scrot
Основные настройки

Выбор среды для исполняемых задач:
SHELL=/bin/bash

Имя пользователя, которому будет послано сообщение о выполнении задания:
MAILTO=username

Вместо имени, также можно использовать электронный адрес:
[email protected]
Не обязательные настройки

Задаем каталог пользователя:
HOME=

Задаем каталоги исполняемых фалов:
PATH=/sbin:/bin:/usr/sbin:/usr/bin

Прописываем дисплей, если запускаемый по крону скрипт должен выводить сообщение в области уведомлений:
DISPLAY=:0.0
Выбор времени выполнения задания

Время запуска представляется в таком виде:
минута час день_месяца месяц день_недели команда Значение Диапазон Дополнительно
минуты 0-59
часы 0-23
дни месяца 1-31
месяцы 1-12 можно задавать и в 3-х буквенном варианте
дни недели 0-6 можно задавать и в 3-х буквенном варианте (0=воскресенье)


Символ ‘*’ подразумевает – любое значение.

Минимальное время 1-а минута. Это связано с тем что cron каждую минуту просматривает список заданий, и ищет которые нужно выполнить. Дни недели и месяца в трех буквенном варианте:
sun mon tue wed thu fri sat
jan feb mar apr may jun jul aug sep oct nov dec

Дополнительные переменные cronПеременная Описание Эквивалент
@reboot Запуск при загрузке
@yearly Раз в год 0 0 1 1 *
@annually Тоже что и @yearly
@monthly Раз в месяц 0 0 1 * *
@weekly Раз в неделю 0 0 * * 0
@daily Раз в день 0 0 * * *
@midnight В полночь (00:00)
@hourly Каждый час 0 * * * *

Управление при помощи crontab

Добавление файла расписания:
crontab имя_файла_расписания

Вывести содержимое текущего файла расписания:
crontab -l

Удаление текущего файла расписания:
crontab -r

Редактирование текущего файла расписания (при первом запуске будет выведен список поддерживаемых текстовых редакторов):
crontab -e

Этот ключ позволяет выполнять вышеописанные действия для конкретного пользователя:
-u username
Примеры

Каждую минуту:
* * * * *

Каждый час, с использованием переменных cron:
@daily ~/script.sh

Каждый день в 03:15 запускать скрипт:
15 3 * * * ~/script.sh

Каждый понедельник:
0 0 * * 1

Каждый четный час:
* */2 * *

Тоже что и выше, но расписанное полностью:
* 0,2,4,6,8,10,12,14,16,18,20,22 *

Новый год :
59 23 31 dec *

Каждый будний день в 22:00:
0 22 * * 1-5

Запуск программы с графической оболочкой (GUI); каждую минуту будет отображается сообщение с текстом «It work!»:
0-59 * * * * DISPLAY=:0 gdialog --msgbox “It work!” 25 20 > /dev/null

* где DISPLAY=:0 – номер монитора
2012   cron   ubuntu

Cron в Ubuntu. + bash-cкрипт резервного копирования.

Ubuntu, Системное администрирование
Tagged Under : bash, Ubuntu, Скрипты

Иногда системным администраторам, программистам, web-дизайнерам и много кому ещё нужно запускать одни и те же команды или скрипт с некоторой периодичностью. Для таких целей используется специальная утилита Cron, встроенная во все дистрибутивы Unix. Пользоваться Cron’ом необычайно легко. Сейчас расскажу как.

Для начала создадим какой-нибудь простой bash-скрипт, например скрип резервного копирования и архивирования конфигурационных файлов, в моём случае конфигурационных файлов Apache2 и ftp-сервера.
#!/bin/bash

mkdir /home/user/bash-scripts/backup
cp /etc/apache2/apache2.conf /home/user/bash-scripts/backup/apache2.conf-backup
cp /etc/apache2/sites-available/site /home/user/bash-scripts/backup/site-backup
cp /etc/proftpd/proftpd.conf /home/user/bash-scripts/backup/proftpd.conf-backup
tar cvvzf “/home/user/bash-scripts/backup-`date +%F-%X`.tar.gz” /home/user/bash-scripts/backup/
rm -r /home/user/bash-scripts/backup

Этот скрипт копирует конфигурационные файлы и архивирует их в папку, в названии которой присутствует дата и время сохранения. Назовём его ‘backup-script‘ а лежать он у нас будет в домашнем каталоге (/home/user/). Теперь нам надо чтобы этот скрипт запускался, ну допустим, каждые 10 минут. Для этого введём команду
crontab -e

Этой командой мы открываем для редактирования файл crontab для данного пользователя, в моём случае это user. Если нашему скрипту нужны права супер пользователя, то нужно редактировать crontab суперпользователя. Делается это командой
sudo crontab -u root -e

Ну и если заменить root а логин другого пользователя, мы будем редактировать его crontab.
Сразу напишу, чтобы посмотреть файл crontab введите команду.
crontab -l

Файл crontab имеет следующую структуру:

поле1 поле2 поле3 поле4 поле5 команда

Значения первых пяти полей:
1.минуты— число от 0 до 59
2.часы — число от 0 до 23
3.день месяца — число от 1 до 31
4.номер месяца в году — число от 1 до 12
5.день недели — число от 0 до 7 (0-Вс,1-Пн,2-Вт,3-Ср,4-Чт,5-Пт,6-Сб,7-Вс)

Все поля обязательны для заполнения. Не сложно догадаться что первые 5 отвечают за определения периодичности запуска команды, а последняя собственно команда или полный путь к скрипту. Таким образом, чтобы запустить наш скрипт резервного копирования раз в 10 минут надо вписать следующую строчку.
*/10 * * * * /home/user/backup-script

* – значит все возможные варианты, / служит для определения периодичности выполнения задания. Если нужно будет выполнять скрипт раз в 3 часа впишите в значения часы */3 а в минуты просто *, если раз в сутки — впишите */23, ну почти сутки. Так же в одно поле можно вводить несколько значений через запятую, например если хотите выполнять скрипт 1ого, 5ого, и 25ог числа каждого месяца введите 1,5,25 вместо третей звёздочки. Ещё можно вводить промежуток времени, если ,допустим, в часы ввести 12-17 то скрипт будет выполняться с 12 до 17 включительно раз в час.
Ну вот и всё, в заключение пару примеров:
0 */3 * * 2,5 /home/user/backup-script
#Каждые три часа только по вторникам и пятницам
15 */3 * * * /home/user/backup-script
#Каждые три часа в 15 минут
45 15 * * 1 /home/user/backup-script
#По понедельникам в 15:45
13 13 13 * 5 /home/user/backup-script
#в пяnницу 13 числа в 13 часов 13 минут
30 00 * * 0 /home/user/backup-script
#Раз в н
2012   cron   linux   ubuntu

Удаленный рабочий стол (VNC, x11vnc). Настройка

9.10 Karmic Koala
Voyageur – 24 Июнь, 2009 – 13:30


С линуксом жизнь становится интересней, я бы даже сказал экспериментальней!
Меня потянуло на эксперименты с ssh, и то, что я получил в итоге – доступ с работы к домашнему компу – мне очень понравилось! Еще бы – классно управлять домашним компом, обновлять его и т.п. С девушкой даже с помощью festival разговаривал)))
Однако, захотелось пойти дальше, интересно, можно ли настроить удаленный доступ к рабочему столу, как позволяет это RAdmin в Windows? Можно конечно! Надо только настроить))

Покопался в интернете, нашел несколько статей про VNC – Virtual Network Computing, решил такое счастье сделать и у себя!
Для этого сначала необходимо было поставить несколько утилит:
sudo aptitude install vnc4-common vnc4server xvnc4viewer
Эти утилиты необходимы непосредственно для того, чтобы запускать удаленный сервер (vnc4server) и подключаться к нему с удаленного клиента (xvnc4viewer).
Установили! Теперь дело остается за малым: сначала нужно запустить vnc-сервер, а потом подключиться к нему.
Для запуска удаленного сервера, нужно в консоли набрать
vncserver
Если это первый запуск vncserver в системе с этой учётной записью пользователя, тогда вы должны ввести пароль, который клиенты будут использовать при подключении, после чего запустится сервер, который будет доступен на порту 5901. Кстати, при запуске сервера в консоль выведется номер дисплея (виртуального), на котором он будет доступен, отсчет ведется с 1 (так как 0 – текущий дисплей). Пример запуска:
igor@Voyageur:~$ vncserver

New ‘Voyageur:1 (igor)’ desktop is Voyageur:1

Starting applications specified in /home/igor/.vnc/xstartup
Log file is /home/igor/.vnc/Voyageur:1.log
Здесь строчка New ‘Voyageur:1 (igor)’ desktop is Voyageur:1 как раз говорит о том, что у меня компе запустился сервер на дисплее 1, доступен он на порту 5901.
Если vncserver запустить еще раз, то загрузится новый терминальный сервер :2 на порту 5902 и т.д.
Теперь попробуем зайти на этот сервер с удаленной машины. Для этого необходимо в консоли удаленного клиента ввести команду:
vncviewer __hostname__:1
В этой команде __hostname__ – это имя или ip машины, на которой запущен удаленный сервер. Далее необходимо будет ввести пароль и в результате появится приблизительно вот такое окно:


Немного не то я ожидал увидеть если честно)) Начал разбираться, и оказалось, что vncserver запускает лишь новую сессию, а не подключается к текущей, именно для этого и нужны виртуальные дисплеи. А в этой сессии запущены twm (Tab Window Manager for the X Window System) и xterm.
Между прочим это все добро запускается из скрипта ~/.vnc/xtartup, который можно редактировать, удаляя ненужные и добавляя свои строчки запуска необходимых приложений. В самом верху скрипта есть небольшой комментарий:
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
То есть, чтобы получить нормальный рабочий стол, нужно раскомментировать 2 строчки. Я их раскомментировал, но ничего хорошего из этого у меня не вышло.
Посмотрел я на этот twm, и решил, что с этим убожеством работать нельзя. Я установил fluxbox (занимает всего 6 Мб) и в скрипте xstartup заменил строчку
twm &
на
fluxbox &
В итоге у меня получилось вот так:


Нормально для работы. Но не айс! Оперу можно запустить, еще некоторые приложения, но далеко не все (приложения kde выламываются)! Пробовал я вместо fluxbox’a запустить kde, но не пошло...Играет приветствие входа в систему, но вылетает окно с крахом плазмы и все, черный экран, занавес...

В итоге я получил удаленный доступ, но не такой как хотел! Мне-то хотелось иметь доступ к текущему рабочему столу, а не к мифическому дисплею 1, на котором загружается fluxbox, но не kde.

Что делать? Надо копать еще!!!
Я поискал в репозиториях пакеты, в названии которых присутствует “vnc”, список оказался не очень большой, я начал читать комментарии к утилитам и библиотекам...В самом конце списка я увидел такую строчку:
p xvnc4viewer  – Virtual network computing client software for X
Очень похоже на то, что мне нужно!
Я установил x11vnc...man у этой утилиты знатный, несколько тысяч строк)) После небольшого его изучения я более менее разобрался с процедурой запуска и назначением утилиты.
Итак, x11vnc является фактически удаленным сервером (как и vncserver), но позволяет получать доступ к уже существующей X-сессии!
На машине, к которой необходимо подключиться:
x11vnc -storepasswd
Эта команда позволит позаимствовать пароль для подключения к серверу из файла ~/.vnc/passwd (тут лежит пароль, который был задан при первом запуске vncserver). Далее непосредственно запустим x11vnc:
x11vnc -usepw -display :0
Опция -usepw задействует использования пароля при подключении к серверу, -display :0 – запускает сервер на нулевом дисплее (так, где открыта текущая X-сессия).
Теперь мы с удаленной машины можем подключиться к текущей X-сессии, выполнив
vncviewer __hostaname__:0
и введя пароль.


При закрытии окна удаленного рабочего стола, завершается и работа x11vnc (на сервере)
Таким образом, я получил то, что хотел))))
Напоследок приведу несколько опций для утилит vncserver, x11vnc и vncviewer, облегчающих траффик и жизнь))
vncserver
-kill :n – завершает работу терминального сервера на дисплее n (порту 590n), если он раньше был запущен
-geometry 800x600 – устанавливает размер создаваемого рабочего стола (по умолчанию 1024x768)
-depth depth – устанавливает глубину цвета в битах, по умолчанию 16 бит, можно изменить на 8, 15, 24
Для запуска VNC-сервера с определенным номером (дисплеем) используется команда vncserver :n

x11vnc
-q – уменьшает вывод отладочной информации в stderr
-forever – данная опция не завершает работу x11vnc-сервера, когда первый клиент отключается, а ждет следующих подключений

vncviewer
-geometry 800x600 – устанавливает размер окна, в котором будет отображаться удаленный рабочий стол. Если указанный размер меньше размера удаленного стола, то появятся полосы прокрутки
-compresslevel n – устанавливает уровень сжатия данных. Значение n варьируется от 0 до 9, 9 – наилучшее сжатие (качество, соответственно, хуже)
-quality m – влияет на качество картинки. m варьируется от 0 до 9, 0 – наихудшее качество изображения (меньше траффик)
-depth depth – если X-сервер поддерживает различные значения глубины цвета, то можно попытаться подобратьоптимальное значение (в битах)
-viewonly – опция, позволяющая подключившемуся пользователю только наблюдать за тем, что происходит на удаленной машине, средства управления (мышь, клавиатура) недоступны

P.S. Кстати, если нужно, чтобы x11vnc запускался автоматически, то для этого его нужно добавить в автозагрузку: в Настройках системы выбрать пункт Автозагрузка (на второй вкладке), там добавить скрипт
x11vnc -usepw -display :0 -q -forever &
и указать, что он должен запускаться до старта KDE!
2012   linux vnc   ubuntu

Обновление Ubuntu server 11.04 до 11.10

Только что была выпущена новая Ubuntu 11.10 (Natty Narwhal). Это руководство показывает, как можно обновить Ubuntu 11.04 серверных установок до Ubuntu 11.10.

Убедитесь, что Вы вошли в систему с правами root:sudo su


Затем запустите:apt-get update


и установить пакет update-manager-core (менеджер-обновления-ядра):apt-get install update-manager-core


Откройте файл /etc/update-manager/release-upgrades ...nano /etc/update-manager/release-upgrades


... и убедитесь, что в нем имеется Prompt=normal:
[...]
Prompt=normal

Затем запустите:do-release-upgrade


... чтобы началось обновление:
root@server1:~# do-release-upgrade
Checking for a new ubuntu release
Get:1 Upgrade tool signature [198 B]
Get:2 Upgrade tool [1164 kB]
Fetched 1164 kB in 0s (0 B/s)
extracting ‘oneiric.tar.gz’
authenticate ‘oneiric.tar.gz’ against ‘oneiric.tar.gz.gpg’

Reading cache

Checking package manager

Continue running under SSH?

This session appears to be running under ssh. It is not recommended
to perform a upgrade over ssh currently because in case of failure it
is harder to recover.

If you continue, an additional ssh daemon will be started at port
‘1022’.
Do you want to continue?

Continue [yN] – y

Starting additional sshd

To make recovery in case of failure easier, an additional sshd will
be started on port ‘1022’. If anything goes wrong with the running
ssh you can still connect to the additional one.

To continue please press [ENTER] – ENTER
Confirm that you want to do the upgrade:
Third party sources disabled

Some third party entries in your sources.list were disabled. You can
re-enable them after the upgrade with the ‘software-properties’ tool
or your package manager.

To continue please press [ENTER] – ENTER

[...]

Do you want to start the upgrade?

6 installed packages are no longer supported by Canonical. You can
still get support from the community.

5 packages are going to be removed. 88 new packages are going to be
installed. 611 packages are going to be upgraded.

You have to download a total of 392 M. This download will take about
2 minutes with your connection.

Fetching and installing the upgrade can take several hours. Once the
  download has finished, the process cannot be cancelled.

Continue [yN] Details [d] – y

Во время обновления некоторых службы, возможно, потребуется перезагрузка. Если менеджер обновлений указывает Вам, какие услуги должен быть перезапущен (она отображается список услуг), оставите их по умолчанию, нажав кнопку ENTER.

В конце процесса обновления, вы должны удалить устаревшие пакеты:
Remove obsolete packages?
45 packages are going to be removed.

Continue [yN] Details [d] – y

Сервер должен быть перезагружен для завершения обновления:
System upgrade is complete.
Restart required
To finish the upgrade, a restart is required.
If you select ‘y’ the system will be restarted.

Continue [yN] – y

После перезагрузки, Ваш сервер работает под управлением Ubuntu 11.10. Надо можно увидеть взглянуть на /etc/issue:cat /etc/issue

root@server1:~# cat /etc/issue
Ubuntu 11.10 \n \l

root@server1:~#
2012   ubuntu

Debian, безопасность сервера. Ставим fail2ban на Debian и немного настраиваем его.

fail2ban может защитить почти любой из ваших сервисов от брутфорса. Подбора пароля то есть.
Информации в целом в инете про него много, но не упомянуть fail2ban в рамках нового цикла статей «Безопасность в Debian» просто нельзя.

Итак. Каждый администратор сервера на Debian должен выполнить команду:
debian:~# aptitude install fail2ban

После установки и запуска fail2ban мы получаем намного более защищенный ssh. После 3х попыток неправильного ввода пароля с одного ip адреса — этому ip адресу будет закрыт 22й порт на сервере. Но это всё по умолчанию.
Сейчас же мы будем настраивать fail2ban.
Основная часть настроек хранится в конфигурационном файле /etc/fail2ban/jail.conf
Рассмотрим некоторые директивы:
ignoreip = 127.0.0.1 # указываем, на какие ip адреса, маски или хостнеймы не распространяется действие fail2ban
bantime = 600 # указываем сколько действует бан в секундах. Я указываю либо огромное число, либо -1 — что значит «навечно».
maxretry = 3 # через сколько неправильных попыток ввода пароля банить гада
destemail = root@localhost # на какой адрес слать уведомления о банах. Можно поменять, но нужно будет написать правила для писем.
banaction = iptables-multiport # через что банить. Если у вас нет shorewall, то менять это значение я не рекомендую.
mta = sendmail # через что отправлять письма админу о банах. Exim/sendmail/etc. Пишем тут тот MTA, который стоит у вас на сервере.

Чуть ниже следуют секции конфига, которые отвечают за блокировку тех, кто брутфорсит что-либо. Конечно же, здесь есть почти все сервисы, которые можно брутфорсить) списочек будет чуть ниже. Не изменяйте эти секции ни в коем случае! Те jails, которые вам необходимо включить — дописывайте в файл /etc/fail2ban/jail.local в форме:
[jail_name]
enabled = true
Например:
[apache]
enabled = true

Рассмотрим параметры секции [ssh] (который отвечает за бан тех, кто пытается сбрутить ssh-аккаунт).
enabled = true # включаем сервис.
port = ssh # указываем на каком порту/портах висит сервис. Некоторые умеют определяться автоматически по имени сервиса — вот как ssh
filter = sshd # указываем фильтр, по которому парсятся логи. Не следует менять. Вообще же можно написать свои фильтры и использовать их для любого вашего сервиса. Именно этот порт в нашем случае будет блокироваться для брутфорсера через iptables.
logpath = /var/log/auth.log # какой лог парсить. Нужно на тот случай, если вы изменяли дефолтный путь до лога сервиса
maxretry = 6 # количество попыток, после которых человека или бота банят.

Какие есть шаблоны по умолчанию: ssh, pam-generic, xinetd-fail, ssh-ddos, apache (неверные авторизации в каталогах, защищенных через .htpasswd), apache-noscript, apache-overflows, vsftpd, proftpd, wuftpd, postfix, couriersmtp, courierauth, sasl, named-refused-udp, named-refused-tcp.

Не забываем перезапускать fail2ban после изменения конфигурации командой /etc/init.d/fail2ban restart

Этого вполне достаточно, чтобы окопаться от брутфорса по самое «нехочу». Если вы поняли систему работы fail2ban — вы легко сможете написать скрипт, который будет защищать вас от http-ddos, udp-ddos, исходящего спама и много другого. Правила писать очень просто, нужно лишь указать правильный regexp в файле /etc/fail2ban/filter.d/имя_фильтра.conf
Тем более, что там есть примеры.
Только не дописывайте свои сервисы c опций enabled = true в jail.conf. Пишите шаблон в jail.conf, а включайте свой jail уже в jail.local.
2012   fail2ban   linux   ubuntu

Debian, ftpd, vtpd, vsftpd. Very fast way.

https://debian.pro/72

Извиняюсь, что давно ничего не писал. Работа и эксперименты с виртуализацией отнимают очень много времени. Пока что ничего нового и особенного не откопал, лишь сделал некоторые выводы, которые напишу в финальной статье про KVM.
А сейчас, пожалуй, напишу как быстро настроить FTP сервер на Debian/Ubuntu. Способ действительно быстрый и не требует особого ковыряния в конфигах и базах.
За основу, как можно догадаться из заголовка, я беру vsftpd. Почему? Ну во-первых его название расшифровывается как very secure ftp daemon. Во-вторых именно его можно установить и настроить максимально быстро.
Что мы получим в итоге:
1) авторизоваться нужно (можно) будет по системным пользователям. То есть список пользователей и их домашние директории будут браться из /etc/passwd. Root в параде не участвует.
2) пользователи не могут выйти выше домашнего каталога в структуре ФС. То есть мы организуем ftp-chroot. Редки случаи, когда он помешает конечным пользователям, а вот безопасность он повышает ощутимо. Рут же может пользоваться sshfs, чтобы работать со всей ФС сразу.
3) Анонимы отключены. В принципе включаются 3мя строчками в конфиге, но в рамках данной статьи они не требуются.
Итак. Проверяем, что у нас не установлено никаких ftpd, если установлены — удаляем. Они нам не понадобятся.
Установим vsftpd:
root@Debian:~# aptitude install vsftpd
Скопируем стандартный конфиг на всякий случай (необязательно):
root@Debian:~# cp /etc/vsftpd.conf /etc/vsftpd.conf.default
Почистим стандартный конфиг от флуда разработчиков =) (вообще там интересно, советую почитать как-нибудь. )
root@Debian:~# echo » » > /etc/vsftpd.conf
И начнём писать новый. Собственно, чтобы следовать заголовку «Very fast way», предлагаю взять мой готовый конфиг.
Открываем /etc/vsftpd.conf нашим любимым редактором, например:
root@Debian:~# nano /etc/vsftpd.conf
и вставим в файл следующее:
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
#ascii_upload_enable=YES
#ascii_download_enable=YES
ftpd_banner=Welcome to debian.pro ftpd!
#banned_email_file=/etc/vsftpd.banned_emails
chroot_local_user=YES
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list
ls_recurse_enable=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

В файл /etc/vsftpd.chroot_list мы можем записать пользователей, на которых не распространяется правило chroot. Для того, чтобы эта функция заработала — расскоментируйте строку #chroot_list_file=/etc/vsftpd.chroot_list в vsftpd.conf. Ну и не забудьте создать сам файл:
root@Debian:~# touch /etc/vsftpd.chroot_list
Перезагрузим vsftpd:
root@Debian:~# /etc/init.d/vsftpd restart

Ну и проверим наш ftpd. Много флуда, дальше читать совсем не обязательно) статья, собственно, закончена:
Попробуем зайти под анонимом:

root@support-desktop:~# ftp localhost
Connected to localhost.
220 Welcome to debian.pro ftpd!
Name (localhost:inky): anonymous
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.

Попробуем зайти под локальным пользователем, немного погулять по хомяку и попробовать выйти из chroot:
root@support-desktop:~# ftp localhost
Connected to localhost.
220 Welcome to debian.pro ftpd!
Name (localhost:inky): inky
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rwxrwxrwx 1 1001 1001 316 Feb 26 17:27 diff.sh
-rwxr-xr-x 1 1001 1001 2281 Feb 26 22:35 diff2.sh
-rw-r—r— 1 1001 1001 1185 Feb 26 20:26 diff2.sh?
-rw-r—r— 1 1001 1001 357 Feb 07 14:47 examples.desktop
drwxr-xr-x 5 1001 1001 4096 Feb 23 05:06 iMacros
-rwxr-xr-x 1 1001 1001 57 Jun 09 15:53 script100
drwxr-xr-x 3 1001 1001 4096 Jul 25 13:10 scripts
-rw-r—r— 1 0 0 30888 Dec 13 2006 thunder.au
-rw-r—r— 1 1001 1001 22626 Feb 26 20:19 thunder2
-rw-r—r— 1 1001 1001 1642496 Feb 26 20:11 thunder2.au
drwxr-xr-x 2 1001 1001 4096 Feb 26 17:27 tmp
-rwxr-xr-x 1 1001 1001 7422 Jun 09 15:43 urgent
226 Directory send OK.
ftp> cd iMacros
250 Directory successfully changed.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x 2 1001 1001 4096 Feb 22 01:43 Datasources
drwxr-xr-x 5 1001 1001 4096 Apr 11 16:41 Downloads
drwxr-xr-x 2 1001 1001 4096 Feb 22 01:46 Macros
-rwxr-xr-x 1 1001 1001 188 Feb 27 00:19 iMacros.log
226 Directory send OK.
ftp> cd ../
250 Directory successfully changed.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rwxrwxrwx 1 1001 1001 316 Feb 26 17:27 diff.sh
-rwxr-xr-x 1 1001 1001 2281 Feb 26 22:35 diff2.sh
-rw-r—r— 1 1001 1001 1185 Feb 26 20:26 diff2.sh?
-rw-r—r— 1 1001 1001 357 Feb 07 14:47 examples.desktop
drwxr-xr-x 5 1001 1001 4096 Feb 23 05:06 iMacros
-rwxr-xr-x 1 1001 1001 57 Jun 09 15:53 script100
drwxr-xr-x 3 1001 1001 4096 Jul 25 13:10 scripts
-rw-r—r— 1 0 0 30888 Dec 13 2006 thunder.au
-rw-r—r— 1 1001 1001 22626 Feb 26 20:19 thunder2
-rw-r—r— 1 1001 1001 1642496 Feb 26 20:11 thunder2.au
drwxr-xr-x 2 1001 1001 4096 Feb 26 17:27 tmp
-rwxr-xr-x 1 1001 1001 7422 Jun 09 15:43 urgent
226 Directory send OK.
ftp> cd ../
250 Directory successfully changed.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rwxrwxrwx 1 1001 1001 316 Feb 26 17:27 diff.sh
-rwxr-xr-x 1 1001 1001 2281 Feb 26 22:35 diff2.sh
-rw-r—r— 1 1001 1001 1185 Feb 26 20:26 diff2.sh?
-rw-r—r— 1 1001 1001 357 Feb 07 14:47 examples.desktop
drwxr-xr-x 5 1001 1001 4096 Feb 23 05:06 iMacros
-rwxr-xr-x 1 1001 1001 57 Jun 09 15:53 script100
drwxr-xr-x 3 1001 1001 4096 Jul 25 13:10 scripts
-rw-r—r— 1 0 0 30888 Dec 13 2006 thunder.au
-rw-r—r— 1 1001 1001 22626 Feb 26 20:19 thunder2
-rw-r—r— 1 1001 1001 1642496 Feb 26 20:11 thunder2.au
drwxr-xr-x 2 1001 1001 4096 Feb 26 17:27 tmp
-rwxr-xr-x 1 1001 1001 7422 Jun 09 15:43 urgent
226 Directory send OK.

И попробуем зайти под рутом:
root@support-desktop:~# ftp localhost
Connected to localhost.
220 Welcome to debian.pro ftpd!
Name (localhost:inky): root
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.

Всё работает. Спасибо за внимание, удачного использования =)
2012   ftp   linux   ubuntu
Earlier Ctrl + ↓