Показаны сообщения с ярлыком debian. Показать все сообщения
Показаны сообщения с ярлыком debian. Показать все сообщения

среда, 11 января 2017 г.

Гайд по обеспечению безопасности Linux-системы


Коллега на работе показал мне статью из журнала Хакер по защите систем на базе Linux.
Статья просто великолепна, и, учитывая, что интернет сейчас активно перлюстрируется размещаю ее у себя в блоге. На всякий случай




Введение
Пароль
Шифруемся
Заметаем следы
Предотвращение BruteForce-атак
Угроза извне
Выявляем вторжения
Кто-то наследил…
За пределами
Луковая маршрутизация
Борьба с флудом
Выводы


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


Введение

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

Когда я потерял смартфон, мне сильно повезло, что установленный на него антивор оказался работоспособным и позволил удаленно стереть все данные из памяти девайса. Когда я по невнимательности открыл SSH-порт на домашней машине с юзером без пароля (!) во внешний мир (!!), мне сильно повезло, что на машину пробрались скрипт-кидди, которые кроме смешной истории шелла не оставили никаких серьезных следов своего пребывания в системе. Когда я случайно опубликовал в интернете листинг со своим паролем от Gmail, мне сильно повезло, что нашелся добрый человек, который предупредил меня об этом.

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

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


Пароль!

Все начинается с паролей. Они везде: в окне логина в Linux-дистрибутиве, в формах регистрации на интернет-сайтах, на FTP- и SSH-серверах и на экране блокировки смартфона. Стандарт для паролей сегодня — это 8–12 символов в разном регистре с включением цифр. Генерировать такие пароли своим собственным умом довольно утомительно, но есть простой способ сделать это автоматически:

$ openssl rand -base64 6

Никаких внешних приложений, никаких расширений для веб-браузеров, OpenSSL есть на любой машине. Хотя, если кому-то будет удобней, он может установить и использовать для этих целей pwgen (поговаривают, пароль получится более стойким):

$ pwgen -Bs 8 1

Где хранить пароли? Сегодня у каждого юзера их так много, что хранить все в голове просто невозможно. Довериться системе автосохранения браузера? Можно, но кто знает, как Google или Mozilla будет к ним относиться. Сноуден рассказывал, что не очень хорошо. Поэтому пароли надо хранить на самой машине в зашифрованном контейнере. Отцы-основатели рекомендуют использовать для этого KeePassX. Штука графическая, что не сильно нравится самим отцам-основателям, но зато работает везде, включая известный гугль-зонд Android (KeePassDroid). Останется лишь перекинуть базу с паролями куда надо.


Шифруемся

Шифрование — как много в этом слове… Сегодня шифрование везде и нигде одновременно. Нас заставляют пользоваться HTTPS-версиями сайтов, а нам все равно. Нам говорят: «Шифруй домашний каталог», а мы говорим: «Потом настрою». Нам говорят: «Любимое занятие сотрудников Dropbox — это ржать над личными фотками юзеров», а мы: «Пусть ржут». Между тем шифрование — это единственное абсолютное средство защиты на сегодняшний день. А еще оно очень доступно и сглаживает морщины.

В Linux можно найти тонны средств шифрования всего и вся, от разделов на жестком диске до одиночных файлов. Три наиболее известных и проверенных временем инструмента — это dm-crypt/LUKS, ecryptfs и encfs. Первый шифрует целые диски и разделы, второй и третий — каталоги с важной информацией, каждый файл в отдельности, что очень удобно, если потребуется делать инкрементальные бэкапы или использовать в связке с Dropbox. Также есть несколько менее известных инструментов, включая TrueCrypt например.

Сразу оговорюсь, что шифровать весь диск целиком — задача сложная и, что самое важное, бесполезная. Ничего особо конфиденциального в корневом каталоге нет и быть не может, а вот домашний каталог и своп просто кладезь инфы. Причем второй даже больше, чем первый, так как туда могут попасть данные и пароли уже в расшифрованном виде (нормальные программеры запрещают системе скидывать такие данные в своп, но таких меньшинство). Настроить шифрование и того и другого очень просто, достаточно установить инструменты ecrypts:

