UFW的使用

UFW全称为Uncomplicated Firewall,是Ubuntu系统上配置iptables防火墙的工具。UFW提供一个非常友好的命令用于创建基于IPV4,IPV6的防火墙规则。

由于Ubuntu下的iptables操作起来比较复杂,依赖关系比较多,所以使用UFW时可以简化很多操作。当然Debian同样适用。无论是桌面版还是服务器版, UFW的命令行用法是一样的。

1.安装方法

sudo apt-get install ufw

2.使用方法

2.1 启动防火墙并设置开机启动

sudo ufw enable
sudo ufw default deny

注:开启防火墙并关闭外部主机对本机的访问(不影响本机对外部主机访问)

2.2 关闭

sudo ufw disable

2.3 查看防火墙状态

 开启了为 active, 没开启为 inactive

sudo ufw status

2.4 开启、禁用端口及其他服务命令

sudo ufw allow port_number // 开放 port_number 端口
 
sudo ufw delete allow port_number // 删除 port_number 端口
 
sudo ufw allow from 192.168.1.1 // 允许来自 192.168.1.1 的主机的访问
 
sudo ufw deny smtp // 禁止外部访问smtp服务
 
sudo ufw delete allow smtp // 删除上面建立的某条规则

2.5 重置所有的规则

sudo ufw reset

3 查看防火墙状态

sudo ufw status

4 转换日志状态

sudo ufw logging on|off

5 使用案例

 对于大部分防火墙操作来说, 其实无非就是的打开关闭端口。如果要打开SSH服务器的22端口, 我们可以这样:

sudo ufw allow 22

由于在/etc/services中, 22端口对应的服务名是ssh。所以下面的命令是一样的:

sudo ufw allow ssh

删除已经添加过的规则:

sudo ufw delete allow 22

只打开使用tcp/ip协议的22端口:

sudo ufw allow 22/tcp

 

iptables的使用

1 启动iptables

modprobe ip_tables

2 关闭iptables(关闭命令要比启动复杂)

iptables -F

iptables -X

iptables -Z

iptables -P INPUT ACCEPT

iptables -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT

modprobe -r ip_tables

依次执行以上命令即可关闭iptables,否则在执行modproble -r ip_tables时将会提示FATAL: Module ip_tables is in use.

3 常用命令介绍

清除预设表filter中的所有规则链的规则

iptables -F

清除预设表filter中使用者自定链中的规则

iptables -X

以数字形式查看iptables规则

iptables -L -n

抛弃所有不符合三种链规则的数据包

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

允许IP访问

命令语法:iptables -t 表名 -I 链名 匹配条件 -j 动作(DROP、REJECT、ACCEPT)
示例:

iptables -t filter -I INPUT -s 192.168.1.146 -j ACCEPT

开放SSH端口22

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --sport 22 -j ACCEPT

删除SSH端口22

iptables -D INPUT -p tcp --dport 22 -j ACCEPT

iptables -D INPUT -p tcp --sport 22 -j ACCEPT

 

保存iptables规则 文件不存在则新建

iptables-save > /etc/sysconfig/iptables

 设置开机启动
  ubuntu18 /etc/networkd-dispatcher/routable.d/50-ifup-hooks文件添加 iptables-restore < /etc/sysconfig/iptables

 

  ubuntu16 修改 /etc/network/interfaces ,添加下面末尾2行脚本

auto eth0

iface eth0 inet dhcp

pre-up iptables-restore < /etc/sysconfig/iptables

post-down iptables-save > /etc/sysconfig/iptables

 

 

防火墙对比

SELinux、Netfilter、iptables、firewall和UFW五者关系

1 五者是什么?

1、SELinux是美国国家安全局发布的一个强制访问控制系统
2、Netfilter是Linux 2.4.x引入的一个子系统,作为一个通用的、抽象的框架,提供一整套的hook函数的管理机制
3、iptables是Linux下功能强大的应用层防火墙工具。

4、firewall是centos7里面新的防火墙管理命令
5、ufw是Ubuntu下的一个简易的防火墙配置工具。

2 五者关系?

1、Netfilter管网络,selinux管本地。
2、iptables是用于设置防火墙,防范来自网络的入侵和实现网络地址转发、QoS等功能,而SELinux则可以理解为是作为Linux文件权限控制(即我们知道的rwx)的补充存在的
3、ufw是自2.4版本以后的Linux内核中一个简易的防火墙配置工具,底层还是调用iptables来处理的,iptables可以灵活的定义防火墙规则, 功能非常强大。但是产生的副作用便是配置过于复杂。因此产生一个相对iptables简单很多的防火墙配置工具:ufw

4、firewall是centos7里面新的防火墙管理命令,底层还是调用iptables来处理的,主要区别是iptables服务,每次更改都意味着刷新所有旧规则并从/etc/sysconfig/iptables读取所有新规则,firewall可以在运行时更改设置,而不丢失现有连接。
5、iptables是Linux下功能强大的应用层防火墙工具, 说到iptables必然提到Netfilter,iptables是应用层的,其实质是一个定义规则的配置工具,而核心的数据包拦截和转发是Netfiler。Netfilter是Linux操作系统核心层内部的一个数据包处理模块

iptables和Netfilter关系图:

ubuntu防火墙添加mysql端口 ubuntu防火墙规则_防火墙对比

iptables和fillwall关系图:

ubuntu防火墙添加mysql端口 ubuntu防火墙规则_iptables_02