UFW Essentials: Common Firewall Rules and Commands
Introduction
UFW is a firewall configuration tool for iptables that is included with Ubuntu by default. This cheat sheet-style guide provides a quick reference to UFW commands that will create iptables firewall rules are useful in common, everyday scenarios. This includes UFW examples of allowing and blocking various services by port, network interface, and source IP address.
How To Use This Guide
- If you are just getting started with using UFW to configure your firewall, check out our introduction to UFW
- Most of the rules that are described here assume that you are using the default UFW ruleset. That is, it is set to allow outgoing and deny incoming traffic, through the default policies, so you have to selectively allow traffic in
- Use whichever subsequent sections are applicable to what you are trying to achieve. Most sections are not predicated on any other, so you can use the examples below independently
- Use the Contents menu on the right side of this page (at wide page widths) or your browser's find function to locate the sections you need
- Copy and paste the command-line examples given, substituting the values in red with your own values
Remember that you can check your current UFW ruleset with sudo ufw status
or sudo ufw status verbose
.
Block an IP Address
To block all network connections that originate from a specific IP address, 15.15.15.51
for example, run this command:
- sudo ufw deny from 15.15.15.51
In this example, from 15.15.15.51
specifies a source IP address of "15.15.15.51". If you wish, a subnet, such as 15.15.15.0/24
, may be specified here instead. The source IP address can be specified in any firewall rule, including an allow rule.
Block Connections to a Network Interface
To block connections from a specific IP address, e.g. 15.15.15.51
, to a specific network interface, e.g.eth0
, use this command:
- sudo ufw deny in on eth0 from 15.15.15.51
This is the same as the previous example, with the addition of in on eth0
. The network interface can be specified in any firewall rule, and is a great way to limit the rule to a particular network.
Service: SSH
If you're using a cloud server, you will probably want to allow incoming SSH connections (port 22) so you can connect to and manage your server. This section covers how to configure your firewall with various SSH-related rules.
Allow SSH
To allow all incoming SSH connections run this command:
- sudo ufw allow ssh
An alternative syntax is to specify the port number of the SSH service:
- sudo ufw allow 22
Allow Incoming SSH from Specific IP Address or Subnet
To allow incoming SSH connections from a specific IP address or subnet, specify the source. For example, if you want to allow the entire 15.15.15.0/24
subnet, run this command:
- sudo ufw allow from 15.15.15.0/24 to any port 22
Allow Incoming Rsync from Specific IP Address or Subnet
Rsync, which runs on port 873, can be used to transfer files from one computer to another.
To allow incoming rsync connections from a specific IP address or subnet, specify the source IP address and the destination port. For example, if you want to allow the entire 15.15.15.0/24
subnet to be able to rsync to your server, run this command:
- sudo ufw allow from 15.15.15.0/24 to any port 873
Service: Web Server
Web servers, such as Apache and Nginx, typically listen for requests on port 80 and 443 for HTTP and HTTPS connections, respectively. If your default policy for incoming traffic is set to drop or deny, you will want to create rules that will allow your server to respond to those requests.
Allow All Incoming HTTP
To allow all incoming HTTP (port 80) connections run this command:
- sudo ufw allow http
An alternative syntax is to specify the port number of the HTTP service:
- sudo ufw allow 80
Allow All Incoming HTTPS
To allow all incoming HTTPS (port 443) connections run this command:
- sudo ufw allow https
An alternative syntax is to specify the port number of the HTTPS service:
- sudo ufw allow 443
Allow All Incoming HTTP and HTTPS
If you want to allow both HTTP and HTTPS traffic, you can create a single rule that allows both ports. To allow all incoming HTTP and HTTPS (port 443) connections run this command:
- sudo ufw allow proto tcp from any to any port 80,443
Note that you need to specify the protocol, with proto tcp
, when specifying multiple ports.
Service: MySQL
MySQL listens for client connections on port 3306. If your MySQL database server is being used by a client on a remote server, you need to be sure to allow that traffic.
Allow MySQL from Specific IP Address or Subnet
To allow incoming MySQL connections from a specific IP address or subnet, specify the source. For example, if you want to allow the entire 15.15.15.0/24
subnet, run this command:
- sudo ufw allow from 15.15.15.0/24 to any port 3306
Allow MySQL to Specific Network Interface
To allow MySQL connections to a specific network interface—say you have a private network interfaceeth1
, for example—use this command:
- sudo ufw allow in on eth1 to any port 3306
Service: PostgreSQL
PostgreSQL listens for client connections on port 5432. If your PostgreSQL database server is being used by a client on a remote server, you need to be sure to allow that traffic.
PostgreSQL from Specific IP Address or Subnet
To allow incoming PostgreSQL connections from a specific IP address or subnet, specify the source. For example, if you want to allow the entire 15.15.15.0/24
subnet, run this command:
- sudo ufw allow from 15.15.15.0/24 to any port 5432
The second command, which allows the outgoing traffic of established PostgreSQL connections, is only necessary if the OUTPUT
policy is not set to ACCEPT
.
Allow PostgreSQL to Specific Network Interface
To allow PostgreSQL connections to a specific network interface—say you have a private network interfaceeth1
, for example—use this command:
- sudo ufw allow in on eth1 to any port 5432
The second command, which allows the outgoing traffic of established PostgreSQL connections, is only necessary if the OUTPUT
policy is not set to ACCEPT
.
Service: Mail
Mail servers, such as Sendmail and Postfix, listen on a variety of ports depending on the protocols being used for mail delivery. If you are running a mail server, determine which protocols you are using and allow the appropriate types of traffic. We will also show you how to create a rule to block outgoing SMTP mail.
Block Outgoing SMTP Mail
If your server shouldn't be sending outgoing mail, you may want to block that kind of traffic. To block outgoing SMTP mail, which uses port 25, run this command:
- sudo ufw deny out 25
This configures your firewall to drop all outgoing traffic on port 25. If you need to reject a different service by its port number, instead of port 25, simply replace it.
Allow All Incoming SMTP
To allow your server to respond to SMTP connections, port 25, run this command:
- sudo ufw allow 25
Note: It is common for SMTP servers to use port 587 for outbound mail.
Allow All Incoming IMAP
To allow your server to respond to IMAP connections, port 143, run this command:
- sudo ufw allow 143
Allow All Incoming IMAPS
To allow your server to respond to IMAPS connections, port 993, run this command:
- sudo ufw allow 993
Allow All Incoming POP3
To allow your server to respond to POP3 connections, port 110, run this command:
- sudo ufw allow 110
Allow All Incoming POP3S
To allow your server to respond to POP3S connections, port 995, run this command:
- sudo ufw allow 995
Conclusion
That should cover many of the commands that are commonly used when using UFW to configure a firewall. Of course, UFW is a very flexible tool so feel free to mix and match the commands with different options to match your specific needs if they aren't covered here.
Good luck!
Configure Ubuntu Firewall (UFW) on Ubuntu 14.04
Modified on: Wed, Jun 24, 2015 at 6:27 pm EST
Security is crucial when you run your own server. You want to make sure that only authorized users can access your server, configuration, and services.
In Ubuntu, there is a firewall that comes preloaded. It's called UFW (Ubuntu-Firewall). Although UFW is a pretty basic firewall, it is user friendly, excels at filtering traffic, and has good documentation. Some basic Linux knowledge should be enough to configure this firewall on your own.
Install UFW
Notice that UFW is typically installed by default in Ubuntu. But if anything, you can install it yourself. To install UFW, run the following command.
sudo apt-get install ufw
Allow connections
If you are running a web server, you obviously want the world to be able to access your website(s). Therefore, you need to make sure that the default TCP port for web is open.
sudo ufw allow 80/tcp
In general, you can allow any port you need by using the following format:
sudo ufw allow <port>/<optional: protocol>
Deny connections
If you need to deny access to a certain port, use this:
sudo ufw deny <port>/<optional: protocol>
For example, let's deny access to our default MySQL port.
sudo ufw deny 3306
UFW also supports a simplified syntax for the most common service ports.
root@127:~$ sudo ufw deny mysql
Rule updated
Rule updated (v6)
It is highly recommended to restrict access to your SSH port (by default it's port 22) from anywhere except your trusted IP addresses (example: office or home).
Allow access from a trusted IP address
Typically, you would need to allow access only to publicly open ports such as port 80. Access to all other ports need to be restricted or limited. You can whitelist your home/office IP address (preferably, it is supposed to be a static IP) to be able to access your server through SSH or FTP.
sudo ufw allow from 192.168.0.1 to any port 22
Let's also allow access to the MySQL port.
sudo ufw allow from 192.168.0.1 to any port 3306
Looks better now. Let's move on.
Enable UFW
Before enabling (or restating) UFW, you need to make sure that the SSH port is allowed to receive connections from your IP address. To start/enable your UFW firewall, use the following command:
sudo ufw enable
You will see this:
root@127:~$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)?
Type Y, then press Enter to enable the firewall.
Firewall is active and enabled on system startup
Check UFW status
Take a look at all of your rules.
sudo ufw status
You will see output similar to the following.
sudo ufw status
Firewall loaded
To Action From
-- ------ ----
22:tcp ALLOW 192.168.0.1
22:tcp DENY ANYWHERE
Use the "verbose" parameter to see a more detailed status report.
sudo ufw status verbose
Disable/reload/restart UFW
To disable (stop) UFW, run this command.
sudo ufw disable
If you need to reload UFW (reload rules), run the following.
sudo ufw reload
In order to restart UFW, you will need to disable it first, and then enable it again.
sudo ufw disable
sudo ufw enable
Again, before enabling UFW, make sure that the SSH port is allowed for your IP address.
Removing rules
To manage your UFW rules, you need to list them. You can do that by checking UFW status with the parameter "numbered". You will see output similar to the following.
root@127:~$ sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN 192.168.0.1
[ 2] 80 ALLOW IN Anywhere
[ 3] 3306 ALLOW IN 192.168.0.1
[ 4] 22 DENY IN Anywhere
Noticed the numbers in square brackets? Now, to remove any of these rules, you will need to use these numbers.
sudo ufw delete [number]
Enabling IPv6 support
If you use IPv6 on your VPS, you need to ensure that IPv6 support is enabled in UFW. To do so, open the config file in a text editor.
sudo nano /etc/default/ufw
Once opened, make sure that IPV6
is set to "yes":
IPV6=yes
After making this change, save the file. Then, restart UFW by disabling and re-enabling it.
sudo ufw disable
sudo ufw enable
Back to default settings
If you need to go back to default settings, simply type in the following command. This will revert any of your changes.
sudo ufw reset
Conclusion
Overall, UFW is able to protect your VPS against the most common hacking attempts. Of course, your security measures should be more detailed than just using UFW. However, it is a good (and necessary) start.
If you need more examples of using UFW, you can refer to UFW - Community Help Wiki.
UFW Essentials: Common Firewall Rules and Commands的更多相关文章
- CentOS 7 下 安装Webmin 启动防火墙失败----Applying firewall rules:iptables-restore:line 2 failed
最近学习CentOS 7 系统管理,使用的是<CentOS 6.X系统管理实战宝典>一书------因为网购的CentOS 7 的书还没有送到 O(‘ ’!!)O~ (1)先使用yum方 ...
- [Windows Hyper-V-Server]Enable or disable firewall rules under powershell / powershell下启用禁用防火墙规则
http://www.cryer.co.uk/brian/windows/hyper-v-server/help_computer_cannot_be_managed.htm Enable COM+ ...
- Common Macros for Build Commands and Properties
https://msdn.microsoft.com/en-us/library/c02as0cs.aspx $(ProjectDir) The directory of the proje ...
- How To Set Up an OpenVPN Server on Ubuntu 14.04
Prerequisites The only prerequisite is having a Ubuntu 14.04 Droplet established and running. You wi ...
- ubuntu防火墙ufw使用教程
查看ubuntu版本cat /etc/issue或者lsb_release -a 防火墙 由于Linux原始的防火墙工具iptables过于繁琐,所以ubuntu默认提供了一个基于iptable之上的 ...
- ubuntu ufw防火墙
由于LInux原始的防火墙工具iptables过于繁琐,所以ubuntu默认提供了一个基于iptable之上的防火墙工具ufw. ubuntu 9.10默认的便是UFW防火墙,它已经支持界面操作了.在 ...
- ubuntu 中 iptables 和 ufw 的关系
我突然发现,自己平常使用的 iptables 和 ufw 到底是啥关系?平常其实iptables和ufw在配置防火墙,开启端口是,还是偶尔会使用到的. 没去思考过这两者是啥关系,哎...,这就不够好了 ...
- ubuntu ufw相关命令
引自:http://www.cnblogs.com/jiangyao/archive/2010/05/19/1738909.html 就这句话就够了,下面的可以不看 sudo ufw enable| ...
- NX 8.5 License Server Firewall Setting
Reference: http://eng-tips.com/viewthread.cfm?qid=284511 The FLEXNet Server(lmgrd) listens to 28000 ...
随机推荐
- 移动端尺寸新写法-rem
rem这是个低调的css单位,近一两年开始崭露头角,有许多同学对rem的评价不一,有的在尝试使用,有的在使用过程中遇到坑就弃用了.但是我对rem综合评价是用来做web app它绝对是最合适的人选之一. ...
- DP 免费馅饼 HDU1176
DP 免费馅饼 HDU1176 vjudge题面 一道基本的DP题,状态转移很好想,每一个状态的位置\(pos\)都只能由上一秒的\(pos-1, pos, pos+1\)三个位置转移而来(当然要判断 ...
- python爬虫之urllib库(二)
python爬虫之urllib库(二) urllib库 超时设置 网页长时间无法响应的,系统会判断网页超时,无法打开网页.对于爬虫而言,我们作为网页的访问者,不能一直等着服务器给我们返回错误信息,耗费 ...
- odoo 的一些orm 操作
1.基础文件及目录结构 在认识odoo ORM框架前,先介绍一下odoo中模块目录结构. data:存放模块预制数据 i18n:存放国际化文件 models:存放模型等py代码 securit ...
- 《WCF全面解析》-上册 1-3章 读书笔记
第一章.WCF简介 ESB全称为Enterprise Service Bus,即企业服务总线.把所有的服务统筹到一个总线里面请求和分发,方便管理. WCF(Windows Communication ...
- google +ubuntu16.04
1.在终端中输入以下命令 sudo wget https://repo.fdzh.org/chrome/google-chrome.list -P /etc/apt/sources.list.d/ 2 ...
- MySQL表级约束和列级约束
对一个数据列建立的约束,称为列级约束 对多个数据列建立的约束,称为表级约束 列级约束即可以在列定义时生命,也可以在列定义后声明. 表级约束只能在列定义后声明. NOT NULL和DEFAULT只存在列 ...
- VS2013诡异问题,虚方法、泛型,通通躺枪
最近在调代码,发现一个很诡异的问题,简单复原一下 创建4.0控制台项目 以下代码 class Program { static void Main(string[] args) { var item ...
- WPF的窗体设置WindowStyle=none时,如何移动窗体
1. 在WPF中当将主窗体的WindowStyle设置为none时,使用鼠标移动不了窗体 2. 解决方法: 2.1. 在Windows的Load方法中增加一下代码: private void Wind ...
- PHP自然排序,非自然排序(未完成)
还要研究一下,暂时先添加个链接 参考:PHP数组的“自然”排序