Hello list
I have a RH 7.2 boks, with 2.4.18 kernel and latest iptables installed
and working well.
I have generated a rc.firewall from
http://www.linux-firewall-tools.com/linux/ and modified it a little
for my needs, and its working well
I then have a friend without access to mail & news, and I want to
create a mapping for him
As a start I have tried to figure out how to do the new part of it but
it wont work
I have this in my box
ppp0 = my network interface
$IPADDR = my ip gained from a scriptline
193.213.112.21:119 = my newsserver and its port
$IPTABLES -t nat -A PREROUTING -i ppp0 -p tcp -d $IPADDR --dport 33333
-j DNAT --to-destination 193.213.112.21:119
$IPTABLES -A FORWARD -i ppp0 -o ppp0 -p tcp -d $IPADDR --dport 33333
-j ACCEPT
With these two lines I want to let my friend communicate with the
newsserver true my computer, and I also want to let him gain access to
a mailserver the same way, but I dont get it to work.
Are anyone able to help me with a working ruleset for this?
Here is the most important part of my rc.firewall with this two lines
in for my friend so you can see what I have done.
#!/bin/sh
# /etc/rc.d/rc.firewall
# Invoked from /etc/ppp/ip-up, or
# from /sbin/ifup-local, or
# from /etc/sysconfig/network-scripts/ifup-post.
echo -e "\n\nLoading simple rc.firewall version $FWVER..\n"
#
----------------------------------------------------------------------------
# Some definitions for easy maintenance.
# EDIT THESE TO SUIT YOUR SYSTEM AND ISP.
EXTERNAL_INTERFACE="ppp0" # Internet connected interface
LOOPBACK_INTERFACE="lo" # or your local naming
convention
LOCAL_INTERFACE_1="eth1" # internal LAN interface
echo " External Interface: $EXTERNAL_INTERFACE"
echo " Internal Interface: $LOCAL_INTERFACE_1"
IPADDR=$(/sbin/ifconfig | /bin/grep P-t-P | /usr/bin/cut -c 21-38 |
/bin/awk '{print $1}' )
LOCALNET_1="192.168.1.0/24" # whatever private range you
use
ANYWHERE="0/0" # match any IP address
DHCP_SERVER="0/0"
NAMESERVER_1="148.122.208.99" # everyone must have
at least one
NAMESERVER_2="148.122.161.3"
SMTP_SERVER="0/0" # Your ISP mail gateway. Your
relay.
POP_SERVER="pop.online.no" # Your ISP pop mail server.
NEWS_SERVER="0/0" # Your ISP news server
LOOPBACK="127.0.0.0/8" # reserved loopback address
range
CLASS_A="10.0.0.0/8" # class A private networks
CLASS_B="172.16.0.0/12" # class B private networks
CLASS_C="192.168.0.0/16" # class C private networks
BROADCAST_SRC="0.0.0.0" # broadcast source address
BROADCAST_DEST="255.255.255.255" # broadcast destination
address
PRIVPORTS="0:1023" # well known, privileged port
range
UNPRIVPORTS="1024:65535" # unprivileged port range
#
----------------------------------------------------------------------------
NFS_PORT="2049" # (TCP/UDP) NFS
SOCKS_PORT="1080" # (TCP) Socks
OPENWINDOWS_PORT="2000" # (TCP) openwindows
# X Windows port allocation begins at 6000 and increments to 6063
# for each additional server running.
XWINDOW_PORTS="6000:6063" # (TCP) X windows
# The SSH client starts at 1023 and works down to 513 for each
# additional simultaneous connection originating from a privileged
port.
# Clients can optionally be configured to use only unprivileged ports.
SSH_LOCAL_PORTS="1022:65535" # port range for local clients
SSH_REMOTE_PORTS="513:65535" # port range for remote
clients
# traceroute usually uses -S 32769:65535 -D 33434:33523
TRACEROUTE_SRC_PORTS="32769:65535"
TRACEROUTE_DEST_PORTS="33434:33523"
#
---------------------------------------------------------------------------
IPTABLES=/sbin/iptables
echo -en " loading modules: "
echo " - Verifying that all kernel modules are ok"
/sbin/depmod -a
echo -en "ip_tables, "
/sbin/modprobe ip_tables
echo -en "ip_conntrack, "
/sbin/modprobe ip_conntrack
echo -en "ip_conntrack_ftp, "
/sbin/modprobe ip_conntrack_ftp
echo -en "ip_conntrack_irc, "
/sbin/modprobe ip_conntrack_irc
echo -en "iptable_nat, "
/sbin/modprobe iptable_nat
echo -en "ip_nat_ftp, "
/sbin/modprobe ip_nat_ftp
echo -en "ip_nat_irc, "
/sbin/modprobe ip_nat_irc
echo -en "ipt_multiport, "
/sbin/modprobe ipt_multiport
echo ". Done loading modules."
echo ". Vi har bekreftet at det virker s� langt."
#
----------------------------------------------------------------------------
# Enable IP Forwarding, if it isn't already
echo " enabling forwarding.."
echo "1" > /proc/sys/net/ipv4/ip_forward
echo " enabling DynamicAddr.."
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
# Enable TCP SYN Cookie Protection
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
# Enable broadcast echo Protection
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Enable bad error message Protection
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# Enable IP spoofing protection
# turn on Source Address Verification
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $f
done
# Disable ICMP Redirect Acceptance
for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do
echo 0 > $f
done
for f in /proc/sys/net/ipv4/conf/*/send_redirects; do
echo 0 > $f
done
# Disable Source Routed Packets
for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
echo 0 > $f
done
# Log Spoofed Packets, Source Routed Packets, Redirect Packets
for f in /proc/sys/net/ipv4/conf/*/log_martians; do
echo 1 > $f
done
#
----------------------------------------------------------------------------
# Default policy is DROP
# Explicitly accept desired INCOMING & OUTGOING connections
$IPTABLES -P INPUT DROP
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT DROP
$IPTABLES -F OUTPUT
$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD
$IPTABLES -t nat -F
$IPTABLES -F
echo " Kontrollpunkt A1"
#
----------------------------------------------------------------------------
# LOOPBACK
# Unlimited traffic on the loopback interface.
$IPTABLES -A INPUT -i $LOOPBACK_INTERFACE -j ACCEPT
$IPTABLES -A OUTPUT -o $LOOPBACK_INTERFACE -j ACCEPT
#
----------------------------------------------------------------------------
# Unlimited traffic within the local network.
# All internal machines have access to the fireall machine.
$IPTABLES -A INPUT -i $LOCAL_INTERFACE_1 -s $LOCALNET_1 -j ACCEPT
$IPTABLES -A OUTPUT -o $LOCAL_INTERFACE_1 -d $LOCALNET_1 -j ACCEPT
#
----------------------------------------------------------------------------
# Masquerade internal traffic.
# All internal traffic is masqueraded externally.
# WARNING:
# The iptables functionality is under development.
# No filters are applied. Just masquerading.
$IPTABLES -A FORWARD -i $EXTERNAL_INTERFACE -o $LOCAL_INTERFACE_1 -m
state \
--state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $LOCAL_INTERFACE_1 -o $EXTERNAL_INTERFACE -j
ACCEPT
$IPTABLES -A FORWARD -j LOG
echo " Enabling SNAT (MASQUERADE) functionality on $EXTIF"
$IPTABLES -t nat -A POSTROUTING -o $EXTERNAL_INTERFACE -j MASQUERADE
echo " Kontrollpunkt A2"
#
----------------------------------------------------------------------------
# SPOOFING & BAD ADDRESSES
# Refuse spoofed packets.
# Ignore blatantly illegal source addresses.
# Protect yourself from sending to bad addresses.
# Refuse incoming packets pretending to be from the external
address.
$IPTABLES -A INPUT -s $IPADDR -j DROP
#
----------------------------------------------------------------------------
# NOTE:
# The symbolic names used in /etc/services for the port numbers
vary by
# supplier. Using them is less error prone and more meaningful,
though.
#
----------------------------------------------------------------------------
# TCP UNPRIVILEGED PORTS
# Avoid ports subject to protocol & system administration problems.
# NFS: establishing a TCP connection
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p tcp --syn \
--destination-port $NFS_PORT -j DROP
$IPTABLES -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp --syn \
--destination-port $NFS_PORT -j REJECT
# openwindows: establishing a connection
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p tcp --syn \
--destination-port $OPENWINDOWS_PORT -j DROP
$IPTABLES -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp --syn \
--destination-port $OPENWINDOWS_PORT -j REJECT
# Xwindows: establishing a connection
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p tcp --syn \
--destination-port $XWINDOW_PORTS -j DROP
$IPTABLES -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp --syn \
--destination-port $XWINDOW_PORTS -j REJECT
# SOCKS: establishing a connection
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p tcp --syn \
--destination-port $SOCKS_PORT -j DROP
$IPTABLES -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp --syn \
--destination-port $SOCKS_PORT -j REJECT
#
----------------------------------------------------------------------------
# UDP UNPRIVILEGED PORTS
# Avoid ports subject to protocol & system administration problems.
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p udp \
--destination-port $NFS_PORT -j DROP
# UDP INCOMING TRACEROUTE
# traceroute usually uses -S 32769:65535 -D 33434:33523
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p udp \
--source-port $TRACEROUTE_SRC_PORTS \
--destination-port $TRACEROUTE_DEST_PORTS -j DROP
#
----------------------------------------------------------------------------
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p tcp ! --syn \
-d $IPADDR -j ACCEPT
# ------------------------------------------------------------------
# THIS PART IS FOR MY FRIEND
$IPTABLES -t nat -A PREROUTING -i ppp0 -p tcp -d $IPADDR --dport 33333
-j DNAT --to-destination 193.213.112.21:119
$IPTABLES -A FORWARD -i ppp0 -o ppp0 -p tcp -d $IPADDR --dport 33333
-j ACCEPT
Mvh
Roger Mauseth