Отправляет email-рассылки с помощью сервиса Sendsay

KirovLUG: пользователи Linux в Вятке

За 2003-10-22

Re[2]: сообщение из linux to windows

Hello All,

Tuesday, October 21, 2003, 6:45:49 PM, you wrote:

ASG> On Tue, Oct 21, 2003 at 06:23:08PM +0400, alex wrote:
>> Подскажите плз. если кто делал.
>> Как с linux машины послать сообщение на другую linux машину или на
>> windows машину (что-то типа net send). Или как вообще решить задачу
>> оповещения администратора о проблемах на сервере в реалтайме?

ASG> почта, sms, логи. и это правильный подход.
Логи это всегда правильно, но вот только кто каждые n минут(секунд) их
смотрит:). Почта - штука хорошая, но когда ложится почтовый сервис
- сообщение об этом не доходит (по понятным причинам). Вот на этот
случай и хотелось что-нибудь типа net send.
А про sms может ли кто подробнее рассказать? Сейчас мтс прикрыла
посылку sms через почту, а писать анализатор gif'a с распознованием их
кода на сайте не очень хочется:(

p.s.
спасибо всем за идеи, попробую, вот только самба 2 стоит, м.б.
прокатит

   2003-10-22 19:44:04 (#10785)

Чтиво: установка сервера часть 025

На данном этапе в Инет может выходить только сервер, т.е. ресурсы
интернета доступны только ему. Мне же необходимо, чтоб каждый участник
локальной сети имел доступ к внешним ресурсам.

Идеологически было бы правильнее, на мой взгляд, что бы за каждый
внешний сервис отвечала бы локальная служба, которая бы уже в свою
очередь раздавала доступ к этому сервису. Например,
за HTTP и FTP
- прокси-сервер squid/delegate
за SMTP
- почтовый сервер sendmail/postfix/exim
за POP3 и IMAP
- средства доступа к эл. почте imap/cyrus-imap/courier-imap/Qpopper
и т.д.
Но, во-первых, не всегда есть время чтобы осуществить настройку всех
этих программных пакетов, а во-вторых, не всегда можно подобрать
соответствующую службу.

В таких случаях можно воспользоваться маскарадингом, когда все запросы
с локальных машин устремляются на сервер, а он в свою очередь высылает
запросы в другую сеть только уже от своего имени. Затем ответы приходят
на сервер, а он уже знает кому какой ответ предназначался и отсылает их
локальным машинам. Подробнее об этом процессе в документации по
iptables.

Для организации маскарадинга в первую очередь необходимо включит
пересылку пакетов. За это отвечает одна из переменных ядра, доступных
через файловую систему proc - /proc/sys/net/ipv4/ip_forward. Чтоб
включить пересылку в данная переменная должна быть установлена в "1":
$ echo "1" > /proc/sys/net/ipv4/ip_forward
Чтоб выключить - в "0":
$ echo "0" > /proc/sys/net/ipv4/ip_forward
Также можно воспользоваться утилитой sysctl, которая также позволяет
манипулировать параметрами ядра "на лету".
$ /sbin/sysctl -w net.ipv4.ip_forward=1
$ /sbin/sysctl -w net.ipv4.ip_forward=0
Если необходимо, чтоб пересылка включалась автоматически во время
загрузки системы, то можно добавить в файл /etc/sysctl.conf следующие
строчки:
# Enables packet forwarding
net.ipv4.ip_forward = 1
У меня выбран последний вариант.

Теперь нужно сконфигурировать таблицы ядра с помощью iptables таким
образом, чтобы компьютеры локальной сети маскировались за сервером. Для
этого нужно исправить файл формирования правил
/etc/netfilter/filter.dialup.start. Приведу сразу результат.
begin /etc/netfilter/filter.dialup.start #!/bin/bash
#******************************************************
# Предопределения
#******************************************************
# Для инета
# Сетеовой инет-интрефейс
INET_IFACE="ppp0"

# Для локальной стороны
# Сетевой интерфейс, связанный с локалкой
LAN_IFACE="eth0"
# IP-адрес "локального" сетевого интерфейса
LAN_IP="192.168.2.192"
# Диапазон ip-адресов локальной подсети
LAN_IP_RANGE="192.168.2.0/24"

# Для внутренних дел (интерфейс обратной петли)
# Название
LO_IFACE="lo"
# IP-адрес
LO_IP="127.0.0.1"

# Ускоренное обращение к утилитам
IPTABLES="/sbin/iptables"
DEPMOD="/sbin/depmod"
MODPROBE="/sbin/modprobe"

#******************************************************
# Загрузка модулей, отвечающих за работу фильтрации
#******************************************************
$DEPMOD -a
$DEPMOD -a
$MODPROBE ip_tables
$MODPROBE ip_conntrack
$MODPROBE iptable_filter
$MODPROBE iptable_nat
$MODPROBE ipt_LOG
$MODPROBE ipt_limit
$MODPROBE ipt_state
$MODPROBE ipt_MASQUERADE
$MODPROBE ip_nat_ftp
$MODPROBE ip_conntrack_ftp

#******************************************************
# Работаем с таблицей filter
#******************************************************
# Определение политик по умолчанию
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT

# Отдельно выделим цепочку для "плохих" пакетов
$IPTABLES -N bad_tcp_packets
# Не способствовать спуфинг-атаке "Sequence Number Prediction"
$IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state\
--state NEW -j REJECT --reject-with tcp-reset
# Не пропускать пакеты со статусом NEW и со сброшенным битом SYN
# Данное правило я оставляю закомментированным, потому что иначе я не
# смогу запускать сценарий запуска из сессии ssh, потому что она как
# раз попадет под действие этой цепочки
# $IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

# Отдельно выделим цепочку для прохождения ICMP пакетов
# пропускать будем только icmp-сообщения следующих типов:
# 3 - destination-unreachable (пункт назначения не доступен)
# 8 - echo-request (запрос на ping)
# 11 - time-exceeded (истекло время (ttl) при traceroute)
$IPTABLES -N icmp_packets
$IPTABLES -A icmp_packets -p ICMP --icmp-type 3 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP --icmp-type 11 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -j DROP

# Отдельно выделим цепочку для прохождения TCP пакетов
# Пропускать будет только tcp-пакеты адресованные к портам:
# 22 - сервис ssh
$IPTABLES -N tcp_packets
$IPTABLES -A tcp_packets -p TCP --dport 22 -j ACCEPT
$IPTABLES -A tcp_packets -p TCP -j DROP

# Отдельно выделим цепочку для прохождения UDP пакетов
# Пропускать будет только udp-пакеты адресованные к портам:
$IPTABLES -N udp_packets
$IPTABLES -A udp_packets -p UDP --destination-port 53 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -j DROP

#******************************************************
# Таблица filter - стандартная цепочка INPUT
#******************************************************
# Обрабатываем входящие плохие пакеты
$IPTABLES -A INPUT -p tcp -j bad_tcp_packets
# Разрешаем все входящие на интерфейс обратной петли
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -j ACCEPT
# Разрешаем все соединения получившие уже маркировку как
# установленное (ESTABLISHED) или связанное с уже
# установленным (RELATED) - для ускорения пропуска
$IPTABLES -A INPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
# Обрабатываем ICMP-сообщения: для локалки разрешить все, для инета -
# разрешить определенные
$IPTABLES -A INPUT -p ICMP -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets
# Обрабатываем TCP-соединения: для локалки разрешить определенные, для
# инета - запретить
$IPTABLES -A INPUT -p TCP -i $LAN_IFACE -s $LAN_IP_RANGE -j tcp_packets
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j DROP
# Обрабатываем UDP-соединения: аналогично TCP
$IPTABLES -A INPUT -p UDP -i $LAN_IFACE -s $LAN_IP_RANGE -j udp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j DROP

#******************************************************
# Таблица filter - стандартная цепочка FORWARD
#******************************************************
# Обрабатываем пересылаемые плохие пакеты
$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
# Разрешаем любую пересылку со стороны локалки
$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
# Для всех остальных: разрешаем только "установленные" и "связанные"
# соединения
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#******************************************************
# Работаем с таблицей nat
#******************************************************

#******************************************************
# Таблица nat - стандартная цепочка POSTROUTING
#******************************************************
# Включаем пересылку и маскирование (маскарад) адресов локальной сети
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE
end /etc/netfilter/filter.dialup.start Итак, добавилось политика по умолчанию для таблицы filter цепочки
FORWARD, также фильтрация пересылаемых пакетов в таблице filter цепочке
FORWARD, плюс в таблице nat цепочке POSTROUTING добавилось правило
маскирующее все пакеты исходящие из сервера в Инет.

Для того чтобы это все заработало нужно сначала сбросить существующие
правила, а затем применить новые:
$ /etc/netfilter/filter.flush
$ /etc/netfilter/filter.dialup.start

На клиентских машинах в качестве шлюза (gateway) нужно указать ip-адрес
сервера.

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

C уважением, Kolotov Alexandr aka mr. Эбола
отвечать: myscri***@e*****.ru
ICQ: 100349254

| Registered Linux user # 236664 |
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.linux.kirovlug-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.linux.kirovlug&email=
http://subscribe.ru/ mailto:ask@subscribe.ru

   Kolotov Alexandr 2003-10-22 15:52:05 (#10663)

Re: сообщение из linux to windows

> > >> Подскажите плз. если кто делал.
> > >> Как с linux машины послать сообщение на другую linux машину или на
> > >> windows машину (что-то типа net send). Или как вообще решить задачу
> > ASG> кажется net send есть в samba 3.0, но это неправильный подход в
> > ASG> данном случае.
> > echo "Warning!" | smbclient -M HOSTNAME -I XXX.XXX.XXX.XXX
> > HOSTNAME - NetBios-имя машины, на которую послать сообщение
> > XXX.XXX.XXX.XXX - IP-адрес машины, на которую послать сообщение
> > Можно использовать просто опцию M, но иногда она не может разресолвить
имя,
> > тогда помогает совместное ее использование с ip-адреосом "жертвы" ;)
> это тоже не realtime, т.к. админа может не быть на месте, он
> может сидеть за другой машиной, машина может быть выключена,
> это сообщение может быть прочитано другим и до админа оно так и
> не дойдет. Сохранить сообщение можно только принт скрином.
> и т.д. и т.п., т.е. этот метод не годится очень часто.

Может быть...

$man talk

TALK(1)

ИМЯ
talk - разговор с другим пользователем

СИНТАКСИС

talk person [ ttyname ]

ОПИСАНИЕ
talk - это программа визуальной связи, которая копирует строки с Вашего
терминала на терминал другого пользователя.

Если Вы хотите поговорить с кем-то на Вашей собственной машине, тогда
person - это просто входное имя пользователя (login name). Если Вы хотите
использовать talk с пользователем другого узла, тогда person принимает одну
из следующих форм:

host!user

host.user

host:user

user@host

хотя user@host - возможно предпочтительнее.

Если Вы хотите провести сеанс talk с пользователем, который имеет более, чем
один вход на машину, можно использовать аргумент ttyname для индикации
соответствующего терминального имени.

При первом вызове talk выдает сообщение:

Message from TalkDaemon@his_machine...

talk: connection requested by your_name@your_machine.

talk: respond with: talk your_name@your_machine

Не имеет значения, с какой машины отвечает вам получатель, пока его входное
имя (login) остается тем же самым. Как только связь установлена, оба
участника могут одновременно печатать, строки вывода появляются в раздельных
окнах. Нажатие CTRL l вызывает распечатку экрана, в то время, как символы
"стереть", "уничтожить", и "уничтожить слово" отрабатываются нормально. Для
выхода просто нажмите символ "прерывания"; talk переместит курсор на дно
экрана и восстановит терминал.

Разрешение использовать talk может быть запрещено или предоставлено
применением команды mesg. Вначале talk разрешен. несколько команд, особенно
nroff и {pr(1)}, запрещают сообщения в целях предотвращения беспорядочного
вывода. в режиме реального времени.

ФАЙЛЫ

/etc/hosts

/var/run/utmp

СМ. ТАКЖЕ
{mail(1)}, {mesg(1)}, {who(1)}, {write(1)}

ИСТОРИЯ
Команда talk появилась в 4.2BSD.

с ув., Влад

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.linux.kirovlug-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.linux.kirovlug&email=
http://subscribe.ru/ mailto:ask@subscribe.ru

   2003-10-22 09:53:32 (#10471)

Re: сообщение из linux to windows

On Wed, Oct 22, 2003 at 12:22:23AM +0400, Kolotov Alexandr wrote:
> >> Подскажите плз. если кто делал.
> >> Как с linux машины послать сообщение на другую linux машину или на
> >> windows машину (что-то типа net send). Или как вообще решить задачу
>
> ASG> кажется net send есть в samba 3.0, но это неправильный подход в
> ASG> данном случае.
>
> echo "Warning!" | smbclient -M HOSTNAME -I XXX.XXX.XXX.XXX
>
> HOSTNAME - NetBios-имя машины, на которую послать сообщение
> XXX.XXX.XXX.XXX - IP-адрес машины, на которую послать сообщение
>
> Можно использовать просто опцию M, но иногда она не может разресолвить имя,
> тогда помогает совместное ее использование с ip-адреосом "жертвы" ;)

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

> >> оповещения администратора о проблемах на сервере в реалтайме?
> ASG> почта, sms, логи. и это правильный подход.
> почта - не совсем realtime, логи тоже... остается sms и paging...

это был комплекс действий. sms/paging информирует о проблемме, на почте
лежит развернутая инфа, а в логах куча информации для анализа ситуации.

   2003-10-22 07:22:28 (#10434)

Re[2]: сообщение из linux to windows

>> Подскажите плз. если кто делал.
>> Как с linux машины послать сообщение на другую linux машину или на
>> windows машину (что-то типа net send). Или как вообще решить задачу

ASG> кажется net send есть в samba 3.0, но это неправильный подход в
ASG> данном случае.

echo "Warning!" | smbclient -M HOSTNAME -I XXX.XXX.XXX.XXX

HOSTNAME - NetBios-имя машины, на которую послать сообщение
XXX.XXX.XXX.XXX - IP-адрес машины, на которую послать сообщение

Можно использовать просто опцию M, но иногда она не может разресолвить имя,
тогда помогает совместное ее использование с ip-адреосом "жертвы" ;)

>> оповещения администратора о проблемах на сервере в реалтайме?
ASG> почта, sms, логи. и это правильный подход.
почта - не совсем realtime, логи тоже... остается sms и paging...

C уважением, Kolotov Alexandr (aka mr. Эбола)
отвечать: myscri***@e*****.ru
ICQ: 100349254

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.linux.kirovlug-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.linux.kirovlug&email=
http://subscribe.ru/ mailto:ask@subscribe.ru

   Kolotov Alexandr 2003-10-22 00:23:46 (#10390)