$ sudo apt-get install ecryptfs-utils

И, собственно, включить шифрование:

$ sudo ecryptfs-setup-swap
$ ecryptfs-setup-private

Далее достаточно ввести свой пароль, используемый для логина, и перезайти в систему. Да, все действительно так просто. Первая команда зашифрует и перемонтирует своп, изменив нужные строки в /etc/fstab. Вторая — создаст каталоги ~/.Private и ~/Private, в которых будут храниться зашифрованные и расшифрованные файлы соответственно. При входе в систему будет срабатывать PAM-модуль pam_ecryptfs.so, который смонтирует первый каталог на второй с прозрачным шифрованием данных. После размонтирования ~/Private окажется пуст, а ~/.Private будет содержать все файлы в зашифрованном виде.

Не возбраняется шифровать и весь домашний каталог целиком. Производительность при этом упадет не сильно, зато под защитой окажутся вообще все файлы, включая тот же сетевой каталог ~/Dropbox. Делается это так:

# ecryptfs-migrate-home -u vasya

Кстати, места на диске должно быть в 2,5 раза больше, чем данных у vasya, так что рекомендую заранее почиститься. После завершения операции следует сразу войти под юзером vasya и проверить работоспособность:

$ mount | grep Private
/home/vasya/.Private on /home/vasya type ecryptfs ...

Если все ок, незашифрованную копию данных можно затереть:

$ sudo rm -r /home/vasya.*

Ecryptfs предупреждает нас


Заметаем следы

ОK, пароли в надежном месте, личные файлы тоже, что теперь? А теперь мы должны позаботиться о том, чтобы какие-то куски наших личных данных не попали в чужие руки. Ни для кого не секрет, что при удалении файла его актуальное содержимое остается на носителе даже в том случае, если после этого произвести форматирование. Наши зашифрованные данные будут в сохранности даже после стирания, но как быть с флешками и прочими картами памяти? Здесь нам пригодится утилита srm, которая не просто удаляет файл, но и заполняет оставшиеся после него блоки данных мусором:

$ sudo apt-get install secure-delete
$ srm секретный-файл.txt home-video.mpg

Как всегда, все просто до безобразия. Далее, если речь идет о всем носителе, то можно воспользоваться старым добрым dd:

# dd if=/dev/zero of=/dev/sdb

Эта команда сотрет все данные на флешке sdb. Далее останется создать таблицу разделов (с одним разделом) и отформатировать в нужную ФС. Использовать для этого рекомендуется fdisk и mkfs.vfat, но можно обойтись и графическим gparted.


Предотвращение BruteForce-атак

Fail2ban — демон, который просматривает логи на предмет попыток подобрать пароли к сетевым сервисам. Если такие попытки найдены, то подозрительный IP-адрес блокируется средствами iptables или TCP Wrappers. Сервис способен оповещать владельца хоста об инциденте по email и сбрасывать блокировку через заданное время. Изначально Fail2ban разрабатывался для защиты SSH, сегодня предлагаются готовые примеры для Apache, lighttpd, Postfix, exim, Cyrus IMAP, named и так далее. Причем один процесс Fail2ban может защищать сразу несколько сервисов.

В Ubuntu/Debian для установки набираем:

# apt-get install fail2ban

Конфиги находятся в каталоге /etc/fail2ban. После изменения конфигурации следует перезапускать fail2ban командой:

# /etc/init.d/fail2ban restart

Угроза извне

Теперь позаботимся об угрозах, исходящих из недр всемирной паутины. Здесь я должен был бы начать рассказ об iptables и pf, запущенном на выделенной машине под управлением OpenBSD, но все это излишне, когда есть ipkungfu. Что это такое? Это скрипт, который произведет за нас всю грязную работу по конфигурированию брандмауэра, без необходимости составлять километровые списки правил. Устанавливаем:

