[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[openbsd] pf.conf - покритикуйте



Приветствую!

В связи с планируемым переходом на OpenBSD с другой OS, а также
введением DMZ, прошу конструктивно покритиковать мой первый pf.conf
Пока нет всех планируемых серверов, экспериментирую на "бумаге" :(

Планируемая схема подключения такая:
WAN----ext_if-OPENBSD_0-dmz_if----DMZNET_WITH_SOME_SERVERS----dmz_if-OPENBSD_1-int_if----LAN

Сервисы для LAN такие:
  - доступ к ВЕБ через прокси-сервер, котрый розмещен в DMZNET;
  - доступ к FTP-серверам в WAN;
  - доступ к MAILSERVER (smtp, pop3), котрый розмещен в DMZNET.

в DMZNET будут размещены :
  - PROXYSERVER (http, https);
  - MAILSERVER (smtp, pop3).

Со стороны WAN доступ есть  лишь к MAILSERVER (smtp) и к OPENBSD_0 (ssh).


# OPENBSD_0's pf.conf v.1
#
################### Macros #####################
ext_if="em1"
dmz_if="em0"
dmznet=$dmz_if:network

tcp_services="{ ssh }"
udp_services="{ domain, ntp }"
icmp_types="{ echoreq, unreach }"

proxyserver="10.10.10.10"
mailserver="10.10.10.11"
#dnsserver="10.10.10.12"
#openbsd_0="10.10.10.1"
#openbsd_1="10.10.10.100"

webports="{ http, https }"
mailports="{ smtp }"
################### Macros #####################

################### Tables #####################
#table <clients> persist file "/etc/clients"
table <spammers> persist file "/etc/spammers"
table <brutforcers> persist
# crontab -u root -e
# 1 * * * * /sbin/pfctl -t brutforcers -T expire 86400

table <rfc1819> const {192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8, \
169.254.0.0/16}
table <restricted> const {169.254.0.0/16, 192.0.2.0/24, 0.0.0.0/8, \
240.0.0.0/4}
################### Tables #####################

################### Options ####################
#set block-policy drop
set block-policy return
set loginterface $ext_if
set skip on lo
################### Options ####################

################### Scrub ######################
match in all scrub (no-df)
################### Scrub ######################

################### Translation ################
nat on $ext_if from !($ext_if) -> ($ext_if:0)
nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"

# forward outgoing ftp-connection to ftp-proxy
rdr pass on $dmz_if proto tcp to port ftp -> 127.0.0.1 port 8021

# incoming smtp connection
rdr on $ext_if proto tcp from any to $ext_if port $mailports -> \
$mailserver
# No redir to mailserver from spammers
no rdr on $ext_if from <spammers>
################### Translation ################

################### Filtering ##################
block all
antispoof quick for { lo $dmz_if $ext_if }
block drop in log quick on $ext_if from {<rfc1819>, <restricted>, \
<brutforcers>, <spammers>} to any
block drop out log quick on $ext_if from any to {<rfc1819>, \
<restricted>, <brutforcers>, <spammers>}

# SMTP
# Only mailserver can establish outgoing smtp-connection
block drop in log quick on $dmz_if proto tcp from !$mailserver to any \
port $mailports
pass in quick on $dmz_if proto tcp from $mailserver to any port \
$mailports tag MAIL-OUT
pass in quick on $ext_if proto tcp from any to $mailserver port \
$mailports tag MAIL-IN synproxy state
pass out quick on $ext_if proto tcp from $mailserver to any port \
$mailports tagged MAIL-OUT
pass out quick on $dmz_if proto tcp from any to $mailserver port \
$mailports tagged MAIL-IN

# FTP
#
anchor "ftp-proxy/*"
pass in on $dmz_if proto tcp from $dmznet to 127.0.0.1 port 8021 keep \
state
pass out on $ext_if proto tcp from 127.0.0.1 to any port 21 keep state

# SSH
# SSH from DMZ-network
pass in on $dmz_if inet proto tcp from $dmznet to $dmz_if port ssh \
synproxy state (max-src-conn-rate 3/60, overload <brutforcers> flush \
global)
# SSH from WAN
pass in on $ext_if inet proto tcp from any to $ext_if port ssh \
synproxy  state (max-src-conn-rate 3/60, overload <brutforcers> flush \
global)

# DNS & NTP
#
pass in quick on $dmz_if proto {tcp, udp} from $dmznet to any port \
$udp_services keep state
pass out quick on $ext_if proto {tcp, udp} from $dmznet to any port \
$udp_services keep state

# WEB
# Only proxyserver can establish  HTTP & HTTPS connections
pass in on $dmz_if proto tcp from $proxyserver to any port $webports \
tag PROXY keep state
pass out on $ext_if proto tcp from $proxyserver to any port $webports \
tagged PROXY keep state

# ICMP
#
pass log inet proto icmp all icmp-type $icmp_types keep state
################### Filtering ##################


Спасибо.

-- 
With best regards,
Paul Demydyuk

--
To unsubscribe send an e-mail to openbsd+unsubscribe@uaoug.org.ua
For retrieval in messages archive http://www.uaoug.org.ua/archive