查看ubuntu版本
cat /etc/issue
或者
lsb_release -a
防火墙
由于Linux原始的防火墙工具iptables过于繁琐,所以ubuntu默认提供了一个基于iptable之上的防火墙工具ufw。
ubuntu 系统默认已安装ufw。ubuntu 9.10默认的便是UFW防火墙,它已经支持界面操作了。在命令行运行ufw命令就可以看到提示的一系列可进行的操作。
可检查防火墙的状态:
ufw status
防火墙版本:
ufw version
开启/关闭防火墙:
ufw enable|disable
1.安装
sudo apt-get install ufw
2.启用
sudo ufw enable
sudo ufw default deny
运行以上两条命令后,开启了防火墙,并在系统启动时自动开启。关闭所有外部对本机的访问,但本机访问外部正常。
3.开启/禁用
sudo ufw allow|deny [service]
打开或关闭某个端口,例如:
sudo ufw allow smtp 允许所有的外部IP访问本机的25/tcp (smtp)端口
sudo ufw allow 22/tcp 允许所有的外部IP访问本机的22/tcp (ssh)端口
sudo ufw allow 53 允许外部访问53端口(tcp/udp)
sudo ufw allow from 192.168.1.100 允许此IP访问所有的本机端口
sudo ufw allow proto udp 192.168.0.1 port 53 to 192.168.0.2 port 53
sudo ufw deny smtp 禁止外部访问smtp服务
sudo ufw delete allow smtp 删除上面建立的某条规则
4.查看防火墙状态
ufw status
一般用户,只需如下设置:
apt-get install ufw
ufw enable
ufw default deny
以上三条命令已经足够安全了,如果你需要开放某些服务,再使用sudo ufw allow开启。
开启/关闭防火墙 (默认设置是’disable’)
ufw enable|disable
转换日志状态
ufw logging on|off
设置默认策略 (比如 “mostly open” vs “mostly closed”)
ufw default allow|deny
许 可或者屏蔽端口 (可以在“status” 中查看到服务列表)。可以用“协议:端口”的方式指定一个存在于/etc/services中的服务名称,也可以通过包的meta-data。 ‘allow’ 参数将把条目加入 /etc/ufw/maps ,而 ‘deny’ 则相反。基本语法如下:
ufw allow|deny [service]
显示防火墙和端口的侦听状态,参见 /var/lib/ufw/maps。括号中的数字将不会被显示出来。
ufw status
UFW 使用范例:
允许 53 端口
ufw allow 53
禁用 53 端口
ufw delete allow 53
允许 80 端口
ufw allow 80/tcp
禁用 80 端口
ufw delete allow 80/tcp
允许 smtp 端口
ufw allow smtp
删除 smtp 端口的许可
ufw delete allow smtp
允许某特定 IP
ufw allow from 192.168.254.254
删除上面的规则
ufw delete allow from 192.168.254.254
linux 2.4内核以后提供了一个非常优秀的防火墙工具:netfilter/iptables,他免费且功能强大,可以对流入、流出的信息进行细化控制,它可以实现防火墙、NAT(网络地址翻译)和数据包的分割等功能。netfilter工作在内核内部,而iptables则是让用户定义规则集的表结构。
但是iptables的规则稍微有些“复杂”,因此ubuntu提供了ufw这个设定工具,以简化iptables的某些设定,其后台仍然是 iptables。ufw 即uncomplicated firewall的简称,一些复杂的设定还是要去iptables。
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使得新规则生效。
下面是ufw命令行的一些示例:
ufw enable/disable:打开/关闭ufw
ufw status:查看已经定义的ufw规则
ufw default allow/deny:外来访问默认允许/拒绝
ufw allow/deny 20:允许/拒绝 访问20端口,20后可跟/tcp或/udp,表示tcp或udp封包。
ufw allow/deny servicename:ufw从/etc/services中找到对应service的端口,进行过滤。
ufw allow proto tcp from 10.0.1.0/10 to 本机ip port 25:允许自10.0.1.0/10的tcp封包访问本机的25端口。
ufw delete allow/deny 20:删除以前定义的"允许/拒绝访问20端口"的规则
UFW默认策略
默认情况下,UFW将阻止所有传入连接并允许所有出站连接。 这意味着任何试图访问您的服务器的用户都将无法连接,除非您专门打开该端口,而服务器上运行的所有应用程序和服务都将能够访问外部世界。
默认策略在/etc/default/ufw文件中定义,可以使用sudo ufw default
防火墙策略是构建更详细和用户定义规则的基础。 在大多数情况下,最初的UFW默认政策是一个很好的起点。
应用程序配置
使用apt安装软件包时,它将向/etc/ufw/applications.d目录中添加应用程序配置文件,该目录描述该服务并包含UFW设置。
您可以键入以下内容列出服务器上可用的所有应用程序配置文件
ufw app list
根据系统上安装的软件包,输出将如下所示:
可用应用程序:
OpenSSH
如果您想要查找有关配置文件和包含规则的更多信息,可以使用以下命令:
ufw app info 'OpenSSH'
结果:
Profile: OpenSSH
Title: Secure shell server, an rshd replacement
Description: OpenSSH is a free implementation of the Secure Shell protocol.
Port:
22/tcp
允许SSH连接
在启用UFW防火墙之前,我们需要添加一个允许传入SSH连接的规则。 如果您从远程位置连接到服务器(几乎总是如此),并且在明确允许传入SSH连接之前启用UFW防火墙,则您将不再能够连接到您的Ubuntu服务器。
要配置您的UFW防火墙以允许传入SSH连接,请键入以下命令:
ufw allow ssh
规则已添加
规则已添加 (v6)
如果您将SSH端口更改为自定义端口而不是端口22,则需要打开该端口。
例如,如果您的ssh守护进程在端口5522上侦听,那么您可以使用以下命令来允许该端口上的连接:
ufw allow 5522/tcp
启用UFW
现在您的UFW防火墙已配置为允许传入SSH连接,我们可以通过键入以下命令启用它:
ufw enable
允许其他端口上的连接
根据您的服务器上运行的应用程序和您的特定需求,您需要允许对其他端口的传入访问。
下面我们将向您展示一些如何允许传入连接到一些最常见服务的例子:
打开端口80 - HTTP
使用以下命令可以允许HTTP连接:
ufw allow http
你可以使用端口号80而不是http:
ufw allow 80/tcp
或者您可以使用应用程序配置文件,在本例中是'Nginx HTTPS':
sudo ufw allow 'Nginx HTTP'
打开端口443 - HTTPS
使用以下命令可以允许HTTP连接:
ufw allow https
要实现相同而不是https,您可以使用端口号443:
ufw allow 443/tcp
或者您可以使用应用程序配置文件,在本例中是'Nginx HTTPS':
ufw allow 'Nginx HTTP'
打开端口8080
如果运行Tomcat或在端口8080上侦听的任何其他应用程序以允许传入连接,请输入:
ufw allow 8080/tcp
允许端口范围
UFW允许我们允许访问端口范围,而不是允许访问单个端口。 使用UFW允许端口范围时,您必须指定协议,即tcp或udp。 例如,如果要允许tcp和udp上的端口从8000到8100,则运行以下命令:
ufw allow 8000:8100/tcp
ufw allow 8000:8100/udp
允许特定的IP地址
如果您希望允许您的家庭计算机上的所有端口使用IP地址55.56.57.58访问,则需要在IP地址之前指定:
ufw allow from 55.56.57.58允许特定端口上的特定IP地址
要允许在特定端口上访问,可以使用IP地址为55.56.57.58的工作机器上的端口22,然后您需要指定IP地址后面的任何端口和端口号:
ufw allow from 55.56.57.58 to any port 22
允许子网
允许连接到IP地址的子网的命令与使用单个IP地址时相同,唯一的区别是您需要指定网络掩码。 例如,如果你想允许访问从192.168.1.1到192.168.1.254到3306(MySQL)的IP地址,你可以使用这个命令:
ufw allow from 192.168.1.0/24 to any port 3306
允许连接到特定的网络接口
为了允许在特定端口上访问,我们假设端口3306仅适用于特定的网络接口eth2,那么您需要指定允许输入以及网络接口的名称:
ufw allow in on eth2 to any port 3306
拒绝连接
所有传入连接的默认策略设置为拒绝,如果您没有更改它,UFW将阻止所有传入连接,除非您专门打开连接。
假设您打开端口80和443,并且您的服务器受到33.34.35.0/34网络的攻击。 要拒绝来自33.34.35.0/34的所有连接,可以使用以下命令:
ufw deny from 33.34.35.0/34
如果您只想拒绝对端口80和443的访问,则可以使用以下命令:
ufw deny from 23.24.25.0/24 to any port 80
ufw deny from 23.24.25.0/24 to any port 443
写入拒绝规则与编写允许规则相同,您只需将允许替换为拒绝。
删除UFW规则
有两种不同的方法可以通过规则编号和指定实际规则来删除UFW规则。
通过规则编号删除UFW规则更容易,尤其是如果您是UFW的新手。 要首先通过规则编号删除规则,您需要按数字列出规则,您可以使用以下命令执行此操作:
ufw status numbered
状态: 激活
至 动作 来自
- -- --
[ 1] Nginx Full ALLOW IN Anywhere
[ 2] 22/tcp ALLOW IN Anywhere
[ 3] 5522/tcp ALLOW IN Anywhere
[ 4] 80/tcp ALLOW IN Anywhere
[ 5] Nginx HTTP ALLOW IN Anywhere
[ 6] 443/tcp ALLOW IN Anywhere
[ 7] Nginx HTTPS ALLOW IN Anywhere
[ 8] 8080/tcp ALLOW IN Anywhere
[ 9] Nginx Full (v6) ALLOW IN Anywhere (v6)
[10] 22/tcp (v6) ALLOW IN Anywhere (v6)
[11] 5522/tcp (v6) ALLOW IN Anywhere (v6)
[12] 80/tcp (v6) ALLOW IN Anywhere (v6)
[13] Nginx HTTP (v6) ALLOW IN Anywhere (v6)
[14] 443/tcp (v6) ALLOW IN Anywhere (v6)
[15] Nginx HTTPS (v6) ALLOW IN Anywhere (v6)
[16] 8080/tcp (v6) ALLOW IN Anywhere (v6)
要删除规则编号3,允许连接到端口8080的规则,可以使用以下命令:
ufw delete 2
第二种方法是通过指定实际规则来删除规则,例如,如果您添加了一条规则以打开端口8168,则可以使用以下规则将其删除:
ufw delete allow 8168
禁用UFW
如果因任何原因想停止UFW并停用您可以使用的所有规则:
ufw disable
稍后如果您想要重新启用UTF并激活所有规则,请输入:
ufw enable
重置UFW
重置UFW将禁用UFW,并删除所有活动规则。 如果您想恢复所有更改并重新开始,这很有帮助。
要重置UFW,只需输入以下命令:
ufw reset
输出:
所有规则将被重设为安装时的默认值。要继续吗 (y|n)?
总结
您已经学会了如何在Ubuntu服务器上安装和配置UFW防火墙。
确保允许系统正常运行所需的所有传入连接,同时限制所有不必要的连接。
done!