酷驴 發表於 2013-6-29 14:38:34

FreeBSD配置防火墙开启SSH服务的方法

<span style="COLOR: #ff0000"><strong>1、配置FreeBSD 防火墙</strong></span><br />ee /etc/rc.conf&nbsp;&nbsp; #编辑,在最后添加<br /><span style="COLOR: #0000ff">firewall_enable=&quot;yes&quot;</span>&nbsp; #开启防火墙<br />net.inet.ip.fw.verbose=1&nbsp;&nbsp; #启用防火墙日志功能<br />net.inet.ip.fw.verbose_limit=5&nbsp; #启用防火墙日志功能<br />natd_enable=&quot;YES&quot;&nbsp; # 开启防火墙NAT功能<br />natd_interface=&quot;rl0&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />natd_flags=&quot;-dynamic -m&quot;<br /><span style="COLOR: #0000ff">firewall_script=&quot;/etc/ipfw.rules&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #自定义防火墙规则路径<br />按esc,回车,再按a保存配置</span><br /><span style="COLOR: #ff0000"><strong>2、添加防火墙规则<br /><br /></strong><span style="COLOR: #0000ff">ee /etc/ipfw.rules&nbsp;&nbsp;&nbsp; #编辑防火墙规则,添加以下代码<br /></span></span>
<p></p>
<pre class="brush: php; title: ; notranslate" title="">#!/bin/sh
################ Start of IPFW rules file ######################
# Flush out the list before we begin.
ipfw -q -f flush

# Set rules command prefix
cmd=&quot;ipfw -q add&quot;
skip=&quot;skipto 800&quot;
pif=&quot;rl0&quot;&nbsp;&nbsp;&nbsp;&nbsp; # public interface name of NIC
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # facing the public Internet

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

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

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

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

#################################################################
# Interface facing Public Internet (Outbound Section)
# Check session start requests originating from behind the
# firewall on the private network or from this gateway server
# destined for the public Internet.
#################################################################

# 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 020 $skip tcp from any to x.x.x.x 53 out via $pif setup keep-state
# Allow out access to my ISP's DHCP server for cable/DSL configurations.
$cmd 030 $skip udp from any to x.x.x.x 67 out via $pif keep-state

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

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

# Allow out send &amp; get email function
$cmd 060 $skip tcp from any to any 25 out via $pif setup keep-state
$cmd 061 $skip tcp from any to any 110 out via $pif setup keep-state

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

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

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

# Allow out nntp news (i.e. news groups)
$cmd 100 $skip tcp from any to any 119 out via $pif setup keep-state

# Allow out secure FTP, Telnet, and SCP
# This function is using SSH (secure shell)
$cmd 110 $skip tcp from any to any 22 out via $pif setup keep-state

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

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

#################################################################
# Interface facing Public Internet (Inbound Section)
# Check packets originating from the public Internet
# destined for this gateway server or the private network.
#################################################################

# Deny all inbound traffic from non-routable reserved address spaces
#$cmd 300 deny all from 192.168.0.0/16&nbsp; to any in via $pif&nbsp; #RFC 1918 private IP
$cmd 301 deny all from 172.16.0.0/12&nbsp;&nbsp; to any in via $pif&nbsp; #RFC 1918 private IP
$cmd 302 deny all from 10.0.0.0/8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; to any in via $pif&nbsp; #RFC 1918 private IP
$cmd 303 deny all from 127.0.0.0/8&nbsp;&nbsp;&nbsp;&nbsp; to any in via $pif&nbsp; #loopback
$cmd 304 deny all from 0.0.0.0/8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; to any in via $pif&nbsp; #loopback
$cmd 305 deny all from 169.254.0.0/16&nbsp; to any in via $pif&nbsp; #DHCP auto-config
$cmd 306 deny all from 192.0.2.0/24&nbsp;&nbsp;&nbsp; to any in via $pif&nbsp; #reserved for docs
$cmd 307 deny all from 204.152.64.0/23 to any in via $pif&nbsp; #Sun cluster
$cmd 308 deny all from 224.0.0.0/3&nbsp;&nbsp;&nbsp;&nbsp; to any in via $pif&nbsp; #Class D &amp; E multicast

# Deny ident
$cmd 315 deny tcp from any to any 113 in via $pif

# Deny all Netbios service. 137=name, 138=datagram, 139=session
# Netbios is MS/Windows sharing services.
# Block MS/Windows hosts2 name server requests 81
$cmd 320 deny tcp from any to any 137 in via $pif
$cmd 321 deny tcp from any to any 138 in via $pif
$cmd 322 deny tcp from any to any 139 in via $pif
$cmd 323 deny tcp from any to any 81&nbsp; in via $pif

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

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

# Allow traffic in from ISP's DHCP server. This rule must contain
# the IP address of your ISP's DHCP server as it's the only
# authorized source to send this packet type.
# Only necessary for cable or DSL configurations.
# This rule is not needed for 'user ppp' type connection to
# the public Internet. This is the same IP address you captured
# and used in the outbound section.
$cmd 360 allow udp from x.x.x.x to any 68 in via $pif keep-state

# Allow in standard www function because I have Apache server
$cmd 370 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 380 allow tcp from any to me 22 in via $pif setup limit src-addr 2

