среда, 29 декабря 2010 г.

Настройка Iptables в Ubuntu.

Появилась потребность настроить фаерволл в Ubuntu. Работать наш фаерволл будет на машине с двумя сетевыми картами, одна смотрит в интернет другая в локальною сеть.
Итак создаем набор правил записанных в файл /etc/rc.firewall

#!/bin/sh

# для удобства, особенно если интерфейсов несколько
INET_IF="eth0"
LOCAL_IF="eth1"


# тоже для удобства
IPT="/sbin/iptables"

#Адреса локальных компьтеров
COMP1="192.168.3.115"

#Наш внешний адресс
IP_OUT="86.111.90.120"

#Наш внутренний адресс
IP_IN="192.168.13.1"

#мак адреса локальных компьютеров
MAC1="x:x:x:x:x"
MAC2="x:x:x:x:x"


# включаем пересылку пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward

# стандартные действия, устанавливаем политику по умолчанию:
$IPT -P INPUT DROP
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD DROP

# удаляем все имеющиеся правила
$IPT -F
$IPT -X

#Разрешаем подключения с внутренего интерфейса
$IPT -A INPUT -i lo -j ACCEPT

#Открываем необходимые порты
$IPT -A INPUT -p tcp -m multiport --port 22,80,6681 -j ACCEPT


#Разрешаем подключения с конкретных компьютеров локальной сети
$IPT -A INPUT -s $COMP1 -j ACCEPT

# принимаем все пакеты, относящиеся к уже установленным соединениям
$IPT -A INPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT

#Несколько правил для безопасности
$IPT -A INPUT -p ICMP -s 0/0 --icmp-type 3 -j ACCEPT
$IPT -A INPUT -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
$IPT -A INPUT -p ICMP -s 0/0 --icmp-type 12 -j ACCEPT

#Если нужно чтобы пинговалась наша машина
#$IPTABLES -A INPUT -p ICMP -s 0/0 --icmp-type 8 -j DROP

#Разрешаем транзит пакетов для отдельных машин локальной сети.
#Можно IP- адреса, а можно Mac
$IPT -A FORWARD -s $COMP1 -j ACCEPT
$IPT -A FORWARD -d $COMP1 -m state --state ESTABLISHED,RELATED -j ACCEPT
#$IPT -A FORWARD -p ALL -m mac --mac-source $MAC1 -j ACCEPT
#$IPT -A FORWARD -p ALL -m mac --mac-source $MAC2 -j ACCEPT


#Включаем NAT для одного из компьютеров локальной сети
$IPT -A POSTROUTING -s $COMP1 -d ! $IP_IN -j SNAT --to-source $IP_OUT

#Перенаправление интернет трафика на прокси
$IPT -t nat -A PREROUTING -p tcp -i eth1 --dport 80 -j REDIRECT --to-ports 3128

Чтобы скрипт работал необходимо добавить права на исполнение:

sudo chmod +x /etc/rc.firewall

Чтобы добавить правила достаточно набрать путь к скрипту:

sudo /etc/rc.firewall

Но чтобы правила добавлялись автоматически при загрузке системы, придется написать еще один небольшой скрипт для init.d.
Создаем файл /etc/init.d/iptables со следующим содержанием:

#!/bin/bash
IPT="/sbin/iptables"
START="/bin/bash"
PATH="/sbin:/bin:/usr/sbin:/usr/bin"
NAME="$0"
N="/etc/init.d/$NAME"
if [ ! -f /etc/rc.firewall ]; then
echo "/etc/rc.firewall does not exist"
exit 0
fi
case "$1" in
start|restart)
echo -n "Starting up iptables firewall..."
$START /etc/rc.firewall
echo "done."
;;
stop)
$IPT -F
$IPT -X
$IPT –P INPUT ACCEPT
$IPT –P OUTPUT ACCEPT
$IPT -t FORWARD ACCEPT
echo "done."
exit 0;
;;
*)
echo "Usage: $N {start|restart|stop}" >&2
exit 1
;;
esac
exit 0

При запуске данного скрипта без параметров он будет выдавать сообщение Usage: $N {start|restart|stop}. При запуске с параметром start будет добавлять правила, а с параметром stop все правила будут затираться.
Естественно делаем файл исполняемым:

chmod +x /etc/init.d/iptables

Для автозагрузки данного скрипта нужно сделать символические ссылки на него в каталогах /etc/rc0.d, /etc/rc1.d /etc/rc2.d и /etc/rc6.d

