Страница 1 из 1

Внешняя почта через шлюз

Добавлено: 2008-04-28 21:11:34
manefesto
Имеется сервер. На нем стоит squid,ipfw,nat.
Сквид считает интернет трафик.

Вообщем хочу что с клиентской машины я мог получать почту. Но так как я нахожусь за сервером(шлюзом), то скорее всего надо будет сделать НАТ.

Настройки rc.conf с клиентской машины

Код: Выделить всё

defaultrouter="192.168.33.1"
hostname="notebook.manefesto"
ifconfig_msk0="inet 192.168.33.2  netmask 255.255.255.0"   

netstat -r

Код: Выделить всё

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            server             UGS         0       55   msk0
localhost          localhost          UH          0        4    lo0
192.168.33.0       link#1             UC          0        0   msk0
server             00:15:e9:b5:7b:63  UHLW        2    34709   msk0    614
notebook           00:1e:8c:48:67:0d  UHLW        1    42889    lo0
С сервера rc.conf

Код: Выделить всё

ifconfig_sk0="inet 192.168.33.1  netmask 255.255.255.0"
defaultrouter="192.168.33.1"
hostname="server.manefesto"
gateway_enable="YES"
natd_enable="YES"
natd_interface="tun0"
ifconfig_rl0="DHCP"
hostname="server.manefesto"
netstat -r

Код: Выделить всё

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            cable-gw4.ccl.ru   UGS         0      375   tun0
localhost          localhost          UH          0        0    lo0
172.25.64.0/18     link#1             UC          0        0    rl0
192.168.33.0       link#2             UC          0        0    sk0
server             00:15:e9:b5:7b:63  UHLW        1        0    lo0
notebook           00:1e:8c:48:67:0d  UHLW        1    15510    sk0    479
cable-gw4.ccl.ru   x.x.x.x      UGH         0        0   tun0
На сервере rl0 смотрит в мир,sk0 смотрит в сеть.

Конфиг rc.firewall

Код: Выделить всё

#!/bin/sh
fw="/sbin/ipfw -a add"
nif="sk0"
iif="tun0"

ipfw -f flush
$fw add divert natd all from any to any via $iif
#пускаем всех из внутренней сетки
$fw 00010 allow all from any to any via $nif

$fw 00015 check-state

$fw 00110 allow tcp from any to 195.222.130.67 53 out via $iif  setup keep-state
$fw 00120 allow udp from any to 195.222.130.67 53 out via $iif  keep-state

$fw 00200 allow tcp from any to any 80 out via $iif  setup keep-state
$fw 00210 allow tcp from any to any 443 out via $iif  setup keep-state
$fw 00220 allow tcp from any to any 25 out via $iif  setup keep-state
$fw 00221 allow tcp from any to any 110 out via $iif  setup keep-state
$fw 00222 allow tcp from any to any 22 out via $iif  setup keep-state
$fw 00223 allow tcp from any to any 43 out via $iif  setup keep-state
$fw 00224 allow tcp from any to any 5190 out via $iif  #setup keep-state

#ftp
$fw 00225 allow tcp from me to any 20,21 out via $iif # setup keep-state
$fw 00226 allow tcp from any to me 49152-65535 in via $iif
#разрешаем icmp запросы
$fw 00230 allow icmp from any to any out via $iif  keep-state

$fw 00240 allow tcp from me to any out via $iif  setup keep-state uid root

#################################################################
# Интерфейс смотрящий в Internet (Входящая секция)
# Опрашиваем запросы начала сессии идущие из Интернета
# в локальную сеть или к гейту
#################################################################

# Запрещаем весь входящий траффик из зарезервированных адресных пространств
$fw 00300 deny all from 192.168.0.0/16 to any in via $iif #RFC 1918 private IP
$fw 00301 deny all from 172.16.0.0/12 to any in via $iif  #RFC 1918 private IP
$fw 00302 deny all from 10.0.0.0/8 to any in via $iif     #RFC 1918 private IP
$fw 00303 deny all from 127.0.0.0/8 to any in via $iif    #loopback
$fw 00304 deny all from 0.0.0.0/8 to any in via $iif      #loopback
$fw 00305 deny all from 169.254.0.0/16 to any in via $iif #DHCP auto-config
$fw 00306 deny all from 192.0.2.0/24 to any in via $iif   #reserved for docs
$fw 00307 deny all from 204.152.64.0/23 to any in via $iif #Sun cluster interconnect
$fw 00308 deny all from 224.0.0.0/3 to any in via $iif    #Class D & E multicast

# Запрещаем публичные пинги
$fw 00310 deny icmp from any to any in via $iif

# Запрещаем ident
$fw 00315 deny tcp from any to any 113 in via $iif

