пятница, 23 апреля 2010 г.

iptables - скрипт для раздачи инета, проброса портов и контроля портов на сервере и на локальной сети



#!/bin/sh
###################################
#БАЗОВАЯ КОНФИГУРАЦИЯ СКРИПТА
# Данный скрипт пробрасывает нужные порты на
# один компьютер из локальной сети
# открывает на сервере избранные порты и дает пользователям из локалки
# выходить в инет только по избранным портам
# скрипт создан Павлом Беляевым
###################################
EXTIF="eth1" #внешний интерфейс сервера
INTIF="eth0" #внутренний интерфейс сервера
EXTIP="999.999.999.9" #внешний IP сервера
TCPFORWARD="443,5060" #пробрасываемые TCP порты
UDPFORWARD="6000,30000:30015" #пробрасываемые UDP порты
FORWARDIP="192.168.3.101" #IP адрес компа, на который пробросим порты
SERVICES="22" #  Список портов, открытых на сервере для внешнего мира
OPENPORTS="80,443,22,5190,995,465,5222,5223" # порты, по которым пользователи могут вылазить в интернет
################################################
################################################
#      конец конфигурации скрипта              #
################################################
################################################
#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
PATH=/usr/sbin:/bin:/sbin
FW="iptables"
echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe nf_nat_ftp
#%%%%%%%%%% удалить все действующие правила %%%%%%%%%%%%%%%%%%%%%%%%
$FW -F #удаление всех правил из таблицы filter
$FW -t nat -F #удаление всех правил из таблицы nat
$FW -t mangle -F #удаление всех правил из таблицы mangle
$FW -X # удалить пользовательские цепочки
$FW -P FORWARD DROP # политика по умолчанию - форвард запрещен
$FW -P INPUT DROP # политика по умолчанию - входящие пакеты (для локального приложения) запрещены
###################################################################################################
#
#%%%%%%%%%%%%правила для сервера (фаервола)%%%%%%%%%%%%%%%%%%%%
$FW -A INPUT -p tcp -m tcp -m multiport -i $EXTIF --destination-ports $SERVICES -j ACCEPT # со внехи к серверу можно обратиться только по избранным портам
$FW -A INPUT -i $INTIF -j ACCEPT # из локальной сети к серверу можно обращаться по всем портам
$FW -A OUTPUT -j ACCEPT # сервер может вылазить в инет по всем портам
########################################################################

#Разрешить соединения, которые инициированы изнутри (local)
$FW -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$FW -A INPUT -m state --state NEW -i ! $EXTIF -j ACCEPT
$FW -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
#
#Фильтрация форварда
$FW -A FORWARD -s $FORWARDIP -i $INTIF -o $EXTIF -j ACCEPT
$FW -A FORWARD -d $FORWARDIP -i $EXTIF -o $INTIF -j ACCEPT
$FW -A FORWARD -p tcp -m tcp ! -s $FORWARDIP -m multiport -i $INTIF -o $EXTIF --destination-ports $OPENPORTS -j ACCEPT
$FW -A FORWARD -p tcp -m tcp ! -d $FORWARDIP -m multiport -i $EXTIF -o $INTIF --source-ports $OPENPORTS -j ACCEPT
#
# Masquerade.
$FW -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE # исходящие пакеты с внешнего интерфейса отправляются c внешним IP отправителя

#forward udp and tcp
$FW -t nat -A PREROUTING -p tcp -d $EXTIP -m multiport --dport $TCPFORWARD -j DNAT --to-destination $FORWARDIP #forward tcp
$FW -t nat -A PREROUTING -p udp -d $EXTIP -m multiport --dport $UDPFORWARD -j DNAT --to-destination $FORWARDIP #forward udp
$FW -t nat -A PREROUTING -i $INTIF -p tcp --dport 80 -j REDIRECT --to-port 3128 # входящие пакеты с 80 портом с внутреннего интерфейса перенаправляются на прокси



воскресенье, 18 апреля 2010 г.

Настройка даты и времени на Linksys pap2t

Я купил телефон TEXET TX-D4400A и у меня возникла следующая проблемка - с некоторой переодичностью у меня сбивается дата и время на телефоне, я уже начал грешить на фирму TEXET но оказалось то что этот умный телефон умеет синхронизировать время с телефонной станцией, мой телефон подключен через VoIP шлюз Linksys PAP2T, следовательно появилась необходимость в настройке даты и времени на этом девайсе.

В общем делается это так:
1. Входим в веб интерфейс
2. Нажимаем "Admin Login"
3. Переходим на вкладку "Regional"
4. В поле Set Local Date пишем дату в формате ММ/ДД/ГГГГ (например 04/25/2010)
5. В поле Set Local Time пишем время в формате ЧЧ/ММ (например 23/59)

четверг, 8 апреля 2010 г.

Расшаривание принтеров по сети в Linux

В убунту 9,10 64 я столкнулся с тем, что веб интерфейс не работает, ну и фиг с ним :)

В общем у нас есть внутренняя сеть, защищенная фаерволом, в сети все компьютеры принадлежат подсети 192.168.1.0/24. В общем алгоритм предельно прост

1. Ставим принтеры на всех компах как обычно (это выходит за пределы данной статьи), чтобы они могли печатать локально.

2. На каждом из компов, который учавствует в сетевой печати правим конфигурацию /etc/cups/cups.conf вот такой

LogLevel debug
SystemGroup lpadmin
# Allow remote access
Port 631
# Enable printer sharing and shared printers.
Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseAddress @LOCAL
DefaultAuthType Basic
<Location />
Allow From localhost
Allow From 192.168.1.*
# Allow shared printing and remote administration...
Order allow,deny
Allow @LOCAL
</Location>
<Location /admin>
Allow From localhost
Allow From 192.168.1.*
# Allow remote administration...
Order allow,deny
Allow @LOCAL

</Location>
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
# Allow remote access to the configuration files...
Order allow,deny
Allow @LOCAL
</Location>
<Policy default>
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job>
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>

<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs CUPS-Reject-Jobs>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
<Limit Cancel-Job CUPS-Authenticate-Job>

Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit All>
Order deny,allow
</Limit>
</Policy>



3. Перезагружаем cups
sudo /etc/init.d/cups restart

Повторяем это на всех компьютерах и в итоге у нас все принтеры сетевые и со всех компьютеров можно печатать на всех принтерах по сети

Если на каком то из компьютеров нужно расшарить принтер для ограниченного круга людей, то вместо 192.168.1.* пишем нужные адреса или 127.0.0.1 - если расшаривать по сети не нужно

Canon MF4018 и Ubuntu 9.10 x64 (64bitt)

Убунту достаточно умная и современная система и как правило она определяет и скачивает драйвера на оборудование самостоятельно, но бывают такие ситуации, когда приходится "поплясать с бубном", этот расказ именно об этом

В общем купили в офисе такой принтер-копир-сканер и пришлось его настроить на компьютере под управлением Ubuntu 9.10 64bit.

На оффициальном сайте конкретно под этот принтер драйверов нет там где его обычно ищут. (Canon I-sensys MF4018). Нужно зайди в раздел загрузок для принтера Canon MF4010 и скачать там RPM пакет для 64 битных систем, далее конвертируем пакеты из рпм в деб с помощью утилиты alien

sudo apt-get install alien

Заходим в папку с пакетами для 64 битной архитектуры и делаем следующее
sudo alien *.rpm
sudo dpkg -i *.deb

Если принтер уже был установлен в системе (но не печатал), удаляем его, потом выключаем и включаем принтер, убунту сама его установит с теми дровами, которые мы сейчас установили.

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