FreeBSD使用手册
https://www.freebsd.org/doc/zh_CN/books/handbook/index.html https://www.freebsd.org/doc/zh_CN/books/handbook/firewalls-ipf.html #Freebsd_IPF防火墙
root@BSD:~ # bsdconfig
root@BSD:~ # bsdinstall
root@BSD:~ # ee /etc/ssh/sshd_config #开启root用户密码登陆
PermitRootLogin yes
PasswordAuthentication yes
root@BSD:~ # service sshd restart
root@BSD:~ # pkg install vim-lite #安装vim也可使用默认的ee编辑器
安装完vim-lite后配置下,输入下面的命令,让其有语法检查及颜色显示等功能
echo “syntax on”>>/root/.vimrc
echo “alias vi vim” >>/root/.cshrc
root@BSD:/etc # pkg install lrzsz #安装完后上传命令变为lrz,下载命令变为lsz

FreeBSD上配置路由协议(支持RIP,OSPF,BGP配置方法同思科路由器的配置方法)
root@BSD:~ # pkg install quagga
root@BSD:/usr/local/share/examples/quagga # ls #要启动路由协议需要把以下相对应的路由协议配置文件放到配置文件目录,否则无法启动路由协议
bgpd.conf.sample ospfd.conf.sample vtysh.conf.sample
bgpd.conf.sample2 pimd.conf.sample zebra.conf.sample
isisd.conf.sample ripd.conf.sample
ospf6d.conf.sample ripngd.conf.sample

root@BSD:/usr/local/etc/quagga # ls #配置文件路径
ospfd.conf vtysh.conf zebra.conf

root@BSD:/usr/local/sbin # ls #启动命令路径
bgpd ospfclient pkg ripd zebra
isisd ospfd pkg-static ripngd
ospf6d pimd pkg2ng watchquagga

root@BSD:~ # cat /etc/services #服务对应的端口号(在本机telnet 127.0.0.1 2604进入OSPF)
zebrasrv 2600/tcp #zebra service
zebra 2601/tcp #zebra vty
ripd 2602/tcp #RIPd vty
ripngd 2603/tcp #RIPngd vty
ospfd 2604/tcp #OSPFd vty
bgpd 2605/tcp #BGPd vty
ospf6d 2606/tcp #OSPF6d vty

root@BSD:~ # zebra & #(后台运行)先启动,再启动其它路由进程
root@BSD:~ # netstat -an #查看启动的端口号
root@BSD:~ # netstat -nr #查看路由表
路由的属性标志和它们的含义简表:
U Up: 路由处于活动状态
H Host: 路由目标是单个主机
G Gateway: 所有发到目的地的网络传到这一远程系统上, 并由它决定最后发到哪里
S Static: 这个路由是手工配置的,不是由系统自动生成的
C Clone: 生成一个新的路由, 通过这个路由我们可以连接上这些机子。 这种类型的路由通常用于本地网络
W WasCloned: 指明一个路由——它是基于本地区域网络 (克隆) 路由自动配置的
L Link: 路由涉及到了以太网硬件

IPF防火墙配置
root@BSD:~ # vim /etc/sysctl.conf #开启IP转发
# $FreeBSD: releng/11.0/etc/sysctl.conf 112200 2003-03-13 18:43:50Z mux $
# This file is read when going to multi-user and its contents piped thru
# ``sysctl'' to adjust kernel values. ``man 5 sysctl.conf'' for details.
net.inet.ip.forwarding=1
net.inet.tcp.strict_rfc1948=1
net.inet.ip.check_interface=1
net.inet.tcp.recvspace=65535
net.inet.tcp.sendspace=65535
# Uncomment this to prevent users from seeing information about processes that
# are being run under another UID.
#security.bsd.see_other_uids=0
root@FreeBSD:/usr/src/sys/amd64/conf # vi GENERIC #内核中开启ipfilter(一般不需要)
options IPFILTER
options IPFILTER_LOG

编辑rc.conf文件
root@BSD:~ # ee /etc/rc.conf
hostname="FreeBSD"
zabbix_agentd_enable="YES"
ipfilter_enable="YES" #打开ipfilter
ipfilter_rules="/etc/ipf.rules" #ipfilter规则文件绝对路径
gateway_enable="YES" #作为网关使用,并开启路由功能
ipnat_enable="YES" #打开nat转发
ipnat_rules="/etc/ipnat.rules" #nat规则文件绝对路径
defaultrouter="192.168.224.254" #配置默认路由
static_routes="net1 net2" #配置静态路由重启不丢失
route_net1="-net 172.10.0.0/22 10.10.100.201"
route_net2="-net 172.11.0.0/22 10.10.100.202"
inetd_enable=yes
inetd_flags=-wW
ipmon_enable="YES" #记录防火墙的信息
ipmon_flags="-Dsn /var/log/ipf.log" #需要手动创建ipf.log文件
-D: ipmon作为守护者程序(daemon)加载;
-s: 将包的信息送到syslogd而不是保存成文件;
-n: 可能的情况下将IP地址和端口号映射成主机名和服务名
root@BSD:~ # sh /etc/rc #更改rc.conf文件时不重启系统立即生效的方法
root@BSD:~ # tail -3 /etc/syslog.conf #开启防火墙策略日志记录需要在这个文件下创建以下记录
*.* /var/log/ppp.log
!*
local0.* /var/log/ipf.log #策略中需加log参数