# Запрещаем весь сервис Netbios. 137=имя, 138=дейтаграмма, 139=сессия
# Netbios это сервис общего доступа MS/Windows .
# Блокируем MS/Windows hosts2 name server requests 81
$fw 00320 deny tcp from any to any 137 in via $iif
$fw 00321 deny tcp from any to any 138 in via $iif
$fw 00322 deny tcp from any to any 139 in via $iif
$fw 00323 deny tcp from any to any 81 in via $iif

# Запрещаем пакеты прибывшие позже
$fw 00330 deny all from any to any frag in via $iif

# Запрещаем ACK пакеты которые не совпадают с динамической таблицей правил
$fw 00332 deny tcp from any to any established in via $iif

# Разрешаем входящую www функцию потому что у меня стоит сервер apache
$fw 00400 allow tcp from any to me 80 in via $iif setup limit src-addr 2

# Разрешаем входящие безопасные FTP, Telnet, and SCP из интернета
$fw 00410 allow tcp from any to me 22 in via $iif setup limit src-addr 2

# Разрешаем входящие небезопасные Telnet сессии из интернета
# указано как небезопасные потому что ID & PW передаются через интернет
# открытым текстом
# Удаляем эту группу правил, если у вас нет работающего telnet сервера.
$fw 00420 allow tcp from any to me 23 in via $iif setup limit src-addr 2

# Остальное отбрасывается по умолчанию
# отбрасываем и протоколируем все непрошедшие пакеты,
# что бы можно было увидеть какие они
$fw 00999 deny log all from any to any
Жду советов...заранее благодарю.

Re: Внешняя почта через шлюз

Добавлено: 2008-04-29 8:24:21
manefesto
Может не прозвучал вопрос.
Как настроить(наверное нат) чтобы у меня ходила почта ?

Re: Внешняя почта через шлюз

Добавлено: 2008-04-29 9:17:21
dikens3
Соединение с интернет у тебя PPPoE?

Re: Внешняя почта через шлюз

Добавлено: 2008-04-29 10:04:23
manefesto
да

Re: Внешняя почта через шлюз

Добавлено: 2008-04-29 11:25:41
dikens3
тогда включи nat в PPPoE.
rc.conf

Код: Выделить всё

# PPPoE
ppp_enable="YES"
ppp_profile="Internet"
ppp_mode="ddial"
ppp_user="root"
ppp_nat="YES"
/etc/ppp.conf

Код: Выделить всё

default:

Internet:
    set log Phase tun command
    set device PPPoE:rl0
    set authname login
    set authkey password
    set mru 1492
    set mtu 1492
    enable lqr
    set lqrperiod 10
    enable lqr echo
    enable echo
    set dial
    set login
    set timeout 0
    set redial 0 0

# NAT
   nat enable yes
   nat log no
   nat same_ports yes
   nat unregistered_only yes
   nat deny_incoming no
в ipfw всё нужно разрешить и всё должно пахать.

Re: Внешняя почта через шлюз

Добавлено: 2008-04-29 12:08:45
manefesto
за конфиг спасиба, а вот посмотри в первом моем сообщении в теме есть конфиг файрвола.. всё нормально ?

Re: Внешняя почта через шлюз

Добавлено: 2008-04-29 13:31:52
GreenDay
а кроме почты то вообще чего нить ходит?
например по 80 порту, обходя сквид
или ssh наружу

судя ко конфигу фаера - вряд ли

Re: Внешняя почта через шлюз

Добавлено: 2008-04-29 13:58:23
manefesto
ну на самом деле я могу закрыть

Код: Выделить всё

$fw 00010 allow all from any to any via $nif
и дать только на определенные порты.
Но так как я в сетке один...так что пока пофиг.

Вот еще что....внешний мир с клиентской машины не пингуется

Re: Внешняя почта через шлюз

Добавлено: 2008-04-29 14:04:00
GreenDay
ага, а то я смотрю конфиг прям с хэндбука
тока не вижу там нигде skipto и второго ната