$ sudo apt-get install ipkungfu

Правим конфиг:

$ sudo vi /etc/ipkungfu/ipkungfu.conf
# Локальная сеть, если есть — пишем адрес сети вместе с маской, нет — пишем loopback-адрес
LOCAL_NET="127.0.0.1"

# Наша машина не является шлюзом
GATEWAY=0

# Закрываем нужные порты
FORBIDDEN_PORTS="135 137 139"

# Блокируем пинги, 90% киддисов отвалится на этом этапе
BLOCK_PINGS=1

# Дропаем подозрительные пакеты (разного рода флуд)
SUSPECT="DROP"

# Дропаем «неправильные» пакеты (некоторые типы DoS)
KNOWN_BAD="DROP"

# Сканирование портов? В трэш!
PORT_SCAN="DROP"

Для включения ipkungfu открываем файл /etc/default/ipkungfu и меняем строку IPKFSTART = 0 на IPKFSTART = 1. Запускаем:

$ sudo ipkungfu

Дополнительно внесем правки в /etc/sysctl.conf:

$ sudo vi /etc/systcl.conf
# Дропаем ICMP-редиректы (против атак типа MITM)
net.ipv4.conf.all.accept_redirects=0
net.ipv6.conf.all.accept_redirects=0
# Включаем механизм TCP syncookies
net.ipv4.tcp_syncookies=1
# Различные твики (защита от спуфинга, увеличение очереди «полуоткрытых» TCP-соединений и так далее)
net.ipv4.tcp_timestamps=0
net.ipv4.conf.all.rp_filter=1
net.ipv4.tcp_max_syn_backlog=1280
kernel.core_uses_pid=1

Активируем изменения:

$ sudo sysctl -p

Выявляем вторжения

Snort — один из любимейших инструментов админов и главный фигурант всех руководств по безопасности. Штука с долгой историей и колоссальными возможностями, которой посвящены целые книги. Что он делает в нашем гайде по быстрой настройке безопасной системы? А здесь ему самое место, Snort можно и не конфигурировать:

$ sudo apt-get install snort
$ snort -D

Все! Я не шучу, стандартных настроек Snort более чем достаточно для защиты типовых сетевых сервисов, если, конечно, они у тебя есть. Нужно только время от времени просматривать лог. А в нем можно обнаружить строки типа этих:

