Linux学习(五)
Linux学习(五)
使用iptables与firewalld防火墙
iptables
策略与规则链
防火墙会按照从上到下的顺序来读取配置的策略规则,在找到匹配项后就立即结束匹配工作区执行匹配项中定义的行为(即放行或阻止).如果在读完所有策略规则之后没有匹配项,就去执行默认的策略.当防火墙默认策略为拒绝时,就要设置允许规则,否则谁都进不来,如果防火墙默认策略为允许,就要设置拒绝规则,否则谁都能进来
iptables服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以组成一个队则链,而规则量则一句数据包处理位置的不同进行分类
- 在进行路由选择前处理数据包(PREROUTING)
- 处理流入的数据包(INPUT)
- 处理流出 的数据包(OUTPUT)
- 处理转发的数据包(FORWARD)
- 在进行路由选择后处理数据包(POSTROUTING)
一般来说从内网向外网发送的流量一般都是可控且良性的,因此使用INPUT规则量
iptables术语ACCEPT(允许流量通过) REJECT(拒绝流量通过) LOG(记录日志信息) DROP(拒绝流量通过) DROP直接将流量丢弃而且不响应,REJECT则会在拒绝流量后再回复一条”信息已经收到,但是被扔掉了”信息,从而让流量发送方清晰的看到数据被拒绝的响应信息
当把Linux系统中的防火墙策略设置为REJECT动作后,流量发送方会看到端口不可达的响应
而把Linux系统中的防火墙策略修改成DROP动作后,流量发送方会看到响应超时的提醒。但是流量发送方无法判断流量是被拒绝,还是接收方主机当前不在线```
基本命令参数
iptables中常用的参数以及作用
参数 | 作用 |
---|---|
-P | 设置默认策略 |
-F | 清空规则链 |
-L | 查看规则链 |
-A | 在规则链的末尾加入新规则 |
-I num | 在规则链的头部加入新规则 |
-D num | 删除某一条规则 |
-s | 匹配来源地址IP/MASK,加叹号“!”表示除这个IP外 |
-d | 匹配目标地址 |
-i 网卡名称 | 匹配从这块网卡流入的数据 |
-o 网卡名称 | 匹配从这块网卡流出的数据 |
-p | 匹配协议,如TCP、UDP、ICMP |
–dport num | 匹配目标端口号 |
–sport num | 匹配来源端口号 |
-L参数
查看已有的防火墙规则链
-F参数
清空已有的防火墙规则链
-P参数
把INPUT规则量的默认策略设置为拒绝
当把INPUT链设置为默认拒绝以后,就要往里面写入策略,否则所有流入的数据包都会被默认拒绝掉.规则量的默认策略拒绝动作只能是DROP,而不能是REJECT
-p
向INPUT链中添加允许ICMP流量进入的策略规则
通常会使用ping命令来检查对方主机是否在线,而向防火墙的INPUT规则链中添加一条允许ICMP流量进入的策略规则就默认允许了这种ping命令的检测行为
-D
使用-F参数会清空所有的防火墙策略;使用-D参数可以删除某一条指定的策略
-s
要对某台主机进行匹配,可直接写出它的ip地址,如需对网段进行匹配,则需要写为子网掩码的形式(比如192.168.5.0/24)
防火墙的策略规则是从上到下的顺序进行匹配的,因此一定要把允许动作放到拒绝动作之前,否则所有流量都会被拒绝
–dport
向INPUT规则链中添加拒绝所有人访问本机的12345端口的策略规则
向INPUT规则链中添加拒绝192.168.5.10主机访问本机80端口(web服务)的策略规则
-A
向INPUT规则链中添加拒接所有主机访问本机1000~1024端口的策略规则
在前面添加防火墙策略时,使用的是-I参数,它会默认把规则添加到最上面的位置,因此优先级是最高的,如果需要添加一条最后的”兜底”的规则,那就用-A参数
iptables-save
要注意,使用iptables命令配置的防火墙规则会默认在系统下一次重启时失效,如果想要让配置的防火墙策略永久生效
如果公司服务器是5/6/7版本的话,对应的保存命令应该是
Firewalld
firewalld它拥有基于CLI(命令行界面)和基于GUI(图形用户界面)的两种管理方式
firewalld支持动态更新技术并加入了区域(zone)的概念。简单来说,区域就是firewalld预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。
firewalld中常用的区域名称及策略规则
区域 | 默认规则策略 |
---|---|
trusted | 允许所有的数据包 |
home | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量 |
internal | 等同于home区域 |
work | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量 |
public | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量 |
external | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量 |
dmz | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量 |
block | 拒绝流入的流量,除非与流出的流量相关 |
drop | 拒绝流入的流量,除非与流出的流量相关 |
终端管理工具
firewall-cmd是firewalld防火墙配置管理工具的CLI(命令行界面)版本,他的参数都是以长格式来提供的,但是可以使用tab键进行补齐(我的没有)
firewall-cmd命令中使用的参数以及作用
参数 | 作用 |
---|---|
–get-default-zone | 查询默认的区域名称 |
–set-default-zone=<区域名称> | 设置默认的区域,使其永久生效 |
–get-zones | 显示可用的区域 |
–get-services | 显示预先定义的服务 |
–get-active-zones | 显示当前正在使用的区域与网卡名称 |
–add-source= | 将源自此IP或子网的流量导向指定的区域 |
–remove-source= | 不再将源自此IP或子网的流量导向某个指定区域 |
–add-interface=<网卡名称> | 将源自该网卡的所有流量都导向某个指定区域 |
–change-interface=<网卡名称> | 将某个网卡与区域进行关联 |
–list-all | 显示当前区域的网卡配置参数、资源、端口以及服务等信息 |
–list-all-zones | 显示所有区域的网卡配置参数、资源、端口以及服务等信息 |
–add-service=<服务名> | 设置默认区域允许该服务的流量 |
–add-port=<端口号/协议> | 设置默认区域允许该端口的流量 |
–remove-service=<服务名> | 设置默认区域不再允许该服务的流量 |
–remove-port=<端口号/协议> | 设置默认区域不再允许该端口的流量 |
–reload | 让“永久生效”的配置规则立即生效,并覆盖当前的配置规则 |
–panic-on | 开启应急状况模式 |
–panic-off | 关闭应急状况模式 |
使用firewalld配置的防火墙策略默认为运行时(RUNTIME)模式,有称为当前生效模式,而且会随着系统的重启而失效.如果想要配置策略一直存在,就需要使用永久(Permanent)模式了,方法就是在用firewall-cmd命令正常设置防火墙测量时添加–permanent参数,这样配置的防火墙策略就可以永久生效了.但是,永久上校模式有一个特点,就是他设置的策略只有在系统重启之后才会自动生效,如果想笑配置立即生效,就需要手动执行firewall-cmd –reload命令
–get-default-zone
在配置防火墙策略前,必须查看当前生效的是那个区域,否则配置的防火墙策略将不会立即生效
–get–zone-of-interface=ens33
查询指定网卡在firewalld服务中绑定的区域
一般来说,充当网管的服务器有两块玩咖,一块对公网,另一块对内网,那么这两块网卡在审查流量时所用的策略肯定也是不一致的.因此可以根据网卡针对的流量来源,为网卡绑定不同的区域,实现第防火墙策略的灵活管控
把网卡默认区域修改为external,并在系统重启后生效
–set-default-zone=public
把firewalld服务的默认区域设置为public
默认区域也叫全局配置,指的是对所有的网卡都生效的配置,优先级较低.
–panic-on
启动和关闭firewalld防火墙服务的应急状态模式
panic紧急模式,使用–panic-on参数会立即切断一切网络连接,而使用–panic-off则会恢复网络连接.紧急模式会切断一切网络连接,因此在远程管理服务器时,要注意.
–query-service=ssh
查看SSH和HTTPS协议的流量是否允许放行
可以不使用–zone参数指定区域名称,firewall-cmd命令会自动依据默认的区域进行查询,从而减少用户输入量,但是如果默认区域与网卡绑定不一致时,就会发生冲突,因此zone的参数还是加上为好.
–add-service=https
把HTTPS协议的流量设置为永久允许放行,并立即生效
默认情况下进行的修改都属于Runtime模式,即前生效而重启后失效.而在使用–permanent参数时,则是当前不会理解看到效果,而在重启或者重新加载之后方可生效.在添加了允许放行HTTPS流量的策略之后,查询当前模式策略,发现依然是不允许放行HTTPS协议的流量
–reload
如果不想重启服务器,就使用–reload参数
–remove-service=http
把HTTP协议的流量设置为永久拒绝,并立即生效
由于在默认情况下HTTP协议的流量就没有被允许,所以会有提示信息
–add-port=8080-8081/tcp
把访问8080和8081端口的流量策略设置为允许,仅当前生效
–list-ports
列出当前端口策略
把原本访问本机888端口的流量转发到22端口,并且要求当前和长期有效
SSH远程控制协议是基于TCP/22端口传输控制指令的,如果想让用户通过其他端口号也能访问ssh服务,也就可以试试端口转发技术了.新的端口号在收到用户请求后会自动转发到原本服务的端口上,使得用户能够通过新的端口访问到原本的服务
firewall-cmd --permanent --zone=[区域] --add-forward-port=port=[源端口号]:proto=[协议];toport=[目标端口号]:toaddr=[目标ip地址] |
富设置的规则
富规则也叫复规则,表示更加细致 更详细的防火墙策略配置,他可以针对系统服务 端口号 原地址和目标地址等诸多信息进行更有针对性的配置策略.他的优先级在所有的防火墙策略中也是最高的.比如,我们可以在firewalld服务中配置一条富规则,使其拒绝192.168.10.0/24网段的所有用户访问本机的ssh服务(22端口)