ipf策略配置示例
root@BSD:~ # cat /etc/ipf.rules 
###No restrictions on Loopback Interface(用于BSD内部通信,默认为允许访问)
pass in quick on lo0 all
pass out quick on lo0 all
###pass IPF ping,block ping IPF (当em0 out方向有block策略时使用)
pass out quick on em0 proto icmp from 10.10.10.1/32 to any icmp-type 8 keep state
###pass access ipf
pass in quick on em0 proto tcp from 192.168.106.0/24 to 10.10.10.1 port = 22 flags S/SA keep state
###pass icmp through traffic on em0
pass in quick on em0 proto icmp from 10.10.10.0/24 to 10.10.20.0/24 keep state
###em0
pass in quick on em0 proto tcp from 10.10.10.2 to 10.10.20.2 port = 23 flags S/SA keep state
pass in quick on em0 proto tcp from 10.10.10.0/24 to 10.10.20.2 port = 443 flags S/SA keep state
pass in quick on em1 proto tcp from 10.10.20.2 port = 443 to 10.10.10.0/24 flags S/SA keep state
pass in quick on em0 proto udp from 10.10.10.2 to 10.10.20.2 port = 8000 keep state
###block all in and out traffic on em0
block in quick on em0 from any to any
block out quick on em0 from any to any #可不写
block in quick all #block forward流量
###Block a bunch of different nasty things
#That I do not want to see in the log
block in log quick all with short # Block short tcp packets
block in log quick all with ipopts # Block anything with special options
block in log quick all with frags # Block frags
block in log quick all with opt lsrr # block source routed packets
block in log quick all with opt ssrr # block source routed packets
root@BSD:~ # ipf -Fa -f /etc/ipf.rules #应用策略
root@BSD:~ # ipfstat -t #实时查看通过IPF的访问
root@BSD:~ # ipfstat -ih/oh #查看入向匹配(ih)或出向匹配(oh)
注:IPF防火墙不写block规则时默认为允许访问,ipf为状态化防火墙,去方向允许后回方向不需要再允许

root@BSD:~ # ifconfig em0 10.10.20.3 netmask 255.255.255.255 alias #添加同一子网IP时掩码必需为/32
root@BSD:~ # ifconfig em0 10.10.20.3 netmask 255.255.255.255 -alias #删除添加的IP地址
root@BSD:~ # ifconfig em0 10.10.30.3 netmask 255.255.255.0 alias #添加不同子网地址
root@BSD:~ # cat /etc/rc.conf
ifconfig_em0_alias0="inet 10.10.20.3 netmask 255.255.255.255"
root@BSD:~ # cat /etc/ipnat.rules
###snat(em0为对外接口)
map em0 from 10.10.10.2 to 10.10.20.2 -> 10.10.20.3
###dnat(端口映射,应用在接口的in方向)
root@BSD:/etc # ifconfig em2
inet 10.10.20.3 netmask 0xffffffff broadcast 10.10.20.3
inet 10.10.30.3 netmask 0xffffffff broadcast 10.10.30.255
rdr em0 10.10.20.3 port 23 -> 10.10.10.2 port 23 tcp
rdr em0 10.10.30.3 port 23 -> 10.10.10.2 port 23 tcp
root@BSD:~ # ipnat -CF -f /etc/ipnat.rules #应用NAT规则
注:当转换后的IP地址和接口IP不在同一段时对端需要增加相应网段的路由(如转换后无法访问请检查路由)入向转目的,出向转源
root@BSD:/etc # ifconfig em2
inet 10.10.20.1 netmask 0xffffff00 broadcast 10.10.20.255
inet 10.10.20.3 netmask 0xffffffff broadcast 10.10.20.3
inet 10.10.30.3 netmask 0xffffffff broadcast 10.10.30.255
root@BSD:/etc # vim ipnat.rules 目的和源同时转换(流量从em2到em1)
rdr em2 10.10.20.3 port 23 -> 10.10.10.2 port 23 tcp #只转换23端口的访问
rdr em2 10.10.20.3 -> 10.10.10.2 #所有的IP包都做转换