sudo ln -s /etc/init.d/iptables /etc/rc0.d/K20iptables
sudo ln -s /etc/init.d/iptables /etc/rc1.d/S20iptables
sudo ln -s /etc/init.d/iptables /etc/rc2.d/S20iptables
sudo ln -s /etc/init.d/iptables /etc/rc6.d/K20iptables

Все.

вторник, 28 декабря 2010 г.

Ошибка печати в принтере HP 4015. "Замените черный картридж"

После смены картриджа в принтере HP 4015, на дисплее высветилась ошибка: "Замените черный картридж". Справка принтера говорила о том что истек срок службы барабана и надо менять картридж на другой. При этом с другим картриджем принтер выдал такую же ошибку.
Гугел на данную проблему нашел пару советов, которые сводились к проблеме с контактами, но чистка принтера и картриджей не помогла. Также не помогло восстановление заводских настроек в меню принтера.
Решение нашлось на одном из форумов.

Нужно зайти в сервисный режим. Пароль для входа:

05401508

Там нужно обнулить журнал событий, счетчик страниц до обслуживания и счетчик страниц после обновления. Выключаем и снова включаем принтер, ошибка должна пропасть.

четверг, 30 сентября 2010 г.

Настройка VPN подключения в Ubuntu

После долгих провальных попыток подключиться из дома (комп с Убунтой на борту) к рабочему месту (VPNсервер поднят на FreeBSD посредством Mpd5), пришлось отбросить все готовые решения, которыми наполнен тырнет, и которые сотнями предлагает Гугел, так как ни одно из них по неизвестной причне не заработало ни для старого доброго pptp, ни новые GUI решения.
Проштудировав мануал по pptp, а также изучив документацию на офсайте даного программного решения, наконец-то сложилась удачная конфигурация которая и позволила наконец то нормально работать.
Итак у нас имеется домашний компутер с системой Ubuntu 10.04 на котором установлен pptp клиент и есть рабочая сеть, к которой нам нужно подключиться, с адресом 88.81.239.121.
В случае если pptp у вас по какой то причине отсутствует вы можете его установить набрав в консоли:
sudo apt-get install pptp-linux
Идем в каталог /etc/ppp находим в нем файл options.pptp, если его нет то создаем, и редактируем. Нужно добавить следующие опции:
lock
noauth
nobsdcomp
nodeflate
Все остальное нужно заккоментировать.
Дальше переходим в папку /etc/ppp/peers/ и создаем файл с именем нашего подключения, в моем случае WORK со следующим содержанием:
pty "pptp 88.81.239.121 --nolaunchpppd"

name igor
remotename PPTP
require-mppe-128
file /etc/ppp/options.pptp
ipparam WORK

88.81.239.121 заменяете на адрес своего сервера
igor на свой логин
WORK это имя нашего файла

В файл /etc/ppp/chap-secrets добавляем наш логин и пароль:
igor PPTP ******
****** заменяем на наш пароль.
Все. Теперь запускаем коммандой
pon WORK

Завершить подключение можно так:
poff WORK

Запустить с подробным выводом информации
pon WORK debug nodetach

Для того что бы можно было зайти в подключенну сеть нужно добавить ее в табицу маршрутизации
route add -net 192.168.3.0/24 ppp0

Где 192.168.3.0/24 сеть к которой мы подключились.

Установка Adobe Flash 10 во FreeBSD 8.0

Включаем режим совместимости с Linux и linprocfs для этого добавляем запись в  /etc/rc.conf:
  
    linux_enable="YES" 

Загружаем модуль совместимости:
  
    #kldload linux

Проверяем:

    #sysctl compat.linux.osrelease 

должно быть 2.6.16.
Устанавливаем эмулятор:
   
    #cd /usr/ports/emulators/linux_base-f10
    #make install clean

В /etc/fstab добавбяем следующие строки:
    
    linproc /usr/compat/linux/proc linprocfs rw 0   0 
    linsys  /usr/compat/linux/sys   linsysfs  rw   0   0 

Устанавливаем Flash плагин:
  
    #cd /usr/ports/www/linux-f10-flashplugin10
    #make install clean

Устанавливаем nspluginwrapper:
  
    #cd /usr/ports/www/nspluginwrapper
    #make install clean

Из под юзера  активируем плагин в nspluginwrapper:
  
    $  nspluginwrapper -i /usr/local/lib/npapi/linux-f10-flashplugin/libflashplayer.so 
    $  nspluginwrapper -v -a -i 

Должно выдать следующее:
    Auto-install plugins from /home_юзвер/.mozilla/plugins 
    Looking for plugins in /home_юзвер/.mozilla/plugins

