LInux原始的防火墙工具iptables由于过于繁琐,所以ubuntu系统默认提供了一个基于iptable之上的防火墙工具ufw。而UFW支持图形界面操作,只需在命令行运行ufw命令即能看到一系列的操作
UFW 全称为Uncomplicated Firewall,是Ubuntu 系统上默认的防火墙组件, 为了轻量化配置iptables 而开发的一款工具。 UFW 提供一个非常友好的界面用于创建基于IPV4,IPV6的防火墙规则。
Linux 2.4内核以后提供了一个非常优秀的防火墙工具:netfilter/iptables,他免费且功能强大,可以对流入、流出的信息进行细化控制,它可以 实现防火墙、NAT(网络地址翻译)和数据包的分割等功能。netfilter工作在内核内部,而iptables则是让用户定义规则集的表结构。
但是iptables的规则稍微有些“复杂”,因此ubuntu提供了ufw这个设定工具,以简化iptables的某些设定,其后台仍然是 iptables。ufw 即uncomplicated firewall的简称,一些复杂的设定还是要去iptables。(ufw还有图形化的Gufw)
apt install ufw #安装
apt install gufw #安装图形化ufw
ufw enable #启用ufw
ufw disable #禁用
ufw相关的文件和文件夹有:
/etc /ufw/:里面是一些ufw的环境设定文件,如 before.rules、after.rules、sysctl.conf、ufw.conf,及 for ip6 的 before6.rule 及 after6.rules。这些文件一般按照默认的设置进行就ok。
若开启ufw之 后,/etc/ufw/sysctl.conf会覆盖默认的/etc/sysctl.conf文件,若你原来的/etc/sysctl.conf做了修 改,启动ufw后,若/etc/ufw/sysctl.conf中有新赋值,则会覆盖/etc/sysctl.conf的,否则还以/etc /sysctl.conf为准。当然你可以通过修改/etc/default/ufw中的“IPT_SYSCTL=”条目来设置使用哪个 sysctrl.conf.
/var/lib/ufw/user.rules 这个文件中是我们设置的一些防火墙规则,打开大概就能看明白,有时我们可以直接修改这个文件,不用使用命令来设定。修改后记得ufw reload重启ufw使得新规则生效。
ls /etc /ufw/
vim /etc/ufw/sysctl.conf
安装后,ufw不启动,默认策略:进入数据拒绝,转发拒绝,发出数据允许。默认策略跟踪进入\转发的新连接。除此外还增加了下列默认规则集:
- DROP packets with RH0 headers
丢弃含RH0头的数据
- DROP INVALID packets
丢弃无效数据
- ACCEPT certain icmp packets (INPUT and FORWARD): destination-unreach‐
able, source-quench, time-exceeded, parameter-problem, and echo-request
for IPv4. destination-unreachable, packet-too-big, time-exceeded, pa‐ rameter-problem, and echo-request for IPv6.
进入数据拒绝
转发拒接
发出数据允许
默认策略跟踪进入,转发的新链接
除此之外还增加了以下默认规则集:
DROP packgets with RHO headers
丢弃RHO头的数据
DROP INVALID packgets
丢弃无效数据
ACCPEPT certain icmp packgets (INPUT and FORWARD)
允许icmp的输入和转发
允许和拒绝(特定规则)
(1)允许
# ufw allow <端口> / <可选:协议>
示例:允许在端口53上传入tcp和udp数据包
# ufw allow 53
示例:允许端口53上的传入tcp数据包
# ufw allow 53/tcp
示例:允许端口53上的传入udp数据包
# ufw allow 53/udp
(2)拒绝
# ufw deny <端口> / <可选:协议>
示例:拒绝端口53上的tcp和udp数据包
# ufw deny 53
示例:拒绝端口53上的传入tcp数据包
# ufw deny 53/tcp
示例:拒绝端口53上的传入udp数据包
# ufw deny 53/udp
删除现有规则
要删除规则,只需在原始规则前面加上delete。例如,如果原始规则是:
# ufw deny 80/tcp
使用它删除它:
# ufw delete deny 80/tcp
通过服务名,设置规则
您也可以按服务名称允许或拒绝,因为ufw从/ etc / services中读取 要查看获取服务表:
按服务名称允许
# ufw allow <服务名称>
示例:按名称允许ssh
# ufw allow ssh
按服务名称拒绝
# ufw deny <服务名称>
示例:按名称拒绝ssh
# ufw deny ssh
服务状态
检查ufw的状态将告诉您ufw是启用还是禁用,并且还列出了应用于iptables的当前ufw规则。
要检查ufw的状态:
# ufw status
Status: active
Logging: on (low) //有效正在登录:(低)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip //默认值:拒绝(传入),允许(传出)新的个人资料:跳过用户
To Action From
-- ------ ----
22 ALLOW IN Anywhere
53 DENY IN Anywhere
22 ALLOW IN 192.168.200.20
如果未启用ufw,则输出为:
# ufw status
Status: inactive
要启用日志记录,请使用:
# ufw logging on
要禁用日志记录,请使用:
# ufw logging off
还可以使用更完整的语法,指定源和目标地址,端口和协议。
语法格式:
例如:
ufw route allow in on eth0 out eth1 to 172.16.0.0/24 from 192.168.1.0/24
允许访问
(1)允许子网
(2)允许特定端口的ip地址访问
例如:
ufw allow from 192.168.1.1 to any port 22
root@fff-PC:~# ufw allow from 192.168.58.102 to any port 22 proto tcp
(4)允许ping或者禁止ping
如果要禁止ping则,编辑 vim /etc/ufw/before.rules 文件,删除一下几项
root@fff-PC:~# cat /etc/ufw/before.rules | grep icmp
# ok icmp codes for INPUT
-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT
-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT
-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT
root@fff-PC:~# ufw deny from 10.0.0.1
Rule added
root@fff-PC:~# ufw status
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
22/tcp ALLOW 192.168.58.102
Anywhere DENY 10.0.0.1
22 (v6) ALLOW Anywhere (v6)
root@fff-PC:~# ufw deny from 10.0.0.1 to any port 8888
Rule added
root@fff-PC:~# ufw status
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
22/tcp ALLOW 192.168.58.102
Anywhere DENY 10.0.0.1
Anywhere DENY 10.0.0.1 8888
8888 DENY 10.0.0.1
22 (v6) ALLOW Anywhere (v6)
root@fff-PC:~# ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN Anywhere
[ 2] 22/tcp ALLOW IN 192.168.58.102
[ 3] Anywhere DENY IN 10.0.0.1
[ 4] Anywhere DENY IN 10.0.0.1 8888
[ 5] 8888 DENY IN 10.0.0.1
[ 6] 22 (v6) ALLOW IN Anywhere (v6)
root@fff-PC:~# ufw delete 4
Deleting:
deny from 10.0.0.1 port 8888
Proceed with operation (y|n)? y
Rule deleted
root@fff-PC:~# ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN Anywhere
[ 2] 22/tcp ALLOW IN 192.168.58.102
[ 3] Anywhere DENY IN 10.0.0.1
[ 4] 8888 DENY IN 10.0.0.1
[ 5] 22 (v6) ALLOW IN Anywhere (v6)
root@fff-PC:~#
应用程序配置文件命令
防火墙规则优化
随着设置规则的增加,可能会产生许多相互矛盾的规则,应及时的调整和修改。
而且规则编号也会跟着变动。