iptables和shorewall防火墙
操作系统
Ubuntu 16.04防火墙 【iptables和shorewall防火墙】iptables用于建立,维护和检查Linux内核中IP包过滤规则的表格。
为了说明iptables有防火墙的作用,以bridge的网络配置为例讲解。
准备 两点准备:
1.由于工控机是Ubuntu 16.04,Linux内核4.1.0,没有br_netfilter模块,所以需要手动加载该模块。每次开机都要手动加载,很自然的加到开机自启动就省事了。手动加载:Linux内核加载
2.允许IP转发,即Allow IP forwarding。
modprobe br_netfilter
开机自启动:Linux内核加载
vi /etc/rc.local // 这是开机自启动配置文件配置:Allow IP forwarding
modprobe br_netfilter // 把该命令加到该文件中的"exit 0"前面。
vi /etc/sysctl.confbridge配置 birdge配置在该文章《Networking网络配置和Bridge配置》有说明,请移步https://www.jianshu.com/p/339d1b6f1089
net.ipv4.ip_forward = 1 // 把改行设置成1
参考该文章的[配置4:手动配置:br0连接2个网口]
最后的网络配置如下:
enp3s0连着192.168.40.11的设备现在的效果是:
enp4s0连着192.168.40.10的设备
工控机有一个bridge为br0,包含enp3s0和enp4s0网口
192.168.40.10和192.168.40.11互相ping通。想要达到的效果是:
192.168.40.11可以ping通192.168.40.10iptables配置以达到以上效果:
192.168.40.10不可以ping通192.168.40.11
192.168.40.11可以上传文件到192.168.40.10
iptables -P FORWARD DROP // 最高安全原则,把默认的FORWARD policy设成DROP,测试结果:两个设备ping不通,scp无法上传文件
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT // 允许n个封包之后的连线
iptables -A FORWARD -d 192.168.40.10/32 -p icmp --icmp-type 8 -j ACCEPT // 设置允许ping通192.168.40.10,测试结果:192.168.40.11可以ping通192.168.40.10,192.168.40.10不可以ping通192.168.40.11
iptables -A FORWARD -s 192.168.40.0/24 -d 192.168.40.10/32 -p tcp --dport 22 -j ACCEPT // 设置40网段可以scp上传文件到192.168.40.10,测试结果:在192.168.40.11上输入命令scp /tmp/test11.odt suiqian@192.168.40.10:/tmp,发现可以把文件上传到192.168.40.10的tmp目录下。iptables常用命令:
ps:因为ssh传输文件默认端口是22,所以参数:--dport 22,可以依葫芦画瓢配置其他常用的端口有139,445等。
iptables -L -n --line-number // 查看已配置的iptables清空iptables:
iptables -D FORWARD number号 // 上面命令显示iptables的nubmer号,所以可以根据number号删除iptables chain
iptables /sbin/iptables -P INPUT ACCEPT // 先执行这条命令,开启和关闭防火墙:
iptables -F // 然后清空
ufw enableshorewall 以上防火墙内容是依据原生iptables命令配置的,现在介绍用文件方式配置防火墙,我们选择用shorewall。
ufw disable
http://shorewall.net/GettingStarted.html
不熟悉shorewall的可以根据官网学习配置。
安装
apt-get install shorewall配置例子 如果了解了iptables配置的相关规则,理解shorewall文件方式配置也很容易上手。我们从例子开始入手。
安装shorewall后,有目录专门放着3种类型的例子,分别是单网口、2个网口、3个网口,即one-interfaces、two-interfaces、three-interfaces。
cd /usr/share/doc/shorewall/examples/3个网口配置例子
因为我们用的工控机是3个网口的,所以参考three-interfaces。
cd /usr/share/doc/shorewall/examples/three-interfaces
会显示很多文件,重要文件有: zones,interfaces,rules,policy等。
zones:网口对应一个防火墙区域,防火墙fw也算一个区域。
cat zones // 显示如下内容
#ZONETYPEOPTIONSINOUT
fwfirewall
net ipv4
loc ipv4
dmz ipv4
interfaces:设置防火墙区域与网口名称的对应关系。
cat interfaces // 显示如下内容
#ZONEINTERFACEOPTIONS
netenp2s0tcpflags,dhcp,nosmurfs,routefilter,logmartians,sourceroute=0,physical=eth0
locenp3s0tcpflags,nosmurfs,routefilter,logmartians,physical=eth1
dmzenp4s0tcpflags,nosmurfs,routefilter,logmartians,physical=eth2
policy:配置防火墙策略,防火墙区域之间是拒绝接受还是丢弃的策略,执行策略是由最后一条到第一条这样的顺序执行。
cat policy // 显示如下内容
#SOURCE DESTPOLICYLOGLEVELRATECONNLIMIT
locnetACCEPT
netallDROPinfo
# THE FOLLOWING POLICY MUST BE LAST
allallREJECTinfo
rules:可以设置转发规则和icmp、tcp协议等。
cat rules // 显示如下内容
#ACTIONSOURCEDESTPROTODESTSOURCEORIGINALRATEUSER/ MARKCONNLIMITTIMEHEADERSSWITCHHELPER #PORTPORT(S)DESTLIMITGROUP
?SECTION ALL
?SECTION ESTABLISHED
?SECTION RELATED
?SECTION INVALID
?SECTION UNTRACKED
?SECTION NEW
#Don't allow connection pickup from the net
#
Invalid(DROP)netalltcp
#
#Accept DNS connections from the firewall to the Internet
#
DNS(ACCEPT)$FWnet
#
#
#Accept SSH connections from the local network to the firewall and DMZ
#
SSH(ACCEPT)loc$FW
SSH(ACCEPT)locdmz
#
#DMZ DNS access to the Internet
#
DNS(ACCEPT)dmznet
# Drop Ping from the "bad" net zone.
Ping(DROP)net$FW
#
#Make ping work bi-directionally between the dmz, net, Firewall and local zone
#(assumes that the loc-> net policy is ACCEPT).
#
Ping(ACCEPT)loc$FW
Ping(ACCEPT)dmz$FW
Ping(ACCEPT)locdmz
Ping(ACCEPT)dmzloc
Ping(ACCEPT)dmznet
ACCEPT$FWneticmp
ACCEPT$FWlocicmp
ACCEPT$FWdmzicmp
# Uncomment this if using Proxy ARP and static NAT and you want to allow ping from
# the net zone to the dmz and loc
#Ping(ACCEPT)netdmz
#Ping(ACCEPT)netloc
shorewall如何配置bridge zones
该文件配置防火墙区域,如下:
#ZONETYPEOPTIONS
bridgeip
lan:bridgebport
priv:bridgebport
interfaces
该文件配置防火墙区域对应的接口,如下:
#ZONEINTERFACEOPTIONS
bridgebr0bridge
lanbr0:enp3s0
privbr0:enp4s0
推荐阅读
- 急于表达——往往欲速则不达
- 第三节|第三节 快乐和幸福(12)
- 20170612时间和注意力开销记录
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 对称加密和非对称加密的区别
- 眼光要放高远
- 樱花雨
- 前任
- 2020-04-07vue中Axios的封装和API接口的管理
- 烦恼和幸福