# Allow in non-secure Telnet session from public Internet
# labeled non-secure because ID &amp; PW are passed over public
# Internet as clear text.
# Delete this sample group if you do not have telnet server enabled.
$cmd 390 allow tcp from any to me 23 in via $pif setup limit src-addr 2

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

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

# This is skipto location for outbound stateful rules
$cmd 800 divert natd ip from any to any out via $pif
$cmd 801 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 999 deny log all from any to any
################ End of IPFW rules file ###############################

&nbsp;&nbsp;</pre>
<p>备注:参数说明:<br /><span style="COLOR: #ff0000">#$cmd 300 deny all from 192.168.0.0/16&nbsp; to any in via $pif&nbsp; #RFC 1918 private IP<br />我的IP地址是192.168.21.173,是属于192.168.0.0/16 IP段,所以这里要注释掉这一行,允许连接外网,否则主机无法联网。<br /></span><span style="COLOR: #0000ff">$cmd 380 allow tcp from any to me 22 in via $pif setup limit src-addr 2</span><br /><span style="COLOR: #0000ff">是开启SSH默认端口22</span><br /><span style="COLOR: #ff0000"><strong>3、重启网络服务,使防火墙规则生效<br /></strong></span><br />/etc/netstart&nbsp; #重启网络<br />/etc/rc.d/ipfw start&nbsp;&nbsp;&nbsp; &nbsp;#开启防火墙<br />ipfw&nbsp;disable firewall&nbsp;&nbsp;&nbsp; #关闭防火墙<br />ipfw enable firewall&nbsp;&nbsp; #开启防火墙<br />/etc/rc.d/ipfw&nbsp; restart&nbsp; &nbsp;#重启防火墙<br />sh /etc/ipfw.rules&nbsp;&nbsp;&nbsp;&nbsp; #使防火墙规则生效<br /><span style="COLOR: #ff0000"><strong>4、开启SSH服务</strong></span><br />(1)ee&nbsp; /etc/inetd.conf&nbsp; #编辑,去掉sshd前面的#<br /><span style="COLOR: #0000ff">ssh&nbsp;&nbsp;&nbsp;&nbsp; stream&nbsp; tcp&nbsp;&nbsp;&nbsp;&nbsp; nowait&nbsp; root&nbsp;&nbsp;&nbsp; /usr/sbin/sshd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sshd -i -4</span><br />(2)ee &nbsp;/etc/rc.conf&nbsp;&nbsp; #编辑,在最后添加<br /><span style="COLOR: #0000ff">sshd_enable=&quot;yes&quot;&nbsp;&nbsp; </span><br />(3)ee&nbsp; /etc/ssh/sshd_config&nbsp; #编辑配置文件<br /><span style="COLOR: #0000ff">PermitRootLogin yes&nbsp;&nbsp; #允许root登录</span><br /><span style="COLOR: #0000ff">PasswordAuthentication yes&nbsp;&nbsp;&nbsp; #使用密码验证</span><br /><span style="COLOR: #0000ff">PermitEmptyPasswords no&nbsp;&nbsp; #不允许空密码登录</span><br /><span style="COLOR: #ff0000">/etc/rc.d/sshd start&nbsp; #启动ssh服务</span><br /><span style="COLOR: #ff0000">/etc/rc.d/sshd restart&nbsp;&nbsp;&nbsp; #重启ssh<br /><strong>配置完成,现在已经可以使用Putty等远程连接工具连接服务器了。<br /><span style="COLOR: #ff00ff">#####################################################</span><br /><span style="COLOR: #ff00ff">扩展阅读:</span></strong></span><br /><span style="COLOR: #ff00ff">有两种加载自定义 ipfw 防火墙规则的方法。</span><br /><span style="COLOR: #ff00ff">其一是将变量 firewall_type 设为包含不带 ipfw(8) 命令行选项的 防火墙规则 文件的完整路径。</span><br /><span style="COLOR: #ff00ff">例如:</span><br /><span style="COLOR: #ff00ff">add allow in</span><br /><span style="COLOR: #ff00ff">add allow out<br />firewall_type=&quot;open&quot;参数说明<br /></span><span style="COLOR: #ff00ff">open ── 允许所有流量通过。</span><br /><span style="COLOR: #ff00ff">client ── 只保护本机。</span><br /><span style="COLOR: #ff00ff">simple ── 保护整个网络。</span><br /><span style="COLOR: #ff00ff">closed ── 完全禁止除回环设备之外的全部 IP 流量。</span><br /><span style="COLOR: #ff00ff">UNKNOWN ── 禁止加载防火墙规则。</span><br /><span style="COLOR: #ff00ff">filename ── 到防火墙规则文件的绝对路径。</span><br /><span style="COLOR: #ff00ff">IPFW防火墙规则集样例在这两个文件中</span><br /><span style="COLOR: #ff00ff">/etc/rc.firewall</span><br /><span style="COLOR: #ff00ff">/etc/rc.firewall6</span><br /><span style="COLOR: #ff00ff">除此之外, 也可以将 firewall_script 变量设为包含 ipfw 命令的可执行脚本, 这样这个脚本会在启动时自动执行。</span><br /><span style="COLOR: #ff00ff">#####################################################</span></p>
頁: [1]
查看完整版本: FreeBSD配置防火墙开启SSH服务的方法