вот пользуйсо.. правда ssh так и не заработал :(

Код: Выделить всё

freebsd# cat /etc/firewall.sh
#!/bin/sh
/sbin/ipfw -q -f flush

local_if="em1"
local_net="192.168.0.0/24"
local_ip="192.168.0.5"
inet_ip="x.x.x.x"
inet_mask="255.255.255.0"
cmd="ipfw -q add"
skip="skipto 3500"
pif="em0"

#################################################################
# No restrictions on Inside LAN Interface for private network
# Change xl0 to your LAN NIC interface name
#################################################################
$cmd 100 allow all from any to any via ${local_if}

#################################################################
# No restrictions on Loopback Interface
#################################################################
$cmd 400 allow all from any to any via lo0

$cmd 450 deny tcp from any to me dst-port 8080 in recv $pif
#$cmd 451 fwd ${local_ip},8080 tcp from ${local_net} to any dst-port 80

#################################################################
# check if packet is inbound and nat address if it is
#################################################################
$cmd 501 divert 199 ip from any to any in via $pif
$cmd 500 divert natd ip from any to any in via $pif

#################################################################
# Allow the packet through if it has previous been added to the
# the "dynamic" rules table by a allow keep-state statement.
#################################################################
$cmd 600 check-state

# Allow out access to my ISP's Domain name server.
# x.x.x.x must be the IP address of your ISP's DNS
# Dup these lines if your ISP has more than one DNS server
# Get the IP addresses from /etc/resolv.conf file
$cmd 700 $skip tcp from any to x.x.x.x 53 out via $pif setup keep-state
$cmd 800 $skip tcp from any to x.x.x.x 53 out via $pif setup keep-state

# Allow out non-secure standard www function
$cmd 900 $skip tcp from any to any 80 out via $pif setup keep-state

# Allow out secure www function https over TLS SSL
$cmd 1000 $skip tcp from any to any 443 out via $pif setup keep-state
$cmd 1100 $skip tcp from any to any 9443 out via $pif setup keep-state
$cmd 1110 $skip tcp from any to any 9080 out via $pif setup keep-state

# Allow out send & get email function
$cmd 1200 $skip tcp from any to any 25 out via $pif setup keep-state
$cmd 1300 $skip tcp from any to any 110 out via $pif setup keep-state
$cmd 1310 $skip tcp from any to any 587 out via $pif setup keep-state
$cmd 1320 $skip tcp from any to any 995 out via $pif setup keep-state

#Allow uot icq
$cmd 1400 $skip tcp from any to any 5190 out via $pif setup keep-state

# Allow out FreeBSD (make install & CVSUP) functions
# Basically give user root "GOD" privileges.
$cmd 1500 $skip tcp from me to any out via $pif setup keep-state uid root

# Allow out ping
$cmd 1600 $skip icmp from any to any out via $pif keep-state

# Allow out Time
$cmd 1700 $skip tcp from any to any 37 out via $pif setup keep-state

# Allow out secure FTP, Telnet, and SCP
$cmd 1750 $skip tcp from any to any 21 out via $pif setup keep-state
$cmd 11751 $skip tcp from any to any 49152-65535 out via $pif setup keep-state

# This function is using SSH (secure shell)
$cmd 1800 $skip tcp from any to any 22 out via $pif setup keep-state

# Allow out whois
$cmd 1900 $skip tcp from any to any 43 out via $pif setup keep-state

# Allow ntp time server
$cmd 2000 $skip udp from any to any 123 out via $pif keep-state

# Deny all inbound traffic from non-routable reserved address spaces
$cmd 2100 deny all from 192.168.0.0/16  to any in via $pif  #RFC 1918 private IP
$cmd 2101 deny all from 172.16.0.0/12   to any in via $pif  #RFC 1918 private IP
$cmd 2102 deny all from 10.0.0.0/8      to any in via $pif  #RFC 1918 private IP
$cmd 2003 deny all from 127.0.0.0/8     to any in via $pif  #loopback
$cmd 2004 deny all from 0.0.0.0/8       to any in via $pif  #loopback
$cmd 2005 deny all from 169.254.0.0/16  to any in via $pif  #DHCP auto-config
$cmd 2006 deny all from 192.0.2.0/24    to any in via $pif  #reserved for docs
$cmd 2007 deny all from 204.152.64.0/23 to any in via $pif  #Sun cluster
$cmd 2008 deny all from 224.0.0.0/3     to any in via $pif  #Class D & E multicast

# Deny any late arriving packets
$cmd 2100 deny all from any to any frag in via $pif

# Deny ACK packets that did not match the dynamic rule table
$cmd 2300 deny tcp from any to any established in via $pif

# Allow in standard www function because I have Apache server
$cmd 2400 allow tcp from any to me 80 in via $pif setup limit src-addr 2

# Allow in secure FTP, Telnet, and SCP from public Internet
$cmd 2600 allow tcp from any to me 22 in via $pif setup limit src-addr 2

$cmd 2700 allow udp from any to me dst-port 53
$cmd 2800 allow udp from me to any dst-port 53

# Reject & Log all unauthorized incoming connections from the public Internet
$cmd 2900 deny log all from any to any in via $pif

# Reject & Log all unauthorized out going connections to the public Internet
$cmd 3000 deny log all from any to any out via $pif

# This is skipto location for outbound stateful rules
$cmd 3501 divert natd ip from any to any out via $pif
$cmd 3500 divert 199 ip from any to any out via $pif
$cmd 3600 allow ip from any to any

# Everything else is denied by default
# deny and log all packets that fell through to see what they are
$cmd 10000 deny log all from any to any
################ End of IPFW rules file ###############################

Re: Внешняя почта через шлюз

Добавлено: 2008-04-29 14:09:01
manefesto

Код: Выделить всё

вот пользуйсо
А без пафоса никак ?

Re: Внешняя почта через шлюз

Добавлено: 2008-04-29 17:41:40
GreenDay
хорошо, не пользуйсо