Установить простой web-сервер apache на RedHat 6.0 необычайно просто. Во-первых, я убедился в том, что apache rpm-пакет был установлен в процессе установки RedHat. Если нет – поместите RH CD в ваш CDROM, смонтируйте его, и установите пакет apache-*.rpm (вместо “*” имя содержит номер версии и платформу). Если я знаю, что я хочу установить, то сделать это – просто (как “root”):
cd /mnt/cdrom/RedHat/RPMS
rpm -ivh apache*.rpm
Потом, я запускаю “setup” (как “root”) и убеждаюсь, что демон(daemon) httpd (в “системных сервисах(system services)”) размещен. [Демон (daemon) это программа, которая "сидит" в фоновом режиме и пробуждается, когда это необходимо. В случае с httpd, он проснется, когда кто-нибудь будет обращаться к вашему http-серверу.]
Теперь httpd будет запускаться автоматически каждый раз, когда я запускаю компьютер. Кроме того, я могу запускать его вручную (как “root”):
/etc/rc.d/init.d/httpd start
и отключать, используя:
/etc/rc.d/init.d/httpd stop
Я проверил бы наличие директории /home/httpd (при отсутствии создал бы), и внутри нее поддиректории html–это “корневая директория (root directory)” для людей, обращающихся к моему компьютеру через Web (”их корневая директория” значит, что у них не будет возможности обратиться к директориям выше /home/httpd/html/ в вашей системе). По умолчанию, эта директория содержит несколько файлов html и руководство, которые программа установки apache размещает там. Так что теперь я мог бы обратиться к моему WEB-серверу из домашней сети. Например, я мог бы ввести в строку “Location” программы Mozilla:
http://my_http_server_name
и прочитать руководство к Apache.
Для того, чтобы наполнить мой сервер содержимым, я перемещаю файлы примеров от Apache куда-нибудь еще, и копирую мои html-файлы (которые я желаю опубликовать) в директорию /home/httpd/html/ (не забудьте включить файл index.html, он будет открыт первым, когда кто-нибудь обратится к вашему серверу).
Конфигурационные файлы apache и журнал(log)-файлы располагаются в директории /etc/html/ ,где вы сможете просмотреть/настроить их. Журнал(log)-файлы могут быть просмотрены в “реальном времени”, используя эту простую команду (как “root”):
tail -f /etc/httpd/logs/access_log
[Команда tail обычно выдает на экран конец ("хвост(tail)") текстового файла. С флагом "-f", "tail" сохраняет на экране хвост журнал-файла с учетом его роста -- очень удобно для просмотра того, кто в данный момент входит на ваш сервер.]
Для графической установки сервера Apache, попробуйте (в X-терминале, как “root”, если вы установили “Comanche” с вашего RedHat CD):
comanche
Простой ftp-сервер
С моими более старыми дистрибутивами RedHat Linux (RH<7.1), установка ftp-сервера не могла быть проще — он просто работал по умолчанию. Это потому, что ftp-сервис разрешен по умолчанию как один из стандартных сервисов (так же как и telnet или gopher), в файле /etc/inetd.conf. Здесь наиболее значимая часть моего файла /etc/inted.conf: ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd gopher stream tcp nowait root /usr/sbin/tcpd gn Вторая часть моих настроек ftp-сервера находится в файле /etc/passwd который определяет псевдо-пользователя ftp: ftp:*:14:50:FTP User:/home/ftp: Двоеточие “:” это разделитель полей. Первое поле – имя псевдопользователя “ftp”, Звездочка “*” – второе поле – объявляет, что пароль отключен (никто не сможет войти с именем пользователя “ftp”), пользовательский идентификатор 14, идентификатор группы 50, “FTP User” это коментарий, домашняя директория /home/ftp, последнее поле осталось пустым (для “нормального” пользователя, это означает имя оболочки, назначенной по умолчанию). Поскольку эти установки уже произведены в моей системе для меня моим RedHat, кто-нибудь может войти через ftp на мой компьютер либо как пользователь (с вводом пароля и переходом в его домашнюю директорию), либо как “безымянный(anonymous)” с использованием электронного почтового адреса в качестве пароля. Любой пользователь в строке “location” своего Mozilla может ввести что-то вроде: ftp://my_computer_name и автоматически подключиться (Mozilla позаботится о вводе имени пользователя “anonymous” и адреса электронной почты как пароля). Анонимные пользователи ftp направляются в директорию /home/ftp , которая становится для них корневой (они не смогут работать с вышерасположенными директориями). Я располагаю файлы, которые я собираюсь предоставить пользователям в директории /home/ftp/pub . Директория /home/ftp/bin содержит команды, предназначенные для исполнения пользователями ftp. В моей системе это: compress, cpio, gzip, ls, sh, tar, zcat; все с правами “только для выполнения” (111). Директория /home/ftp/etc содержат файлы установок для обеспечения доступа (редактированные passwd, group, ld.so.cache). Директория /home/ftp/lib содержит библиотеки (Я думаю, эти библиотеки используются программами, к которым разрешен доступ анонимных пользователей). Red Hat 7.1 использует xinetd вместо старого inetd, и большинство сетевых сервисов по умолчанию отключены. Если вы не можете использовать вход через telnet даже на собственную машину или не можете пользоваться другими сервисами, вы должны осмотреть файлы в директории /etc/xinetd.d, и редактировать файл с именем сервиса, так чтобы он содержал: “disable = no” . Это сделано из соображений безопасности — вы должны выбрать необходимые сервисы и разрешить только их. Не включайте ftp, если он вам не нужен — могут возникнуть некоторые проблемы с безопасностью. Если вы разрешили сетевые службы, убедитесь, что вы предусмотрительно настроили файлы /etc/hosts.allow и /etc/host.deny для безопасности. Файл примера /etc/xinetd.d/tpfp показывает, что сервис отключен: service tftp { disable = yes socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot } Если у вас нет этих файлов, выполните cat чтобы увидеть какие сервисы установлены в вашей системе. Демоны большинства сервисов будут запускаться автоматически при старте системы, если это разрешено с помощью программы setup (как “root”). 4.5.9 Как получить доступ к моему компьютеру извне, когда я подключаюсь к сети через телефон?? Довольно трудно, поскольку ваш IP-адрес выдается динамически вашим провайдером из его пула IP-адресов, и, следовательно, ваш IP-адрес каждый раз разный. (Если, конечно, вы не заключили отдельного соглашения с вашим провайдером). Для telnet, ftp или http из внешнего мира необходимо знать ваш текущий IP-адрес. Чтобы найти мой IP-адрес, я использую команду “interface configuration” которая, при выполнении без параметров, отображает информацию о всех активных сетевых интерфейсах, представленных на моей машине: /sbin/ifconfig На моей машине три параграфа информации : eth0 (Первый сетевой ethernet-интерфейс к компьютерам моей домашней сети), lo (интерфейс только-к-себе(loopback-only), с IP-адресом 127.0.0.1 должен быть представлен на каждой машине) и ppp0 (первый интефейс точка-к-точке(point-to-point protocol)). Мой текущий IP-адрес, назначенный мне моим провайдером, отображается поз заголовком ppp0. (ваша Linux-машина может иметь несколько IP адресов в один момент времени, так если у вас “статический” IP-адрес который вы используете в домашней сети, это совершенно верно, но видно лишь в вашей домашней сети.) Раз я знаю IP-адрес, я могу послать его через ICQ или e-mail друзьям, которые могут в этом случае, например, получить вход через telnet или ftp на мой компьютер (если у них есть учетная запись на моей машине) и выполнить программу на моей linux-машине, или ввести http://my_ip_address в строку “location” своего браузера, чтобы мосмотреть мои домашние странички, и т.д. Если у моих друзей есть Xwindows на их локальной машине, они могут так же исполнять графические программы на моем сервере, направив вывод на свой компьютер. Кроме того, можно написать короткий командный файл, который будет уведомлять моих друзей о моем входе в Интернет и ввести имя командного файла в kppp-setup-account-edit-dial-”выполнить программу после соединения(execute program upon connect)”. Здесь, например, короткий скрипт сообщающий мне на работу, когда кто-то у меня дома входит в сеть. (Этот текст был введен в файл, который я сделал выполняемым с помощью chmod o+x file_name) : #!/bin/bash sleep 15 /sbin/ifconfig | mail -s notification my_email_address Первая строка сообщает моему компьютреру, что этот командный файл надо интерпретировать как файл скрипта оболочки bash. Вторая строка заставляет компьютер ждать 15 секунд (просто чтобы убедиться, что электронная почта не будет послана до тех пор, пока соединение не будет установлено). Третья строка выполняет команду ifconfig и передает ее вывод на вход программы mail, которая посылает его на my_email_address c темой сообщения “предупреждение(notification)”. Более гибкий путь состоит в том, чтобы сконфигурировать его как dial-up-ppp-сервер (в противоположность dial-in-клиенту, который вы используете для подключения к вашему провайдеру). Если у вас есть простой способ для того, чтобы сделать это – пожалуйста, напишите. В общем, в отличие от MS Windows 3.x/95/98, которые серьезно ограничивают траффик в вашей сети, Linux ориентирован на работу в сети и позволяет осуществлять все виды соединений как С так и НА ваш Linux-компьютер. Мощные сетевые возможности – сила Linux, но для настоящего новичка они могут стать проблемой (см. следующий вопрос). 4.5.10 Может ли мой домашний компьютер быть взломан? К сожалению, это весьма возможно и весьма просто. Каждый раз, когда вы присоединяетесь к провайдеру, вы рискуете. В предыдующем вопросе вы можете узнать, как это происходит. Естественно, риск выше, если соединение постоянное (например кабельный модем), и ниже, когда соединения кратковременны (как обычно происходит при соединении через модем). Реальную опасность представляет непрошенный гость, если он сможет войти в систему, используя любую учетную запись, которую сможет подобрать (или выведать) – и получить права “root”. Обычно это возможно, если вы действительно администратор – новичок и/или ваша машина не ориентирована на настоящую безопасность (вы же дома, не так ли — зачем думать о безопасности!). Чтобы защитить себя, вы не должны позволить посторонним вломиться на ваш компьютер. Используйте длинные и сложные пароли для ВСЕХ учетных записей на вашем компьютере. Меняйте пароли регулярно. Для того чтобы навязать всем пользователям вашего компьютера правильную политику в отношении паролей, выполните (как “root”, например в RH6.0) linuxconf и под “политики паролей и учетных записей(password and account policies)” измените минимальную длину пароля на 6 или более знаков, минимальное количество не-буквенных знаков на 1 или 2, количество дней, после которых пароль должен быть сменен, на что-то вроде 90 или менее, и установите предупреждение об устарении пароля на 7 дней перед устарением. Остальную информацию о паролях смотрите здесь (FAQ2.htm#pass_security). Абсолютно НИКОГДА не создавайте учетных записей без пароля или со слабыми паролями. Не работайте на своем компьютере, как “root” — если вы выполняете программу с “дырами в безопасности” как “root”, кто-то может найти возможность взломать ваш компьютер. Старые Linux-дистрибутивы имели известные дыры в безопасности, так что используйте более новые версии, особенно если вашим компьютером могут воспользоваться ненадежные люди, или если ваш компьютер выполняет серверные функции (например, ftp или http сервер). Кроме того, совсем неплохая идея – регулярно просматривать все файлы, в которых фиксируются все входы пользователей в систему: /var/log/secure (самый последний log) /var/log/secure.1 (более старый) /var/log/secure.2 (еще более старый), и т.д. Кроме того, полезны log-файлы в директории /var/log. Проверяйте их время от времени. Наиболее распространенные “предупреждения(warning)” относятся к сканированию портов вашего компьютера – повторяющиеся попытки входа с какого-то IP-адреса на ваш telnet, ftp, finger или другой порт. Это значит, что кто-то хочет узнать больше о вашем компьютере. Если вы не используете удаленного соединения с вашей машиной, есть прекрасная идея ограничить права на использование сетевых сервисов “со стороны сервера” (все сетевые сервисы перечислены в файле /etc/inetd.conf) машинами вашей домашней сети. Доступ контролируется двумя файлами: /etc/hosts.allow и /etc/hosts.deny. Эти файлы контроля за доступом работают следующим образом. Когда кто-то извне запрашивает соединение, файл /etc/host.allow сканируется первым и если одно из имен, содержащихся в нем и имя компьютера, запрашивающего соединение совпадают, доступ разрешен (независимо от содержимого файла /etc/host.deny ). Иначе, сканируется файл /etc/host.deny, и если имя машины, с которой запрашивается соединение совпадает с одним из имен в файле, соединение закрывается. Если совпадения не найдены, разрешение предоставляется. B. Staehle (Гуру в Linux-модемах) дал мне совет не устанавливать сетевые службы вообще. “Если ваши сетевые службы не установлены правильно, ваш компьютер может быть захвачен любым скриптописателем. Новичкам _НЕ_СТОИТ_ разрешать сервисы (ftp, telnet, www) во внешний мир. Если вы “должны” устанавливать их, убедитесь в том, что вы разрешили доступ только с тех машин, которые можете контролировать. Файл /etc/hosts.deny должен содержать ALL: ALL а /etc/hosts.allow должен содержать ALL: 127.0.0.1 для разрешения входа только с этого компьютера. Не используйте имен (только IP-адреса)!”. Действительно, мой /etc/host.deny, как и было посоветовано, содержит (ALL: ALL), но мой /etc/hosts.allow содержит еще два компьютера, имеющих полный доступ, и еще один для входа через telent и ftp: (IP-адреса вымышлены): ALL: 127.0.0.1, 100.200.0.255, 100.200.69.1 in.telnetd, in.ftpd: 100.200.0.2 В вышеуказанных примерах “ALL: ALL” означает “ВСЕ(ALL) службы, ВСЕ(ALL) компьютеры”, то есть “соединение со всех компьютеров ко всем сетевым службам” идущих с “любого компьютера”. Для большей информации, смотрите превосходное “Руководство сетевого администратора Linux (Network Administrator Guide)” которое, разумеется, есть в вашем дистрибутиве. Я, например, даже распечатал эту книгу. Чтобы проверить, какие сетевые службы вашего компьютера доступны из внешнего мира, вы можете воспользоваться специальными WEB-инструментами. Зайдите на: http://scan.sygatetech.com/ и щелкните “scan now”. Здесь другие места в которых могут вас просканировать: http://crypto.yashy.com/ http://davidovv2.homestead.com/freetoolsservices.html http://privacy.net/ http://scan.sygatetech.com/ http://security1.norton.com/us/intro.asp http://suicide.netfarmers.net/ http://trojanscanner.com/cgi-bin/nph-portscanner http://www.doshelp.com/dostest.htm http://www.dslreports.com/secureme/ http://www.dslreports.com http://www.earthlink.net/freescan/ http://www.grc.com http://www.hackerwhacker.com/ http://www.nessus.org http://www.netcop.com/newscan/fullscan.html http://www.privacyscan.org http://www.sdesign.com/cgi-bin/fwtest.cgi http://www.sdesign.com/securitytest/index.htmll http://www.securityspace.com/ http://www.vulnerabilities.org/nmapemail.html http://grc.com http://www.dslreports.com/scan http://www.dslreports.com/security/sec025.htm Из соображений безопасности, неплохо бы не афишировать операционную систему и ее версию, которые вы используете. Я сменил содержимое файла /etc/issue и /etc/issue.net, которые на моем компьютере выглядели так: Red Hat Linux release 6.2 (Zoot) Kernel 2.2.14-5.0 on an i586 на что-то вроде: WARNING: THIS IS A PRIVATE NETWORK UNAUTHORIZED USE IS PROHIBITED AND ALL ACTIVITIES ARE LOGGED IBM S/390 LINUX Эта шуточка может слегка (чуть-чуть) увеличить (я надеюсь) безопасность моей системы. Содержимое файлов /etc/issue и /etc/issue.net я изменяю при каждой загрузке (когда выполняется /etc/rc.local). Чтобы сделать изменения постоянными, я могу сделать эти файлы доступными только для чтения для всех пользователей, выполнив (как “root”): chmod a=r /etc/issue* Вместо последней команды я мог бы отредактировать (как “root”), командный файл /etc/rc.d/rc.local и закоментировать 5 строк, используя ### таким образом, чтобы его значимая часть содержала: # Здесь перезаписывается /etc/issue при каждой загрузке. Делаем несколько изменений # необходимых, чтобы не потерять /etc/issue при перезагрузке ### echo “” > /etc/issue
### echo “$R” >> /etc/issue
### echo “Kernel $(uname -r) on $a $SMP$(uname -m)” >> /etc/issue
### cp -f /etc/issue /etc/issue.net
### echo >> /etc/issue
Другая хорошая мера безопасности – выключить ping. Ping – это система, отвечающая на запрос, посланный с другого компьютера. Она весьма полезна при установке и отладке сетевых соединений, чтобы проверить, что ваша машина доступна по сети. Она может так же быть использована при прощупывании и/или атаке ее перегружающими ping-запросами (”ping of death”). Для запрета ping-запросов из сети я использую IP-маскарадинг. Я взял, слегка изменив, следующие команды, вместе с пояснениями с http://www.securityfocus.com/focus/linux/articles/linux-securing2.html:
ipchains -A input -p icmp –icmp-type echo-request -i ppp0 -j REJECT -l
(1) (2) (3) (4) (5) (6) (7)
Разяснение флагов ipchains:
1. Добавим новое правило.
2. Указать сферу применения правила, в этом случае правило будет применено ко входящим пакетам.
3. Протокол, к которому будет применяться правило. В этом случае – icmp.
4. ICMP тип, в этом случае icmp эхо-ответ на запрос будет блокирован. “Эхо-ответ (ICMP echo)” значит ping.
5. Имя интерфейса. В этом случае это первое телефонное соединение, ppp0.
6. Цель,что мы будем делать с пакетами запроса.
7. Отмечать все пакеты по некоторому критерию в системном журнал-файле.
IP-маскарад более детально описан в главе “Маскарадинг” этого руководства.
Другие меры предосторожности. Я время от времени посматриваю, чтоба кто-то не установил “root kit” на моей системе. Я использую “chkrootkit” (очень маленькую, 25k, скачанную с http://www.chkrootkit.org/). После скачивания:
su [provide password]
cd /usr/local
tar xvzf /home/my_name/chkrootkit.tar.gz
cd /usr/local/chkro
make
./chrootkit
Последняя команда предназначена для поиска “root kit” в моей системе. “Rootkit” – это программы, оставляющие черный ход каждому, однажды получившему права “root”, устанавливаемые в целях прослушивания, просматривания, защиты своего доступа, и т.д.
Похожие записи
No user прокомментировали сообщение
Оставить комментарий