Чтобы все заработало перезапускаем Firefox.
Можно проверить введя в адресном поле about:plugins

Если Flash плагин не обнаружен  то идем в - Инструменты-> Дополнения-> Плагины, и включаем наш плагин. 
Снова проверяем about:plugins.

Все работает, проверено много раз. 

Монтирование NTFS разделов в FreeBSD в режиме чтение-запись

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

/usr/ports/sysutils/fusefs-ntfs/
/usr/ports/sysutils/ntfsprogs
 
Добавляем в /etc/rc.conf строку :
 
fusefs_enable="YES"
 
В /etc/sysctl.conf добавляем
 
sysctl vfs.usermount=1

Запускаем fusefs

/usr/local/etc/rc.d/fusefs start
 
Монтируем диск
 
ntfs-3g /dev/da1s2 /mnt/hdd 
 
или
 
ntfs-3g -o rw,locale=ru_RU.UTF-8 /dev/ad0s1 /mnt/disk_c 

еще можно так

ntfs /dev/ad0s1 /mnt/disk_c
 
Или как вариант меняем файлы
 
rm /sbin/mount_ntfs
cp /usr/local/share/hal/mount-fuse /sbin/mount_ntfs
 
 и монтируем командой

mount_ntfs /dev/da1s2 /mnt/hdd 

Установка phpMyAdmin на FreeBSD.

phpMyAdmin как открытое ПО входит в коллекцию портов FreeBSD. Идем в порты и ставим.
 

# cd /usr/ports/databases/phpmyadmin
# make install clean
 
После установки необходимо подправить конфиг нашего веб-сервера. Добавляем следующие строки в httpd.conf
 
Alias /phpmyadmin/ "/usr/local/www/phpMyAdmin/"

    
        Options none
        AllowOverride Limit

        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1 .example.com # вместо example.com вставляем имя нашего хоста
    
 
После этого редактируем конфиг phpMyAdmin  
/usr/local/www/phpMyAdmin/config.inc.phpДобавим следующее:


/*
 * если Вы собираетесь использовать кукисы, необходимо заполнить
 * переменную blowfish_secret случайным набором символов.
 */
 $cfg['blowfish_secret'] = 'blablablablablablablablablablabla';

/*
 * Конфигурация серверов.
 * Один phpMyAdmin можно использовать для подключения к
 * нескольким серверам MySQL. Для этого ниже прописываются
 * настройки для подключения к каждому серверу. Насколько
 * я понял, при использовании нескольких серверов следует
 * использовать авторизацию только через cookie.
 */
 $i = 0;

/* *** Опишем первый сервер *** */
 $i++;

/*
 * Метод авторизации.
 * Чаще всего применяют cookies или http ...
 */
 $cfg['Servers'][$i]['auth_type'] = 'cookie';

/*
 * Параметры для подключения к серверу.
 * - адрес хоста
 */
 $cfg['Servers'][$i]['host'] = 'localhost';
/* - порт (если не указан, то используется дефолтный 3306) */
 $cfg['Servers'][$i]['port'] = ''

/* Тип соединения с базой данных.
 * Может быть socket, а может быть tcp.
 */
 $cfg['Servers'][$i]['connect_type'] = 'tcp';

/*
 * Если в предыдущем случае указан socket, то по-умолчанию,
 * применяется путь к сокету /tmp/mysql.sock. Если у Вас
 * сокет базы данных в другом месте, его следует указать
 * в следущей переменной.
 */
 $cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock'

/*
 * Использовать ли для подключения к БД шифрование SSL?
 * У меня стоит не использовать.
 */
 $cfg['Servers'][$i]['ssl'] = false;

/*
 * Применять сжатие. Может быть true (да) или false (нет)
 */
 $cfg['Servers'][$i]['compress'] = false;

/*
 * Конфигурации для второго, третьего, десятого серверов
 * можно подключить по аналогии с первым. Настройки
 * следущего сервера должны начинаться с $i++ При использовании
 * настроек для нескольких серверов, на странице входа в
 * phpMyAdmin появится выпадающий список для выбора сервера.
 */

/*
 * Каталоги для загрузки и сохранения файлов. Можно ничего не
 * указывать, а можно прописать сюда свой путь. Каталоги должны
 * быть доступны на запись пользователю www (от которого
 * запущен веб сервер).
 */
 $cfg['UploadDir'] = '';
 $cfg['SaveDir'] = '';

?>
 
После этого открываем браузер и переходим по адресу http://ваш_сайт.com/phpmyadmin/
"/" в конце адреса обязателен иначе не зайдет.