[**] [1:2329:6] MS-SQL probe response overflow attempt [**]
[Classification: Attempted User Privilege Gain] [Priority: 1]
[Xref => [url]http://www.securityfocus.com/bid/9407][/url]

Упс. Кто-то пытался вызвать переполнение буфера в MySQL. Тут сразу есть и ссылочка на страницу с детальным описанием проблемы. Красота.


Кто-то наследил…

Кто-то особенно умный смог обойти наш брандмауэр, пройти мимо Snort, получить права root в системе и теперь ходит в систему регулярно, используя установленный бэкдор. Нехорошо, бэкдор надо найти, удалить, а систему обновить. Для поиска руткитов и бэкдоров используем rkhunter:

$ sudo apt-get install rkhunter

Запускаем:

$ sudo rkhunter -c --sk

Софтина проверит всю систему на наличие руткитов и выведет на экран результаты. Если зловред все-таки найдется, rkhunter укажет на место и его можно будет затереть. Более детальный лог располагается здесь: /var/log/rkhunter.log. Запускать rkhunter лучше в качестве cron-задания ежедневно:

$ sudo vi /etc/cron.daily/rkhunter.sh
#!/bin/bash
/usr/bin/rkhunter -c --cronjob 2>&1 | mail -s "RKhunter Scan Results" vasya@email.com

Заменяем email-адрес Васи на свой и делаем скрипт исполняемым:

$ sudo chmod +x /etc/cron.daily/rkhunter.sh

Базу rkhunter рекомендуется время от времени обновлять с помощью такой команды:

$ sudo rkhunter --update

Ее, кстати, можно добавить перед командой проверки в cron-сценарий. Еще два инструмента поиска руткитов:

$ sudo apt-get install tiger
$ sudo tiger
$ sudo apt-get install lynis
$ sudo lynis -c

По сути, те же яйца Фаберже с высоты птичьего полета, но базы у них различные. Возможно, с их помощью удастся выявить то, что пропустил rkhunter. Ну и на закуску debsums — инструмент для сверки контрольных сумм файлов, установленных пакетов с эталоном. Ставим:

$ sudo apt-get install debsums

Запускаем проверку:

$ sudo debsums -ac

Как всегда? запуск можно добавить в задания cron.

rkhunter за работой

В моей системе руткитов нет


За пределами

Теперь поговорим о том, как сохранить свою анонимность в Сети и получить доступ к сайтам и страницам, заблокированным по требованию различных организаций-правообладателей и прочих Мизулиных. Самый простой способ сделать это — воспользоваться одним из тысяч прокси-серверов по всему миру. Многие из них бесплатны, но зачастую обрезают канал до скорости древнего аналогового модема.

Чтобы спокойно ходить по сайтам и только в случае необходимости включать прокси, можно воспользоваться одним из множества расширений для Chrome и Firefox, которые легко находятся в каталоге по запросу proxy switcher. Устанавливаем, вбиваем список нужных прокси и переключаемся на нужный, увидев вместо страницы табличку «Доступ к странице ограничен по требованию господина Скумбриевича».

В тех ситуациях, когда под фильтр попал весь сайт и его адрес внесли в черный список на стороне DNS-серверов провайдеров, можно воспользоваться свободными DNS-серверами, адреса которых опубликованы здесь. Просто берем два любых понравившихся адреса и добавляем в /etc/resolv.conf:

nameserver 156.154.70.22
nameserver 156.154.71.22

Чтобы разного рода DHCP-клиенты и NetworkManager’ы не перезаписали файл адресами, полученными от провайдера или роутера, делаем файл неперезаписываемым с помощью расширенных атрибутов:

$ sudo chattr +i /etc/resolv.conf

После этого файл станет защищен от записи для всех, включая root.

Чтобы еще более анонимизировать свое пребывание в Сети, можно воспользоваться также демоном dnscrypt, который будет шифровать все запросы к DNS-серверу в дополнение к прокси-серверу, используемому для соединения с самим сайтом. Устанавливаем:

$ wget http://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-proxy-1.3.2.tar.bz2
$ bunzip2 -cd dnscrypt-proxy-*.tar.bz2 | tar xvf -
$ cd dnscrypt-proxy-*
$ sudo apt-get install build-essential
$ ./configure && make -j2
$ sudo make install

Указываем в /etc/resolv.conf loopback-адрес:

$ vi /etc/resolv.conf
nameserver 127.0.0.1

Запускаем демон:

$ sudo dnscrypt-proxy --daemonize

Кстати, версии dnscrypt есть для Windows, iOS и Android.


Луковая маршрутизация

Что такое луковая маршрутизация? Это Tor. А Tor, в свою очередь, — это система, которая позволяет создать полностью анонимную сеть с выходом в интернет. Термин «луковый» здесь применен относительно модели работы, при которой любой сетевой пакет будет «обернут» в три слоя шифрования и пройдет на пути к адресату через три ноды, каждая из которых будет снимать свой слой и передавать результат дальше. Все, конечно, сложнее, но для нас важно только то, что это один из немногих типов организации сети, который позволяет сохранить полную анонимность.

Тем не менее, где есть анонимность, там есть и проблемы соединения. И у Tor их как минимум три: он чудовищно медленный (спасибо шифрованию и передаче через цепочку нод), он будет создавать нагрузку на твою сеть (потому что ты сам будешь одной из нод), и он уязвим для перехвата трафика. Последнее — естественное следствие возможности выхода в интернет из Tor-сети: последняя нода (выходная) будет снимать последний слой шифрования и может получить доступ к данным.

Тем не менее Tor очень легко установить и использовать:

$ sudo apt-get install tor

Все, теперь на локальной машине будет прокси-сервер, ведущий в сеть Tor. Адрес: 127.0.0.1:9050, вбить в браузер можно с помощью все того же расширения, ну или добавить через настройки. Имей в виду, что это SOCKS, а не HTTP-прокси.


Борьба с флудом

Приведу несколько команд, которые могут помочь при флуде твоего хоста.

Подсчет количества коннектов на определенный порт:

$ netstat -na | grep ":порт\ " | wc -l

Подсчет числа «полуоткрытых» TCP-соединений:

$ netstat -na | grep ":порт\ " | grep SYN_RCVD | wc -l

Просмотр списка IP-адресов, с которых идут запросы на подключение:

$ netstat -na | grep ":порт\ " | sort | uniq -c | sort -nr | less

Анализ подозрительных пакетов с помощью tcpdump:

# tcpdump -n -i eth0 -s 0 -w output.txt dst port порт and host IP-сервера

Дропаем подключения атакующего:

# iptables -A INPUT -s IP-атакующего -p tcp --destination-port порт -j DROP

Ограничиваем максимальное число «полуоткрытых» соединений с одного IP к конкретному порту:

# iptables -I INPUT -p tcp --syn --dport порт -m iplimit --iplimit-above 10 -j DROP

Отключаем ответы на запросы ICMP ECHO:

# iptables -A INPUT -p icmp -j DROP --icmp-type 8

Выводы

Вот и все. Не вдаваясь в детали и без необходимости изучения мануалов мы создали Linux-box, который защищен от вторжения извне, от руткитов и прочей заразы, от непосредственно вмешательства человека, от перехвата трафика и слежки. Остается лишь регулярно обновлять систему, запретить парольный вход по SSH, убрать лишние сервисы и не допускать ошибок конфигурирования.

вторник, 14 июля 2009 г.

Wake On Lan на EPIA M (Debian)

Epia M поддерживает функцию WOL Для её включения необходимо
  • На компьютере, который будем дистанционно включать/выключать
    1. Разрешить WOL в Bios
    2. Установить пакет ethtool и активизировать WOL
      $ su
      # apt-get install ethtool
      # ethtool --change eth0 wol g
    3. Добавить в файл /etc/sudoers строку:
      username ALL= NOPASSWD: /sbin/poweroff
      ,где username - имя пользователя, которому разрешено давать команду poweroff без ввода пароля.
    4. Узнать адрес сетевой карты
      $ su
      # ifconfig eth0
      eth0      Link encap:Ethernet  HWaddr 00:46:73:12:1f:ee 
               inet addr:192.168.1.63  Bcast:192.168.1.255  Mask:255.255.255.0
               inet6 addr: fe80::240:63ff:fee2:7fba/64 Scope:Link
               UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
               RX packets:1210 errors:0 dropped:0 overruns:0 frame:0
               TX packets:896 errors:0 dropped:0 overruns:0 carrier:0
               collisions:0 txqueuelen:1000
               RX bytes:113490 (110.8 KiB)  TX bytes:83794 (81.8 KiB)
               Interrupt:12 Base address:0xcc00 
  • На компьютере, с которого будем включать/выключать (у меня ibm X60 с ubuntu 9.04) установить:
    $sudo apt-get install wakeonlan
Для выключения компьютера необходимо выполнить на нем команду
$ sudo poweroff
Для включения с ibm X60:
$ wakeonlan 00:46:73:12:1f:ee
Ссылки

понедельник, 6 июля 2009 г.

Cервер приложений. Настройка NFS

Для автоматического подключения по nfs при старте сервера я модифицировал файл /etc/fstab:
# /etc/fstab: static file system information.
#
# proc /proc proc defaults            0    0
/dev/hda1 / ext3 errors=remount-ro    0    1
/dev/hda5 none swap sw                0    0
#/dev/hdb /media/cdrom0 udf,iso9660 user,noauto        0    0
#/dev/fd0 /media/floppy0 auto rw,user,noauto           0    0
192.168.1.62:/mnt/HD_a2 /mnt/nas2d0 nfs rw,hard,intr   0    0
192.168.1.65:/c/media /mnt/nas3d0 nfs rw,hard,intr     0    0
192.168.1.60:/opt/sybhttpd/localhost.drives/HARD_DISK /mnt/nmt1d0 nfs rw,hard,intr      0  0
192.168.1.60:/opt/sybhttpd/localhost.drives/USB_DRIVE_A-1 /mnt/nmt1d1 nfs rw,hard,intr  0  0
192.168.1.1:/tmp/mnt/disc0_1 /mnt/nwl1d0 nfs rw,hard,intr                               0  0
Иногда при перезагрузке других устройств в сети на сервере остается неверный дескриптор рестартовавшего устройства. Для переподключения я использую написанный мной скрипт mnt_nfs.sh. Скрипт проверяет доступость файла-флага, размещенного на каждом устройстве в корне экспортируемой директории. Имя файла повторяет имя устройства. Если флаг-файл доступен - ничего не делается Если - нет, то устройство сначала размонтируется, а затем снова монтируется.
#!/bin/bash

# /usr/bin/mnt_nfs.sh
# script for reconnecting nfs resource if lose
#

# flag for testing
file_nas1d0="/mnt/nas1d0/nas1d0"
file_nas2d0="/mnt/nas2d0/nas2d0"
file_nas3d0="/mnt/nas3d0/nas3d0"
file_nnm1d0="/mnt/nmt1d0/nnm1d0"
file_nmt1d1="/mnt/nmt1d1/nmt1d1"
file_nwl1d0="/mnt/nwl1d0/nwl1d0"
file_srv1d0="/mnt/srv1d0/srv1d0"

if [ -e $file_nas1d0 ]; then
echo "Not present yet"
else
echo "Not present yet"
fi

if [ -e $file_nas2d0 ]; then          # если флаг доступен
echo "NAS2 already connected" # значит устройство уже подключено
else
sudo umount /mnt/nas2d0       # иначе, размонтируем и снова смонтируем
sudo mount -t nfs 192.168.1.62:/mnt/HD_a2 /mnt/nas2d0
fi

if [ -e $file_nas3d0 ]; then
echo "NAS3 already connected"
else
sudo umount /mnt/nas3d0
sudo mount -t nfs 192.168.1.65:/c/media /mnt/nas3d0
fi

if [ -e $file_nnm1d0 ]; then
echo "HDX 1000 already connected"
else
sudo umount /mnt/nmt1d0
sudo mount -t nfs 192.168.1.60:/opt/sybhttpd/localhost.drives/HARD_DISK /mnt/nmt1d0
fi

if [ -e $file_nmt1d1 ]; then
echo "RSH 100 already connected"
else
sudo umount /mnt/nmt1d1
sudo mount -t nfs 192.168.1.60:/opt/sybhttpd/localhost.drives/USB_DRIVE_A-1 /mnt/nmt1d1
fi

if [ -e $file_srv1d0 ]; then
echo "Not present yet"
else
echo "Not present yet"
fi

if [ -e $file_nwl1d0 ]; then
echo "Asus WL500gP already connected"
else
sudo umount /mnt/nwl1d0
sudo mount -t nfs 192.168.1.1:/tmp/mnt/disc0_1 /mnt/nwl1d0
fi
После проверки работы скрипта, я включил его в /etc/crontab для запуска в каждую 01, 11, 21, 31, 41, 51 минуты каждого часа, каждый день каждого месяца:
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command
17 * * * * root    cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
1,11,21,31,41,51 * * * * root mnt_nfs.sh
#
Все то же самое я проделал на ноутбуке, с которого пишу.

четверг, 2 июля 2009 г.

Отключение графического режима

Для сервера приложений графический режим - совершенно бесполезная вещь. Только отъедает ресурсы и тормозит работу системы. В этом месте только ленивый не пнул Microsoft. Ну да у них денег много, а мы в кризис будем экономить. Машинка у меня нЕмощная. Поэтому, чтоб ей было легче, отключим x-server. Делается это так: Отредактировать файл /etc/inittab
# /etc/inittab: init(8) configuration.
# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $

# The default runlevel.
id:2:initdefault:

# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS
       . . .
       . . .
       . . .
Согласно http://wiki.debian.org/RunLevel, профили со 2 по 5 формально никак не определены и предназначены для пользовательских конфигураций. Зарезервируем профиль 2 для текстового режима, а с 3 по 5 оставим для графического.
  1. Проверим, что существуют файлы(на самом деле это ссылки) @S30gdm в каталогах /etc/rc3.d, /etc/rc4.d, /etc/rc5.d
  2. В каталоге /etc/rc2.d удалить файл S30gdm.
Все. Перезагружаемся и проверяем. Если будет нужно включить снова графический режим - просто поменяем профиль в inittab на 3.

среда, 1 июля 2009 г.

Устанавливаем xampp

XAMPP — кроссплатформенная сборка веб-сервера, содержащая Apache, MySQL, интерпретатор скриптов PHP и язык программирования Perl, и много дополнительных библиотек которые позволяют запустить полноценный веб-сервер. Он нам нужен, чтобы установить на него swisscenter Xampp отличается необычайно легкой установкой. Устанавливать будем на сервер приложений. Сам процесс установки очень детально описан здесь: http://www.apachefriends.org/en/xampp-linux.html и не вызывает никаких трудностей. Коротко повторю:
  1. Загрузка Скачать XAMPP for Linux 1.7.1
    $wget http://sunet.dl.sourceforge.net/sourceforge/xampp/xampp-linux-1.7.1.tar.gz
  2. Установка После загрузки в терминале ввести следующие команды в:
    $su
    #tar xvfz xampp-linux-1.7.1.tar.gz -C /opt
    Собственно и все. XAMPP проинсталирован в каталог /opt/lampp directory.
  3. Запуск Для запуска XAMPP просто введите команду:
    #/opt/lampp/lampp start
    На экране появятся сообщения о старте сервисов:
    Starting XAMPP for Linux 1.7.1...
    XAMPP: Starting Apache with SSL (and PHP5)...
    XAMPP: Starting MySQL...
    XAMPP: Starting ProFTPD...
    XAMPP for Linux started.
  4. Проверка В firefox набрать следующий адрес: http://localhost/xampp/index.php (если проверка делается с той же машины, где устанавливался XAMPP) или c другой машины нужно ввести ip адрес сервера приложений: http://192.168.1.63/xampp/index.php Ниже показаны некоторые скриншоты:
  5. Автозапуск XAMPP Если в предыдущем пункте тестирование было удачным, то имеет смысл сделать автозапуск XAMPP.
    $su
    #ln -s /opt/lampp/lampp /etc/init.d/lampp
    #ln -s /etc/init.d/lampp /etc/rc0.d/K01lampp
    #ln -s /etc/init.d/lampp /etc/rc1.d/K01lampp
    #ln -s /etc/init.d/lampp /etc/rc2.d/S99lampp
    #ln -s /etc/init.d/lampp /etc/rc3.d/S99lampp
    #ln -s /etc/init.d/lampp /etc/rc4.d/S99lampp
    #ln -s /etc/init.d/lampp /etc/rc5.d/S99lampp
    #ln -s /etc/init.d/lampp /etc/rc6.d/K01lampp
Ссылки:

вторник, 30 июня 2009 г.

Cервер приложений. Установка linux на VIA Epia MII

В качестве сервера приложений используется noname slim PC cледующей конфигурации:
EPIA MII-Series Mini-ITX BoardDisk fujitsu MHV2080AHRAM 512 MB
Поскольку оборудование уже не производится, с поддержкой его в современных дистрибутивах есть определенные проблемы. Ниже указаны дистрибутивы которые я пробовал и результат:
  • Knoppix - отказался грузиться на этапе инсталляции
  • Alt Linux - Установился, но работал неустойчиво
  • Ubuntu 8.10 - После установки не запустился
  • Ubuntu 9.04 - Отказался устанавливаться
  • Debian 5.01 - Установился.
  1. В bios отключаем halt по отсутствии клавиатуры. Эта машинка будет работать без монитора, клавиатуры и мыши, и не должна реагировать на отсутствие указанного оборудования
  2. На роутере присваиваем ip адрес для нашего сервера приложений: Я для этой станции выбрал адрес 192.168.1.63
  3. Установка Debian 5.01 Установка debian прошла гладко и никаких особенностей и подводных камней не имеет. Я устанавливал дистрибутив с xfe - http://debian.nsu.ru/debian-cd/current/i386/iso-cd/debian-501-i386-xfce%2blxde-CD-1.iso
  4. Настройка репозиториев. Списки репозиториев хранятся в /etc/apt/sources.list:
    # /etc/apt/sources.list
    # ver. 070309
    
    # Cd-rom
    #deb cdrom:[Debian GNU/Linux 5.0.0 _Lenny_ - Official i386 kde-CD Binary-1 20090214-17:33]/ lenny main
    
    # Security updates
    deb http://security.debian.org/ lenny/updates main
    deb-src http://security.debian.org/ lenny/updates main
    
    # Ru debian mirror
    #deb http://ftp.ru.debian.org/debian/ lenny main contrib non-free
    #deb-src http://ftp.ru.debian.org/debian/ lenny main contrib non-free
    
    # Yandex mirror
    deb http://mirror.yandex.ru/debian/ lenny main contrib non-free
    deb-src http://mirror.yandex.ru/debian/ lenny main contrib non-free
    
    # Volatile
    deb http://volatile.debian.org/debian-volatile lenny/volatile main
    deb-src http://volatile.debian.org/debian-volatile lenny/volatile main
    Я закоментировал репозиторий на CD-ROM. После изменения списка репозиториев запускаем aptitude и обновляем систему. Для этого нажать клавишу U.
  5. Включение доступа по telnet с удаленной машины Необходимо добавить в файл /etc/inetd.conf строки выделенные красным
    # /etc/inetd.conf:  see inetd(8) for further informations.
    #
    # Internet superserver configuration database
    #
    #
    # Lines starting with "#:LABEL:" or "##" should not
    # be changed unless you know what you are doing!
    #
    # If you want to disable an entry so it isn't touched during
    # package updates just comment it out with a single '#' character.
    #
    # Packages should modify this file by using update-inetd(8)
    #
    #       
    #
    #:INTERNAL: Internal services
    #discard  stream tcp nowait root internal
    #discard  dgram udp wait root internal
    #daytime  stream tcp nowait root internal
    #time  stream tcp nowait root internal
    
    #:STANDARD: These are standard services.
    telnet  stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd
    
    # ------------------------------------------------------
    # this pasted from http://forums11.itrc.hp.com/service/forums/questionanswer.do?admit=109447626+1246385838562+28353475&threadId=44282
    
    service telnet
    {
    disable = no
    flags = REUSE
    socket_type = stream
    wait = no
    user = root
    server = /usr/sbin/in.telnetd
    log_on_failure += USERID
    only_from = 192.168.1.172 127.0.0.1 # перечисляются адреса хостов, с которых разрешен доступ
    }
    # ------------------------------------------------------
    
    
    #:BSD: Shell, login, exec and talk are BSD protocols.
    
    #:MAIL: Mail, news and uucp services.
    
    #:INFO: Info services
    
    #:BOOT: TFTP service is provided primarily for booting.  Most sites
    #       run this only on machines acting as "boot servers."
    
    #:RPC: RPC based services
    
    #:HAM-RADIO: amateur-radio services
    
    #:OTHER: Other services
Полезные ссылки: