Отключение USB Flash Drive но не клав/мышек в Linux

Задача: запретить юзверам юзать съемные USB-накопители.
Можно конечно втупую отрубить в BIOS, но тогда USB-клавы, мыши и другие нужные девайсы работать не будут.

Моё решение: Находим модуль usb-storage.ko и перемещаем в другое место. Ну или злостно удаляем 🙂

ls /lib/modules/$(uname -r)/kernel/drivers/usb/storage/usb-storage.ko
mv /lib/modules/$(uname -r)/kernel/drivers/usb/storage/usb-storage.ko /root

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

modprobe usb-storage

http://geckich.blogspot.com/

Установка полноценного Firefox в Linux Debian вместо Iceweasel

Лично я предпочитаю в качеств ебраузера использовать Google Chrome… по многим причинам. Но иногда он нужен – полноценный фаерфокс, с некоторыми его полезными плагинами. А в Debian по-умолчанию установлен кривой Iceweasel. Вот как исправить это недоразумение.

1) удаляем Iceweasel

sudo apt-get remove iceweasel

2) идем на сайт мозиллы http://www.mozilla.org/en-US/firefox/new/ и скачиваем текущую версию фаерфокса.
3) распаковываем архив
bzip2 -d firefox-14.0.1.tar.bz2
tar -xvf firefox-14.0.1.tar
cd firefox
4) запускаем!
./firefox
Для удобвства можно сделать линки себе куда нужно.
http://geckich.blogspot.com/

Debian, ошибка в логах mpt-statusd: detected non-optimal RAID status

Было замечено, и не только мной, что у Debian 6 Squeeze, установленном на виртуальную машину, часто в лог /var/log/messages сыплет сообщения типа:

mpt-statusd: detected non-optimal RAID status

Устраняется это отключением демона, следящего за RAID (которого в этой ситуации нету):

/etc/init.d/mpt-statusd stop

echo RUNDAEMON=no > /etc/default/mpt-statusd

Всё.

http://geckich.blogspot.com/

Debian 7 тормоза при переключении вкладок в Chrome

После установка Debian 7 Wheezy мною было замечено, что Google Chrome начинает немприятно тормозить при переключении вкладок, если их больше 4-5. Это меня через минут 10-15 начало жутко кумарить и я полез искать решение.

Нашел 2 варианта. Остановился на 1м, но приведу оба – вдруг кому подойдет больше 2й.
1) заставиь хром юзать старую библиотеку libcairo2 v1.10.2-7. Необходимо скачать пакет с библиотекой, извлечь ее и скормить хрому. Для 64-битной системы команды:
wget http://backports.debian.org/debian-backports/pool/main/c/cairo/libcairo2_1.10.2-7~bpo60+1_amd64.deb

dpkg -x libcairo2_1.10.2-7~bpo60+1_amd64.deb /opt/libcairo2


ln -s /opt/libcairo2/usr/lib/libcairo.so.* /opt/google/chrome/

2) Для видеокарт nVidia еще работает команда:

nvidia-settings -a InitialPixmapPlacement=0
Но, при этом заметно возрастает нагрузка на CPU, потому я сделал как в 1-м методе, хотя у меня и nVidia.
Надеюсь, вам это поможет также.
http://geckich.blogspot.com/

Настройка почты в Redmine

Здесь я опишу настройку Redmine для отправки почты через свой почтовый сервер.

Redmine настроен на сервере Linux Debian 6 через mod_passenger веб-сервера apache2

В зависимости от вашей инсталляции редактируем файл /etc/redmine/default/email.yml (Debian, из пакетов) или /usr/share/redmine/config/email.yml (смотрите, не перепутайте, типа как я – и парился, почему ж оно не вхавывает новые настройки… 🙂 ) и прописываем настройки, заменив адреса и т. д. на свои:

production:
  delivery_method: :smtp
  smtp_settings:
    address: 192.168.1.2
    port: 25
    domain: mydomain.com
    authentication: :plain
    user_name: “redmine@mydomain.com”
    password: “Password”


development:

  delivery_method: :smtp
  smtp_settings:
    address: 192.168.1.2
    port: 25
    domain: mydomain.com
    authentication: :plain
    user_name: “redmine@mydomain.com”
    password: “Password”

http://geckich.blogspot.com/

Cisco Any Connect VPN in Linux

Чтобы подключиться из Linux к Cisco Any Connect VPN нужно установить пакет  (в Debian):

aptitude install openvpn

Затем набрать команду:

openconnect -u user 192.168.0.0

подтвердить сертификат, ввести пароль и когда в консольке повиснет сообщение Established DTLS connection, открываем новую и работаем с удаленными машинами.

http://geckich.blogspot.com/

Исправление ошибок "Server sent passive reply with unroutable address. Using server address instead." или "500 illegal port command" при подключении к FTP серверу на vsftpd

Если у вас ftp сервер находится за роутером и вы из локальной сети подключаетесь отлично, а извне – сыпет ошибки типа “Server sent passive reply with unroutable address. Using server address instead.” or “500 illegal port command“, то вы по адресу 🙂 Причина этому безобразию – неправильно настроенный по-умолчанию Passive mode на фтп-сервере.

Для начала откройте в вашем роутере порты 4242…4252 для локального адреса фтп-сервера.

Затем в конфиг /etc/vsftpd.conf нужно добавить строчки:

connect_from_port_20=YES 
pasv_enable=YES 
pasv_addr_resolve=YES 
pasv_address=myaddress.dyndns.com
pasv_min_port=4242 
pasv_max_port=4252
Еще для пущей секьюрности можно добавить следующее:
#Включаем список пользователей, только которым можно подключаться к нашему фтп-серверу
userlist_enable=YES
userlist_deny=NO  
#пусть к списку
userlist_file=/etc/vsftpd.userlist 
#включение подробного логирования
logging log_ftp_protocol=YES 
#заключение пользователя в его домашней директории. Маст-хэв опция, если у вас используются локальные аккаунты
chroot_local_user chroot_local_user=YES
http://geckich.blogspot.com/

Установка сервера NIS в Debian Linux и настройка клиентов

NIS очень прикольная штука. Она позволяет авторизоваться на всех машинах, где есть её клиент с помощью учетных данных локальных пользователей на сервере. Ну т. е. если мы поменяем пароль на свою учетку, то все клиенты автоматом подтянут изменения. Да и просто удобно.

Итак, установим нужные пакеты и их зависимости командой:

aptitude -y install nis portmap

Когда спросит, введем имя нашего домена – например, example.com
Автостарт службы сфейлиться, но не пугайтесь – ему просто не хватает некоторых настроек.

Займемся конфигурацией.

1) nano /etc/default/nis

Здесь прописываем: 

NISSERVER=master

2) nano /etc/ypserv.securenets

Здесь закомментируем строчку, разрешающую доступ со всех IP:

# This line gives access to everybody. PLEASE ADJUST!
# make it comment
# 0.0.0.0 0.0.0.0

И пропишем адреса наших подсетей, например:
255.255.255.0                    10.86.35.0

3) nano /var/yp/Makefile

В 119-й линии добавим shadow:

ALL = passwd shadow group hosts rpc services netid protocols netgrp

4) nano /etc/hosts 

Добавим адрес нашего сервера NIS:
127.0.0.1 localhost nis.example.com nis
#Добавим также сетевой адрес сервера
10.86.35.10 nis.example.com nis

5) Обновим базу данных NIS сервера командой (введя на запрос имя нашего nis сервера как мы его прописали чуть выше – nis):

/usr/lib/yp/ypinit -m

Вывод команды:
At this point, we have to construct a list of the hosts which will run NIS
servers. master is in the list of NIS server hosts. Please continue to add
the names for the other hosts, one per line. When you are done with the
list, type a <control D>
. next host to add: nis
next host to add:
# push Ctrl+D
The current list of NIS servers looks like this:

localhost
nis

Is this correct? [y/n: y]
y

We need a few minutes to build the databases…
Building /var/yp/server.world/ypservers…
gethostbyname(): Success
Running /var/yp/Makefile…
make[1]: Entering directory `/var/yp/server.world’
Updating passwd.byname…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating passwd.byuid…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating group.byname…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating group.bygid…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating shadow.byname…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating hosts.byname…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating hosts.byaddr…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating rpc.byname…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating rpc.bynumber…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating services.byname…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating services.byservicename…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating netid.byname…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating protocols.bynumber…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating protocols.byname…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating netgroup…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating netgroup.byhost…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating netgroup.byuser…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredmake[1]: Leaving directory `/var/yp/server.world’

master has been set up as a NIS master server.

Now you can run ypinit -s master on all slave server.

6) Запускаем демона NIS

/etc/init.d/nis start
Starting NIS services: ypserv yppasswdd ypxfrd ypbind.

7) Необходимо проапдейтить базу NIS:

cd /var/yp
make

Настройка клиентов NIS:

1) Установка:

aptitude -y install nis portmap
2) Конфигурация NIS Client – подредактируем несколько конфигов
nano /etc/yp.conf

# add at the last: (domain name) (server) (NIS server’s hostname)
domain example.com server nis.example.com

nano /etc/nsswitch.conf

passwd:      compat nis

group:          compat nis
shadow:         compat nis

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4 nis
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

nano /etc/pam.d/common-session

Добавляем в конец для автоматического создания домашних директорий:

session optional pam_mkhomedir.so skel=/etc/skel umask=077

 /etc/init.d/nis restart

Всё. Можем заходить с помощью логина из NIS сервера.
Несколько полезных команд:

ypwhich – показывает адрес NIS-сервера

ypcat passwd  – показывает пользователей NIS-сервера
ypcat hosts – показывает список хостов
http://geckich.blogspot.com/

Ошибка в FileZilla Error GnuTLS error "-12" A TLS fatal alert has been received.

