Настройка ProFTPd

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478

При создании конфигурационных файлов ProFTPd разработчики ориентировались на

соответствующие средства сервера Apache, поэтому, если вам приходилось настраивать

Apache, многие опции ProFTPd будут знакомы вам.

Конфигурационные файлы ProFTPd

Главный конфигурационный файл ProFTPd называется prof tpd. conf; как прави­ло, он располагается в каталоге /etc. В этом файле содержится большинство опций,

используемых для настройки ProFTPd. Строки, содержащие комментарии, начинаются с символа #. Остальные записи представляются в следующем формате:

Директива   [ Значение]

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

рой указан символ /. Пример блока, сформированного с помощью директивы Limit,

приведен ниже. <Limit WRITE>

DenyAll

Allow from 172.21.33.

</Limit>

Помимо главного конфигурационного файла, для настройки ProFTPd используется

также файл ftpusers. Этот файл выполняет те же функции, что и одноименный файл сервера Пользователям, указанным в этом файле, запрещена регистрация на

FTP-сервере. (Строго говоря, ProFTPd применяет для аутентификации модули РАМ, ко­торые, в свою очередь, используют файл По умолчанию при инсталляции ProFTPd создается файл                 в котором указываются такие имена пользователей,

как nobody, daemon и root. Вы можете включить в данный файл учетные записи, со­зданные вами для специальных целей и не предполагающие регистрацию пользователей.

Кроме того, в файле ftpusers можно задать имена обычных пользователей, которым

по каким-либо причинам следует запретить доступ к FTP-серверу.

Опции общего назначения для сервера ProFTPd

В сервере ProFTPd предусмотрено большое количество директив, используемых для настройки этого сервера. Подробную информацию о них вы можете получить из доку­ментации на ProFTPd, представленной по адресу http: //www.proftpd.org/docs/. Вероятнее всего, что, настраивая сервер, вы примете для большинства директив значения по умолчанию.

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

• <Anonymous имя_^каталога>. С помощью данной директивы вы можете со­здать анонимный FTP-сервер. В блоке, созданной посредством этой директивы, задаются другие директивы, используемые для обеспечения анонимного

па. Анонимным пользователям разрешен доступ только к файлам, содержащимся в определенном каталоге, имя которого задается в качестве значения данной опции. Этот каталог ProFTPd указывает в качестве корневого каталога поддерева chroot (использование системной функции chroot () рассматривается в главе 23).

• <Directory имя^каталога>. С помощью данной директивы указывается ка­талог, к которому применяются другие директивы. Значением директивы является

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

посредством директивы <Directory /*>. В этот блок помещаются директивы, с помощью которых задаются характеристики всех каталогов.

• <Global>. Директива <Global> формирует блок, содержимое которого приме­няется ко всему серверу и всем виртуальным узлам, формируемым посредством

<VirtualHost>.

• <Limit группа_команд>: Данная опция задает набор командРТР-клиента, дей­ствия которых ограничены директивами, содержащимися в составе блока. В группу команд входят одна или несколько команд из следующего набора: CDUP, RNFR, RNTO, DELE, RMD, RETR и STOR. В качестве значения данной директивы также могут быть указаны специальные идентификаторы, обозначающие категории

команд. К ним относятся READ (все команды чтения), WRITE (все команды записи), DIRS (все команды для работы с каталогами) и ALL (все команды). Кроме того,

для введения ограничений при регистрации вы можете использовать идентификатор

LOGIN.

• <VirtualHost адрес>. ProFTPd позволяет поставить использование директив в зависимость от адреса клиента. В качестве значения данной директивыется IP-адрес или имя узла, и при обработке запроса с этого адреса применяются директивы, содержащиеся в блоке.

Большинство директив может присутствовать в одном или нескольких блоках. Кроме того, ряд директив указывается за пределами всех блоков; они рассматриваются как гло­бальные опции. Некоторые директивы могут встречаться как за пределами, так и в составе блока. Возможно также присутствие директивы в двух блоках, один из которого входит в состав другого. В этом случае директива с наибольшей степенью вложенности име­ет наивысший приоритет. При настройке FTP-сервера чаще всего приходится изменять значения приведенных ниже директив.

• Allow [ from] идентификаторы_узлов.Даиная директива используется в со­ставе блока <Limit> и указывает, какие клиенты имеют право доступа к ресурсу. В качестве идентификаторов узлов задается список IP-адресов, имен узлов, имен доменов (имя домена должно начинаться с точки) или блоков IP-адресов. Пункты списка отделяются друг от друга запятыми. Для идентификации узлов сети могут также использоваться ключевые слова all и попе. После Allow может стоять ключевое слово но оно никак не изменяет действия, выполняемые данной директивой.

СОВЕТ Вместо имен узлов и доменов рекомендуется использовать блоки IP-адресов. ^     Это уменьшает зависимость FTP-сервера от работы DNS-сервера.

• AllowAll. По умолчанию ProFTPd разрешает доступ к каталогам, но существуют различные способы ограничить доступ. Поместив директиву AllowAll в состав блока <Directory>, <Limit> или <Anonymous>, вы можете восстановить со­глашения, принятые по умолчанию.

• AllowGroup список_арупп. Данная опция разрешает доступ для пользовате­лей, которым в блоке <Limit> запрещено обращаться к ресурсу. В качестве значе­ния этой опции указываются имена групп, разделенные запятыми. Чтобы получить доступ к ресурсу, пользователь должен принадлежать всем указанным группам. Если имени группы предшествует символ !, учитываются лишь пользователи, не принадлежащие данной группе. Эта опция чаще всего используется для того, чтобы отменить для некоторых пользователей ограничения, наложенные такими опциями, как DenyAll.

• AllowOverwrite [on | off. Эта опцияоггределяет, может ли пользователь за­менять файлы на сервере. По умолчанию принимается значение        которое за­прещает замену файлов.

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

• DefaultRoot имя_каталога [список_групп]. С помощью данной опции вы можете ограничить сферу деятельности пользователей подкаталогами опреде­ленного каталога. Для этого надо указать в качестве значения имя соответствующегокаталога. Имя каталога может начинаться с символа /, в этом случае предполагается абсолютное имя. Символ ~ определяет рабочий каталог пользователя. Если дирек­тива DefaultRoot должна иметь отношение лишь к некоторым из пользователей, надо указать их в списке групп. Список групп составляется по тем же правилам, что и для директивы

СОВЕТ Указав глобальную опцию Def aultRoot ~, вы запретите пользователям до­ступ к системным каталогам, а также к рабочим каталогам других пользовате­лей. Настроенный подобным образом, сервер ProFTPd разрешает пользователям обращаться только к своим рабочим каталогам.

• DefaultTransferMode [ascii|binary]. FTP-сервер поддерживает два ре­жима передачи файлов. В двоичном режиме (binary) содержимое файла переда­ется без изменений, а в символьном режиме (ascii) выполняется преобразование

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

ми код программ. Директива DefaultTransferMode устанавливает режим пе­редачи, используемый по умолчанию. При инсталляции сервера задается значение

ascii данной директивы.

• Deny [from] идентификаторы_узлов. Данная директива выполняет дей­ствия, противоположные директиве Allow. Она используется в составе блока <Limit> и запрещает клиентам доступ к ресурсу.

• DenyAll. Данную директиву можно использовать в составе блоков <Limit>,

или <Directory>. Она запрещает всем пользователям доступ к ресурсу. При необходимости вы можете указать в том же блоке одну из директив, отменяющих для некоторых пользователей ограничения, наложенные посредством

DenyAll.

• DenyGroup список_арупп. Эта директива позволяет определять группы, кото­рым запрещен доступ к ресурсу в блоке Список групп формируется так же, как и для директивы AllowGroup.

• DenyUser список_^пользователей.    Данная   директива противоположна AllowUser. Она запрещает доступ к ресурсу в блоке <Limit>.

• DisplayConnect имя_файла. Если в конфигурационном файле указана данная

опция, ProFTPd передает клиенту текст, содержащийся в указанном файле. Это про­исходит после установления соединения, но до завершения процедуры регистрации.

• DisplayFirstChdir имя_файла. Данная директива указывает ProFTPd на то,

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

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

• DisplayLogin иия_файла. Эта директива действует подобно директиве DisplayConnect, но сообщение передается пользователю после успешного за­вершения процедуры регистрации.

• Group идентификатор__группы. Сервер ProFTPd запускается от имени поль­зователя root, но сразу после запуска переходит на выполнение с ограниченными полномочиями. Это снижает незаконного проникновения в систему извне. С помощью данной директивы указывается группа, полномочия которой получает ProFTPd. При инсталляции сервера в качестве значения данной директивы обычно задается или другая подобная группа.

• MaxClients число \ попе. Данная директива позволяет ограничить количество

клиентов, которые могут работать с сервером. Числовое значение (например, ЗО)

определяет максимальное количество клиентов, значение попе снимает данное ограничение.

• Maxlnstances число. Эта директива действует подобно MaxClients, но ес­ли MaxClients задает максимальное количество успешно зарегистрировавшихся

пользователей, то Maxlnstances ограничивает число соединений, устанавлива­емых сервером. Директива Maxlnstances неэффективна при запуске ProFTPd

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

• Order allow, deny | deny, allow. Если в блоке <Limit> присутствуют и за­прещающие, и разрешающие директивы, ProFTPd сначала выполняет проверку на соответствие разрешающим, а лишь затем запрещающим директивам. В результате разрешающие директивы имеют более высокий приоритет, чем запрещающие. Кро­ме того, если отсутствует запрещающая директива, доступ по умолчанию разреша­ется. Поведение сервера можно изменить с помощью опции Order deny, allow.

В этом случае запрещающие директивы получают более высокий приоритет, чем разрешающие, а доступ, не разрешенный явно, не предоставляется.

• RootLogin on |off. По умолчанию ProFTPd отказывает в регистрации пользова­телю root. Если в конфигурационном файле присутствует опция RootLogin on, root получает право работать на FTP-сервере. (Для этого вам, возможно, придется предпринять и другие действия, например, удалить пользователя root из файла /etc/f tpusers.)

• Serverldent on] off ["строка-идєнтификатор"]. Данная директива оп­ределяет, должен ли ProFTPd при установлении соединения предоставлять клиенту сведения о себе. Задавая значение on данной директивы, вы можете также ука­зать строку-идентификатор. По умолчанию сервер сообщает пользователю, что для

реализации функций FTP-сервера используется продукт ProFTPd. Если вы не соби­раетесь объявлять тип программы, вам надо явно указать строку, которая должна передаваться клиенту.

• ServerName "строка-идентификатор". С помощью данной директивы вы можете задать имя сервера, которое будет включаться в состав строки, исполь­зуемой Serverldent. Директива Serverldent позволяет переопределить все

сообщение, но если вы хотите изменить лишь имя сервера, вы можете использовать

для этого опцию ServerName.

• ServerType inetd I standalone. Если вы запускаете ProFTPd посредством су­персервера, вы должны задать значение inetd данной опции, если же для запускаиспользуется сценарий SysV или локальный сценарий, надо установить значение standalone. С помощью данной опции ProFTPd получает сведения о том, запу­щен ли он от имени обычного пользователя и должен ли непосредственно обраба­тывать запрос (inetd), или запуск осуществляется от имени пользователя root и для обработки запросов следует порождать новые процессы (standalone).

• SyslogLevel     emergI alert IcritI error I warn I notice I info I debug.

Данная директива определяет, насколько подробные сведения должны записываться в файл протокола. Значения расположены по мере возрастания объема записываемой информации: emerg соответствует самым общим, a debug - наиболее подробным сведениям.

• Transf erLog имя_фа йла \ NONE. С помощью данной директивы вы можете ука­зать файл протокола для помещения в него сведений о переданных файлах или за­претить запись подобной информации (для этого надо задать значение NONE). Дан­ная директива позволяет создавать различные файлы протоколов, предназначенные для разных целей. Она может независимо использоваться в блоках <Anonymous>, <VirtualHost> и <Global>, а также указываться за пределами всех блоков.

• Umask маска_файла [маска_ката лог а]. Данная директива позволяет задать маску umas k, которая будет использоваться при создании новых файлов (и, возмож­но, новых каталогов). По умолчанию принимается значение 022, приемлемое для многих систем.

• UseFtpUsers on |off. Задавая значениеoff директив^^^^^^^изегз, вы мо­жете запретить использование файла /etc/ftpusers. По умолчанию для данной директивы устанавливается значение on.

• UserAlias псевдоним имя_пользователя. В обычных условиях ProFTPd использует для аутентификации пользовательское имя, указанное при регистрации.

Посредством данной директивы вы можете задать псевдоним, который будет отобра­жаться в имя конкретного пользователя. Например, если в конфигурационном фай­ле указана опция UserAlias rjones ronald, то при указании имени rjones аутентификация будет производиться с помощью учетной записи ronald. (Такая конфигурация часто используется в анонимных FTP-серверах, где для аутентифи­кации всех пользователей применяется учетная запись

Директивы, приведенные выше, а также другие директивы, не рассмотренные в дан­ной главе, позволяют настроить ProFTP для выполнения самых разнообразных задач. Стандартная конфигурация позволят пользователям регистрироваться на сервере и рабо­тать с файлами, расположенными в их рабочих каталогах. В конфигурационном файле

можно создать специальный блок <Anonymous> для поддержки анонимных обращений.

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