On Fri, Mar 7, 2008 at 9:44 PM, RPN01 <[EMAIL PROTECTED]> wrote:

>  Also: If I violate this using Pipe and the UDP stage, why don't I get a
> non-zero return code? The UDP stage quietly accepts records, and the pipe
> returns a zero return code, but no data is actually sent. There's no errors

Most certainly CMS Pipelines will slap you on the hand when you try
(eg error 1015). But your code may be hiding it. You're right that
this has nothing to do with the nature of the UDP network protocol.

In general IUCV statements in the CP directory can be used to keep CMS
users away from the stack (apart from the old VMCF API). But last time
I looked the sample CP directory entries had IUCV ANY and IUCV ALLOW
scattered all over the place (a bad example, imho).

Since some time, VM TCP/IP by default protects the low port numbers.
This is good for the target port of conversations since it prevents
the average VM user from acting like a standard service. Though the
ports will normally be bound to the standard application, you could
think of a denial of service scheme where the application can be
tricked into a failure, and the attacker could use the moment until
restart to steal the port. At that point, it would also prevent the
legitimate server from using it.
Basically the only ones that require a low port are the standard
services. So when you have put them on the PORT list in VM TCP/IP that
is enough to grant access and also to keep others away from that port
(DoS).

Most applications have two-way traffic, and response goes back to the
port number that sent the request. You cannot have different processes
use the same port for sending and receiving.  So the effect is that
conversations that originate from low ports are typically standard
applications. The idea is that when it takes root to have that port,
the application could be trusted since it was managed by a system
admin. Now that each windows user is his own admin on the workstation,
this does not make a lot of sense anymore.

And finally, there is the issue of re-use of a port number. When
someone has used a port, VM TCP/IP will prevent re-use of that port
for a short period of time (so that any incoming late traffic is not
delivered to the next owner of the port).

The example I gave you carefully keeps the port for live while sending
UDP datagrams. If you have coded it into an EXEC that establishes a
new conversation for each message or each set of messages, you will
find VM TCP/IP reject that connection (unless you have reuseaddr). And
when you try this trick without specifying the source port number, the
stack will have all ports in "don't use for a while" status and runs
out of resources.
The TCP/IP support in CMS Pipelines requires some delicate plumbing.
You really can't get it straight with a crow bar. You want the
pipeline segment with the UDP stage to run permanently. You can use a
REXX stage to gets the records out of a spool file or whatever, as
long is you don't make the UDP stage part of the sipping pipeline. But
that's probably something for CMSPIP-L instead.

IIRC you can make syslogd accept traffic from other ports than 514.
Unless you can fully trust everyone on VM and Linux, you may at least
want to define that port in VM TCP/IP and syslogd.

Rob
-- 
Rob van der Heij
Velocity Software, Inc
http://velocitysoftware.com/

Reply via email to