iptables 与 firewalld 防火墙

iptables

iptables 是一款基于命令行的防火墙策略管理工具

四种防火墙策略:

ACCEPT(允许流量通过)
流量发送方会看到响应超时的提醒,但是流量发送方无法判断流量是被拒绝,还是接收方主机当前不在线
REJECT(拒绝流量通过)
流量发送方会看到端口不可达的响应
LOG (记录日志信息)
DROP(拒绝流量通过)

|-------------|------------------------------------|
| -P | 设置默认策略 |
| -F | 清空规则链 |
| -L | 查看规则链 |
| -A | 在规则链的末尾加入新规则 |
| -I num | 在规则链的头部加入新规则 |
| -D num | 删除某一条规则 |
| -s | 匹配来源地址 IP/MASK ,加叹号" ! "表示除这个 IP 外 |
| -d | 匹配目标地址 |
| -i 网卡名称 | 匹配从这块网卡流入的数据 |
| -o 网卡名称 | 匹配从这块网卡流出的数据 |
| -p | 匹配协议,如 TCP 、 UDP 、 ICMP |
| --dport num | 匹配目标端口号 |
| --sport num | 匹配来源端口号 |
[### iptables 中常用的参数以及作用]

实验:

把INPUT规则链的默认策略设置为拒绝

复制代码
[root@linuxprobe~]# iptables -P INPUT DROP

向INPUT链中添加允许ICMP流量进入的策略

复制代码
[root@linuxprobe~]# iptables -I INPUT -p icmp -j ACCEPT

将INPUT链设置为只允许指定网段的主机访问本机的22端口

复制代码
[root@linuxprobe~]# iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT
[root@linuxprobe~]# iptables -A INPUT -p tcp --dport 22 -j REJECT

向INPUT规则链中添加拒绝所有人访问本机12345端口的策略规则

复制代码
[root@linuxprobe~]# iptables -I INPUT -p tcp --dport 12345 -j REJECT

想让配置的防火墙策略永久生效,还要执行保存命令

复制代码
[root@linuxprobe~]# iptables-save

firewalld

firewalld服务是默认的防火墙配置管理工具,它拥有 基于 CLI(命令行界面)和基于 GUI (图形用户界面)的两种管理方式。

|----------|-------------------------------------------------------------------------------------------|
| trusted | 允许所有的数据包 |
| home | 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh 、 mdns 、 ipp-client 、 smba-client、 dhcpv6-client 服务相关,则允许流量 |
| internal | 等同于 home 区域 |
| work | 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh 、 ipp-client 与 dhcpv6-client 服务相关,则允许流量 |
| public | 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh 、 dhcpv6-client 服务相关, 则允许流量 |
| external | 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh 服务相关,则允许流量 |
| dmz | 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh 服务相关,则允许流量 |
| block | 拒绝流入的流量,除非与流出的流量相关 |
| drop | 拒绝流入的流量,除非与流出的流量相关 |
[### firewalld 中常用的区域名称及策略规则]

基于CLI(命令行界面)

firewall-cmd 是 firewalld 防火墙配置管理工具的 CLI (命令行界面)版本,它的参数一般都是
以"长格式"来提供的。

|------------------------------|-----------------------------|
| --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 | 关闭应急状况模式 |
[#### firewall-cmd 命令中使用的参数以及作用]

使用 firewalld 配置的防火墙策略默认为 运行时(Runtime)模式 ,又称为当前生效模式,而且会随着系统的重启而失效。如果想让 配置策略一直存在,就需要使用 永久(Permanent)模式 了,方法就是在用 firewall-cmd 命令 正常设置防火墙策略时添加--permanent 参数
Runtime:当前立即生效,重启后失效。
Permanent:当前不生效,重启后生效。

实验

查看firewalld服务当前所使用的区域。

复制代码
[root@linuxprobe~]# firewall-cmd --get-default-zone
public

查询指定网卡在firewalld服务中绑定的区域。

复制代码
[root@linuxprobe~]# firewall-cmd --get-zone-of-interface=ens160
public

把网卡默认区域修改为external,并在系统重启后生效。

复制代码
[root@linuxprobe~]# firewall-cmd --permanent --zone=external --change-interface=ens160
The interface is under control of NetworkManager, setting zone to 'external'.
success
[root@linuxprobe~]# firewall-cmd --permanent --get-zone-of-interface=ens160
external

把firewalld服务的默认区域设置为public。

复制代码
[root@linuxprobe~]# firewall-cmd --set-default-zone=public
Warning: ZONE_ALREADY_SET: public
success
[root@linuxprobe~]# firewall-cmd --get-default-zone
public
[root@linuxprobe~]# firewall-cmd --get-zone-of-interface=ens160
externa

启动和关闭firewalld防火墙服务的应急状况模式。

复制代码
[root@linuxprobe~]# firewall-cmd --panic-on
success
[root@linuxprobe~]# firewall-cmd --panic-off
success

查询SSH和HTTPS协议的流量是否允许放行。

复制代码
[root@linuxprobe~]# firewall-cmd --zone=public --query-service=ssh
yes
[root@linuxprobe~]# firewall-cmd --zone=public --query-service=https
no

把HTTPS协议的流量设置为永久允许放行,并立即生效。

复制代码
[root@linuxprobe~]# firewall-cmd --permanent --zone=public --add-service=https
success
[root@linuxprobe~]# firewall-cmd --zone=public --query-service=https
no

把HTTP协议的流量设置为永久拒绝,并立即生效。

复制代码
[root@linuxprobe~]# firewall-cmd --permanent --zone=public --remove-service=http
Warning: NOT_ENABLED: http
success
[root@linuxprobe~]# firewall-cmd --reload
success

把访问8080和8081端口的流量策略设置为允许,但仅限当前生效。

复制代码
[root@linuxprobe~]# firewall-cmd --zone=public --add-port=8080-8081/tcp
success
[root@linuxprobe~]# firewall-cmd --zone=public --list-ports
8080-8081/tcp

把原本访问本机888端口的流量转发到22端口,要且求当前和长期均有效。

firewall-cmd --permanent =-zone=<区域>,--add-forward-port=port=<源端口号>:proto=
<协议>:toport=<目标端口号>:toaddr=<目标IP地址>

复制代码
[root@linuxprobe~]# firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.10.10
success
[root@linuxprobe~]# firewall-cmd --reload
success


富规则的设置
富规则也叫复规则,表示更细致、更详细的防火墙策略配置,它可以针对系统服务、端口号、源地址和目标地址等诸多信息进行更有针对性的策略配置。它的优先级在所有的防火墙策略中也是最高的。
拒绝
192.168.10.0/24 网段的所有用户访问本机的 ssh 服务( 22 端口):

复制代码
[root@linuxprobe~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject"
success
[root@linuxprobe~]# firewall-cmd --reload
success

在客户端使用 ssh 命令尝试访问 192.168.10.10 主机的 ssh 服务( 22 端口):

复制代码
[root@client A~]# ssh 192.168.10.10
Connecting to 192.168.10.10:22...
Could not connect to '192.168.10.10' (port 22): Connection failed.

基于 GUI(图形用户界面)

firewall-config是 firewalld 防火墙配置管理工具的 GUI(图形用户界面)版本,几 乎可以实现所有以命令行来执行的操作

复制代码
#yum install firewall-config   #下载工具
#firewall-config       #使用

linux系统中firewalld防火墙管理工具firewall-config:

http://t.csdnimg.cn/26a6yhttp://t.csdnimg.cn/26a6y

相关推荐
路溪非溪12 分钟前
关于Linux内核中头文件问题相关总结
linux
海绵不是宝宝8171 小时前
连接远程服务器上的 jupyter notebook,解放本地电脑
服务器·jupyter·github
三坛海会大神5552 小时前
计算机网络参考模型与子网划分
网络·计算机网络
云卓SKYDROID2 小时前
无人机激光测距技术应用与挑战
网络·无人机·吊舱·高科技·云卓科技
Lovyk3 小时前
Linux 正则表达式
linux·运维
Fireworkitte3 小时前
Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
linux·ubuntu·centos
sword devil9004 小时前
ubuntu常见问题汇总
linux·ubuntu
ac.char4 小时前
在CentOS系统中查询已删除但仍占用磁盘空间的文件
linux·运维·centos
繁星¹⁸⁹⁵5 小时前
通过update-alternatives可以实现cuda的多版本切换
服务器
淮北也生橘126 小时前
Linux的ALSA音频框架学习笔记
linux·笔记·学习