Эта ошибка возникает, если пытаться зайти колиентом версии 3.5.3 на FTP сервер, поднятый на vsftpd и с использованием FTPES (FTP over explicit TLS/SSL)

Вводим все данные правильно в Site Manager и… получаем ошибку

Error GnuTLS error “-12” A TLS fatal alert has been received.

WTF???

Дело в том, что в FileZilla версией от 3.5.3 не поддерживаются определенные заголовки SSL и TLS. Я так особо не вникал, какие – там можно себе мозг сломать 🙂

В общем, решение заключается в добавлении в конфиг ftp-сервера /etc/vsftpd.conf строчки:

ssl_ciphers=HIGH

Перезапускаем ftp демона и пробуем.
http://geckich.blogspot.com/

Проверка заданий планировщика Windows Scheduler в Nagios

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

Такую задачу можно решить многими способами. Здесь опишу свой вариант.

Использовать я буду NRPE для Windows, а точнее его реализацию в NSC++ клиенте (0.3.х версия). NRPE позволяет выполнять на стороне клиента любые скрипты и получать от них результаты – главное всё правильно настроить 😉 Как установить и настроить NRPE на сервере и клиенте я писал в этой статье. Для скриптов будем использовать Python 3. Почему? Во 1-х я знаю этот язык 🙂 а во 2-х, я долго мучался с PowerShell, в котором очень криво работает парсинг CSV и мне так и не удалось заставить его нормально вытягивать данные. В итоге, я положий большой и толстый на мракобесную приблуду и заюзал православный питон, в котором тоже была пара граблей, но гугл помог их решить 🙂

Итак. Для начала настроим клиента.

Идем на http://python.org/download/ и скачиваем 3ю версию питона для Windows, устанавливаем (Далее, Далее… Готово 🙂 ).

Открываем конфиг NSC++ и в секцию [External Scripts] прописываем:

check_scheduler=C:Python32python.exe “C:Program FilesNSClient++scriptsscript.py”

Затем собсно и пишем этот скриптец (создаем текстовый файлик, переименовываем и ПКМ / Edit with IDLE):

import csvimport sys
import os
##Deleting old log
os.system('del "log.csv"')
##Performing schtasks command
os.system('schtasks /query /fo CSV /v >> "log.csv"')
##Clean bad characters inserted by schtasks
fi = open('log.csv', 'rb')
data = fi.read()
fi.close()
fo = open('log.csv1', 'wb')
fo.write(data.replace(b'x00', b''))
fo.close()
##Opening cleaned CSV
ifile = open('log.csv1', "r")
reader = csv.reader(ifile, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL)
##Extracting needed data
for row in reader:
if (row[1] == "rdc_106") or (row[1] == "rdc_108") or (row[1] == "rdc_115") or (row[1] == "rdc_116"):
print (row[1]+" : "+row[5])
ifile.close()

Алгоритм работы скрипта такой:

  • удаляем старый лог чтоб не мешал
  • командой schtasks /query /fo CSV /v >> “log.csv” получаем список заданий и в формате CSV записываем в лог-файл
  • очищаем файлик от символов неотображаемых null которые мракософтные команды и Excel зачем-то пихают в файлик CSV,
    а питон ругается на аткие символы
  • а затем извлекаем в командную строку поля TaskName и Last Run Time для нужных нам заданий.

Перезапускаем службу NSClient++. Всё, если вы ничего не напутали с путями, то клиент настроен.
Настроим теперь сервер.

Тут всё даже попроще. Редактируем файл команд /usr/local/nagios/etc/objects/commands.cfg добавив в конец:

define command{
        command_name    check_scheduler
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_scheduler
        }

Затем пишем скриптец на bash, который будет чекать наши задания и отправлять результаты по почте. Мне не надо было делать постоянный чек, потому я не прописывал сервис для хоста.

#!/bin/bash
#удаляем старый лог чтоб не мешал
rm /home/user/daily_log
#тут пишем комментарии, чеки и всё такое
echo ” `date ` nn Daily report for Super-duper server.nn [Disk space on D:]” >> /home/user/daily_log>
/usr/local/nagios/libexec/check_nt -H 192.168.1.4 -p 12489 -v USEDDISKSPACE -l d -d SHOWALL >> /home/user/daily_log
echo “n [Processes state:]” >> /home/user/daily_log
/usr/local/nagios/libexec/check_nt -H 192.168.1.41 -p 12489 -v PROCSTATE -l someprocess.exe -d SHOWALL >> /home/user/daily_log
/usr/local/nagios/libexec/check_nrpe -H 192.168.1.4 -p 5666 -c check_scheduler >> /home/user/daily_log
cat /home/user/daily_log | mail -s “Report for Super-duper” -c copy_mail@domain.com recipient@domain.com 

chmod +x /home/user/daily_report.sh

И пихаем этот скриптик в планировщик на нужное на время crontab -e (например, в 6-45 по рабочим дням):

45 6 * * 1-5 sh /home/user/daily_report.sh

Усё. Если всё сделано правильно, то пожинаем плоды своего труда.

http://geckich.blogspot.com/