суббота, 13 апреля 2013 г.

Олимпиада по администрированию Linux (Харьков 12.04.2013)

Задания всеукраинского финала Олимпиады в номинации Администрирование Linux

Login — user;
Password — 1;
Virtual Box + Ubuntu Server 12.04

Задача 1.

Дано:
неработающая сеть.

Требуется:
для внешнего интерфейса (eth0) прописать шлюз 10.11.63.254;
прописать в сетевых настройках сервера DNS-сервер 10.0.0.10;
все настройки должны сохраняться при перезагрузке.

Задача 2.
Установить и настроить SAMBA PDC, общие папки и доступ к ним, без использования LDAP .

Исходные данные:
1. Установить samba;
Домен — class.local;
Пользователь — test_user;
Группа — test_user;
Ресурс для общего доступа - /media/public/for_all;
Ресурс для доступа группе test_user - /media/public/test_user;
Созданные ресурсы должны быть не только для чтения
/media/public/for_all — виден и доступен всем;
/media/public/test_user — виден и доступен только группе test_user;
Корректно отображать русскую и украинскую кодировки в названиях файлов.

2. Настроить автоматическое создание Linux-пользователей при создании Windows-пользователей;
Запрет на размещение в общей папке файлов — avi, mp, jpg, bmp, gif, wav;
Запрет на блокирование в папке /media/public/test_user файлов xls.

3. Сопоставление группы Windows и Linux (сопряжение ранее созданной группы «test_user» с Windows группой «Domain Admins»)

4. Создание ресурса «корзина» (Recycle) в папке /media/public (конфигурационный файл должен называться - /etc/samba/recycle.conf)

Задача 3.
Установить и настроить vsftpd.

Исходные данные:
1. Установить vsftpd;
Открыть доступ для чтения и записи;
Пользователи — ftp_user и deny_user;
Группа — ftp_user.

2. Создать ресурс для общего доступа - /srv/ftp/pub;
Разрешить анонимному пользователю доступ к папке /srv/ftp и домашнему каталогу;
Пользователю deny_user доступ к ftp серверу запрещен.

Задача 4.

Перенаправить весь трафик по протоколу tcp с внешнего сервера и порта 2222 на компьютер во внутренней сети с адресом 192.168.56.30 на порт 3389.

Задача 5.

Создать скрипт, который будет проверять доступность хоста и как только он становится недоступным, сделать запись об этом в syslog. Также нужно сделать запись в syslog в момент доступности хоста. Скрипт запускать из cron каждые 2 минуты.Дается шаблон скрипта с описанными переменными:
#!/bin/sh
PINGRESOURCE=«192.168.56.11»
LOCKFILE=«/tmp/${PINGRESOURCE}.lock»


Собственно, то что успел нарешать.
Задача 1.

Для решения этого задания было решено использовать конфигурационный файл /etc/network/interfaces. Редактировать его может только суперпользователь, поэтому нужно задать пароль суперпользователя (по умолчанию в ubuntu server не задан):
$ su -
# passwd


Рут получили, пытаемся отредактировать файл:
# vim /etc/network/interfaces
да не тут-то было, файл не может быть изменен (доступен только для чтения).

Ладно, смотрим атрибуты файла:
# ls -l /etc/networking/interfaces
-rw-r--r-- 1 root root 82 Month Day Time /etc/network/interfaces

странно, рут по идее может редактировать файл...

Пробовал много всего, и под sudo user, через sudo -i, su root, толку — 0.

Спустя час, до меня доперло то, что называется chattr
Проделав такую команду:
# chattr -aAsiScu /etc/network/interfaces
я наконец-таки смог отредактировать этот файл.

Далее все просто, допишем к интерфейсу eth0 такие строчки:
gateway 10.11.63.254
dns-nameservers 10.0.0.10


Перезагружаемся:
# reboot

Либо, если не трогая файл /etc/network/interfaces:
# route add default gw 10.11.63.254
# vim /etc/resolv.conf
nameserver 10.0.0.10

такой расклад работает до перезагрузки, это нас не устраивает. 
Чтобы сделать каждый раз при запуске такое, нужно писать скрипт и прописывать его в /etc/rc.local. Это долго, поэтому решил использовать первый вариант.

С этой задачей справился, интернет появился. Можно уже работать дальше.

Задача 2.

С самбой дел ВООБЩЕ никаких не имел, да и похоже не только я, большинство из участников тоже погорели на этом задании, а некоторые даже не приступали к нему. Беглый поиск по гуглу, сказал мне о том, что мол все великолепно настраивается через ГУИ, нечего тыкаться в консоль. Благо что хоть LDAP'а не было и на том спасибо организаторам.

Установим:
# aptitude install samba

Создадим пользователя test_user и одноименную группу:
# adduser test_user
# addgroup test_user
# addgroup test_user test_user


Теперь добавим только что созданного пользователя, в самбу:
# smbpasswd -a test_user
# smbpasswd -e test_user