配置同时转换源和目的
map em1 from 10.10.20.2 to 10.10.10.2 -> 10.10.10.1
rdr em2 10.10.30.3 -> 10.10.10.2 #只有这条时表示只做目的转换
rdr做端口映射时,ipf策略开映射后的地址

解决rc.conf文件出错导致无法启动
1. # mount -a #将所有系统挂在档案上,只有这样你才能进行下一步,此时文件允许 write
2. #cd /etc #访问etc目录
3. # vi rc.conf #用VI修改出错的语句
4. # reboot #重新启动系统

 

FreeBDS之ipf防火墙的更多相关文章

  1. Freebsd 编译内核

    # cd /usr/src/sys/i386/conf # cp GENERIC GENERIC.20060812# ee GENERIC 如果要加入ipf防火墙的话则加入options        ...

  2. FreeBSD之基本配置

    1. 设置IP地址.网关ee /etc/rc.conf ifconfig_em0="inet 192.168.21.173 netmask 255.255.255.0"   #设置 ...

  3. /etc/sysctl.conf 调优 & 优化Linux内核参数

    from: http://apps.hi.baidu.com/share/detail/15652067 http://keyknight.blog.163.com/blog/static/36637 ...

  4. (转)/etc/sysctl.conf 调优 & 优化Linux内核参数

    /etc/sysctl.conf 调优 & 优化Linux内核参数 from: http://apps.hi.baidu.com/share/detail/15652067 http://ke ...

  5. sysctl.conf文件配置详解

    ############################# net.inet.ip.sourceroute=0 net.inet.ip.accept_sourceroute=0 ########### ...

  6. CentOS7使用firewalld打开关闭防火墙与端口(转载)

    1.firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld 停止: systemctl disabl ...

  7. 解决开启服务器防火墙导致ftp不能连接的问题

    在防火墙设置的"高级"选项卡中的"网络连接设置"--"本地连接"--"设置"中添加了"FTP服务器" ...

  8. Linux网卡驱动安装、防火墙原理

    安装网卡驱动程序: 需要检查是否安装kernel依赖包: rpm –q kernel-devel #检查kernel依赖包是否安装 yum –y install kernel-devel 检查gcc和 ...

  9. centos6和centos7防火墙的关闭

    CentOS6.5查看防火墙的状态: [zh@localhost ~]$service iptable status 显示结果: [zh@localhost ~]$service iptable st ...

随机推荐

  1. 原生js封装的获取某一天是当年的第几周方法

    function getWeek(str){ //str格式为yyy-mm-dd //周日归到了本周 var d=new Date(str); var day=d.getDay(); var orig ...

  2. JS实现页面字体繁简转换

    封装的JS代码 // 网页简繁体转换 // 本js用于客户在网站页面选择繁体中文或简体中文显示,默认是正常显示,即简繁体同时显示 // 在用户第一次访问网页时,会自动检测客户端语言进行操作并提示.此功 ...

  3. 【python041--构造方法:构造和析造】

    一.魔法方法 1.魔法方法总是被双下划线包围,例如:__init__ 2.为什么在类实例化的时候,有时候需要构造__init__,有时候不需要呢 举例说明: #定义一个矩形的类,需要长和宽两个参数,计 ...

  4. Objective-C 【init/initWithFrame调用机制】

    这是一个自定义view: @implementation MyView - (instancetype)init { if (self = [super init]) { NSLog(@"调 ...

  5. django基础 -- 6. 多表操作

    一.多表的创建 from django.db import models # Create your models here. class Author(models.Model): id = mod ...

  6. Flutter第1天--初始分析+Dart方言+Canvas简绘 - 云+社区

    Flutter第1天--初始分析+Dart方言+Canvas简绘 - 云+社区 - 腾讯云 https://cloud.tencent.com/developer/article/1378974

  7. 41. 包含min函数的栈

    包含min函数的栈 描述 设计一个支持push,pop,top等操作并且可以在O(1)时间内检索出最小元素的堆栈. push(x)–将元素x插入栈中 pop()–移除栈顶元素 top()–得到栈顶元素 ...

  8. [Sdoi2017]序列计数 矩阵优化dp

    题目 https://www.lydsy.com/JudgeOnline/problem.php?id=4818 思路 先考虑没有质数限制 dp是在同余系下的,所以\(f[i][j]\)表示前i个点, ...

  9. 论文笔记:ReNet: A Recurrent Neural Network Based Alternative to Convolutional Networks

    ReNet: A Recurrent Neural Network Based Alternative to Convolutional Networks2018-03-05  11:13:05   ...

  10. 【论文笔记】Learning Convolutional Neural Networks for Graphs

    Learning Convolutional Neural Networks for Graphs 2018-01-17  21:41:57 [Introduction] 这篇 paper 是发表在 ...