防火墙
防火墙简介
防火墙在计算机科学领域中是一个架设在互联网与内网之间的信息安全系统,根据持有者预定的策略来监控往来的传输。该技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。
防火墙功能
它的功能主要在于即使发现并处理计算机网络运行时可能存在的安全风险、数据传输等问题。一个防火墙可以极大地提高一个内部网络的安全性,并通过过滤不安全的服务而降低风险。通过以防火墙为中心的安全方案配置,将所有安全软件配置在防火墙上。如果所有的访问都经过防火墙,那么防火墙就能记录下这些访问并作出日志记录,同时也能提供网络使用情况的统计数据。通过利用防火墙对内部网络的划分,可实现内部网重点网段的隔离,从而限制了局部重点或敏感网络安全问题对全局网络造成的影响。进出网络的数据都必须经过防火墙,防火墙通过日志对其进行记录,能提供网络使用的详细统计信息。
防火墙类型
防火墙可以分为网络层(封包过滤型)防火墙、应用层防火墙和代理服务。
网络层(数据包过滤型)防火墙运作于TCP/IP协议堆栈上。管理者会先根据企业/组织的策略预先设置好数据包通过的规则或采用内置规则,只允许符合规则的数据包通过。
应用层防火墙是在TCP/IP堆栈的“应用层”上运作,其可以拦截进出某应用程序的所有数据包,并且屏蔽其他的数据包(通常是直接将数据包丢弃)。理论上,这一类的防火墙可以完全阻绝外部的资料流进受保护的机器里。防火墙借由监测所有的数据包并找出不符规则的内容,可以防范电脑蠕虫或是木马程序的快速蔓延。实际上,这个方法繁复(因软件种类极多),所以大部分防火墙都不会考虑以这种方法设计。
代理(Proxy)服务器(可以是一台专属的网络设备,或是在一般电脑上的一套软件)采用应用程序的运作方式,回应其所收到的数据包(例:连线要求)来实现防火墙的功能,而屏蔽/抛弃其他数据包。
网络地址转换技术
网络地址转换技术(NAT)由防火墙对内部网络的IP地址进行翻译,使用防火墙的IP地址替换内部网络的源地址向外部网络发送数据,当外部网络的响应数据流量返回到防火墙后,防火墙再将目的地址替换为内部网络的源地址。NAT模式能够实现外部网络不能直接看到内部网络的IP地址,进一步增强了对内部网络的安全防护。同时,在NAT模式的网络中,内部网络可以使用私网地址,可以解决IP地址数量受限的问题。
iptables防火墙
防火墙应用最早是ipfwadm和ipchains,其次是iptables,CentOS7开始后firewalld迅速发展,对iptables进行了改良。
iptabels由ipchains和ipfwadm软件演变而来,只是一个管理内核包过滤的工具,用来添加、删除和修改包过滤规则,而真正用来执行过滤规则的是netfilter及其相关模块。数据包处理规则是由iptables命令所创建的。多数iptables命令的格式为:ipatbles [-t <表名>] <命令> <链名>\<参数1><选项1>\<参数n><选项n>
或许这里的命令有些令人费解,其实这里就是配置四表五链的命令。用户访问使用iptables机器时,需要经历各种模块的处理,而这些模块都可以视为一个链,之所以称为链,是因为每个链里面都要依照里面的表依次执行相应的操作,而每个表中还可能又多个规则。iptables中有四个表:filter表
,nat表
,mangle表
,raw表
。五链指的是:input链
, output链
, forward链
, prerouting
, postrouting链
。表的处理优先级:raw > mangle > nat > filter。
命令
- 查看防火墙:
service iptables status
- 停止防火墙:
service iptables stop
- 启动防火墙:
service iptables start
- 重启防火墙:
service iptables restart
- 永久关闭防火墙:
chkconfig iptables off
- 永久关闭后重启:
chkconfig iptables on
- 开放指定端口:先执行
iptables -I INPUT -p tcp --dport 8000 -j ACCEPT
,然后执行iptables save
,再重新启动服务。或者直接更改etc/sysconfig/iptables
中的文件。
firewalld防火墙
firewalld是一种比iptables更高级的与netfilter交互的工具。它可以视为一个可以配置和监控系统防火墙规则的系统守护进程。其支持网络区域定义网络连接以及接口安全等级,使防火墙配置更为灵活。
为了便于管理,将所有网络流量分为多个区域(zone),然后根据数据包的源IP地址或传入网络接口等条件将流量传入相应区域。firewall防火墙分为九个区域:trusted
信任区域,public
公共区域,external
外部区域,home
家庭区域,internal
内部区域,work
工作区域,dmz
隔离区域也称为非军事区域,block
限制区域,drop
丢弃区域。每个区域定义着不同的过滤规则和安全措施。
firewalld的管理方法可以使用firewalld-cmd命令行工具或者是firewalld-config图形界面工具,还可以直接编辑xml格式的配置文件。firewalld 存放配置文件有两个目录,/usr/lib/firewalld
和/etc/firewalld
,前者存放了一些默认的文件,后者主要是存放用户自定义的数据,所以我们添加的service或者rule都在后者下面进行。
firewall-cmd命令的语法为firewall-cmd [选项]
,使用选项–permanent实现永久性配置,设置不会立即生效,仅在重新加载或者重启firewalld,或者重启系统后生效。不带选项–permanent则为运行时配置,设置会立即生效,直接影响运行时的状态,重新加载或者重启后相应的配置会失效。选项–timeout用于设置超时时间限制,表示相应的规则只在指定的时限内生效,一旦到期自动失效。–timeout不能与–permanent同时使用。选项–zone指定命令作用的区域,表示操作仅能影响这个特定的区域,如果不使用选项–zone明确指定区域,则将作用于默认区域。
命令
- 启动服务:
systemctl start firewalld
- 停止服务:
systemctl stop firewalld
- 重启服务:
systemctl restart firewalld
- 查看服务状态:
systemctl status firewalld
- 在开机时启用一个服务:
systemctl enable firewalld
- 在开机时禁用一个服务:
systemctl disable firewalld
- 查看服务是否开机启动:
systemctl is-enable firewalld
- 重载防火墙配置:
firewall-cmd --reload
- 查看防火墙运行状态:
firewall-cmd --state
- 查看默认区域的设置:
firewall-cmd --list-all
- 拒绝所有流量,远程连接会立即断开,只有本地能登录:
firewall-cmd --panic-on
- 取消应急模式,但需要重启firewalld后才可以远程ssh:
firewall-cmd --query-off
- 查看是否为应急模式:
firewall-cmd --query-panic
- 查看当前默认区域:
firewall-cmd --get-default-zone
- 更改默认区域:
fireall-cmd --set-default-zone=区域
- 添加一个新的永久性区域:
firewall-cmd --permanent --new-zone=区域
- 删除一个已有的永久性区域:
firewall-cmd --permanent --delete-zone=区域
- 开放端口示例:
firewall-cmd --zone=public --add-port=8083/tcp --permanent
UFW防火墙
Ubuntu的默认防火墙配置工具时UFW,其下层也是iptables。ufw用于简化iptables防火墙配置,其提供了添加或删除简单规则的简便方法,但没有提供完整的防火墙功能。ufw默认是禁用的。[--dry-run]
选项仅显示运行结果而不实际运行。
命令
- 启动UFW:
sudo ufw enable
- 启动\关闭\重启:
ufw [--dry-run] enable|disable|reload
- 日志 启动\关闭\级别。
ufw [--dry-run] logging on|off|LEVEL
系统日志保存于/var/log/ufw.log。LEVEL指定不同的级别,默认级别是‘低’。 - 显示防火墙状态及规则:
ufw [--dry-run] status [verbose|numbered]
- 允许使用通过tcp协议使用25端口:
ufw allow 25/tcp