Нужно создать папки, которые будем расшаривать:
# mkdir /media/public/for_all
# mkdir /media/public/test_user


Основной конфиг самбы /etc/samba/smb.conf, его нужно отредактировать, получилось что-то в этом роде (не уверен, что правильно): 
# vim /etc/samba/smb.conf
...
[test_user] path = /media/public/test_user
writeable = yes
create mask = 0770
valid users = test_user
[share] path = /media/public/for_all
writeable = yes
create mask = 0777
directory mask = 0777
valid users = all
[global]
#корректное отображение кодировки

dos charset = 866
unix charset = KOI8-R


На этом, моя работа по настройке самбы окончена, ибо дальше — непроходимый для меня лес.

Задача 3.

Про vsftpd слышал, но непосредственной его настройкой не занимался. Скажу лишь то, что он отличается в настройке от proftpd.

Установим:
# aptitude install vsftpd

Добавим пользователей:
# adduser ftp_user
# adduser deny_user
# addgroup ftp_user
# addgroup deny_user ftp_user
# addgroup ftp_user ftp_user


Создадим папку:
# mkdir /srv/ftp/pub

И все, на этом, мое знакомство с very secure ftp daemon закончилось. Решил заняться, по моему мнению, задачками попроще.

Задача 4.

Тетя лаборант нас стала потихоньку выгонять, поэтому я бросил настройку фтпшника, и решил по быстрому сделать два последних задания.

Не уверен, что это задание я сделал правильно, ибо проверить тупо не успел по времени.

# iptables -t nat -A PREROUTING —dst 10.1163.106 -p tcp —dport 2222 -j DNAT —to destination 192.168.56.30
# iptables -t nat -A POSTROUTING -p tcp —dst 192.168.56.30 —dport 3389 -j SNAT —to-source 10.11.63.106
# iptables -t nat -A OUTPUT —dst 10.11.63.106 -p tcp —dport 2222 -j DNAT —to-destination 192.168.56.30:3389
Ну и соответственно направил эти команды в файлик ./iptables через echo >>.

Задача 5.

Скрипт. Я как будто чувствовал что будет подобное задание, поэтому перед подготовкой к олимпиаде решил в общих чертах посмотреть азы шелла. 
Проверять доступность хоста будем командой ping. 
С кроном знаком, проблем нет. А вот как прикрутить логирование с syslog — хз.

В общем получился такой скрипт:
# vim /home/user/task5
#!/bin/sh
PINGRESOURCE=«192.168.56.11»
LOCKFILE=«/tmp/${PINGRESOURCE}.lock»
if ping -c 1 -s 1 -W 1 $PINGRESOURCE
then
   echo «good»
else
   echo «lost»
   touch ${TOUCHFILE}


Сделаем файл исполняемым:
$ chmod +x ~/task5

Теперь настроим крон так, чтобы скрипт запускался каждые 2 минуты:
$ crontab -e
*/2 * * * * /home/user/task5

7 комментариев:

Unknown комментирует...

Сталкивался с samba, ибо дома несколько компов на винде, в самом деле, ничего сложного. Странно, что большинство на этом прогорело

wimbo комментирует...

Не понял, а зачем
"Ну и соответственно направил эти команды в файлик ./iptables через echo >>." ?

"ping -c 1 -s 1 -W 1 $PINGRESOURCE "
-c = count - кол-во раз ок
-s = packetsize - размер отправляемого пакета......
-W = timeout - сколько ждем ответа, а вдруг у нас ответ идет больше одной секунды, например из-за загруженности сервера, мы будем считать, что он не доступен, а на самом деле все работает адекватно.

Ну конечно "# route add default gw 10.11.63.254" - не правильно, так как нам нужно было для eth0 - настроить gw. Не помню как я уже делал.

Ну и разве не надо было сделать chmod +x ~/task5 ? В 5ом задании.

Amet13 комментирует...

>>"Ну и соответственно направил эти команды в файлик ./iptables через echo >>." ?
это что-то типо лога (какие я действия делал), мало ли, на регионалке, по крайней мере это было обязательно (если помнишь)

>># route add default gw 10.11.63.254
это у меня работало, но я все равно не воспользовался этим способом

>>Ну и разве не надо было сделать chmod +x ~/task5 ? В 5ом задании.
я это сделал, забыл записать в заметку

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

wimbo комментирует...

iptables-save ;)

Анонимный комментирует...

С iptables тоже прокол небольшой.
Забыли третий случай для проброса порта - когда сам сервер обращается на свой адрес-порт

Анонимный комментирует...

Мои поздравления, Амет!
Результат хоть и не прекрасный, но оказался лучшим.
Совет: постарайтесь на досуге выполнить то, что не получилось и обратите внимание на все, что связано с ldap, ssh, logger, vpn, squid, apache.

Amet13 комментирует...

спасибо за совет