#ufw是针对Ubuntu系统发行的,是一种管理netfilter规则的简单方法,针对Centos可以关闭防火墙
# 扩展命令
# 查看防火墙状态:sudo systemctl status firewalld
# 关闭防火墙: systemctl stop firewalld.service
# 开启防火墙: systemctl start firewalld.service
# 关闭开机启动: systemctl disable firewalld.service
# 打开防火墙开机启动: systemctl enable firewalld.service
[root@k8s-master01 ~]# sudo yum install iptables-services
CentOS Linux 8 - AppStream 13 kB/s | 4.3 kB 00:00
CentOS Linux 8 - AppStream 4.1 MB/s | 8.4 MB 00:02
CentOS Linux 8 - BaseOS 14 kB/s | 3.9 kB 00:00
CentOS Linux 8 - BaseOS 4.3 MB/s | 4.6 MB 00:01
CentOS Linux 8 - Extras 5.1 kB/s | 1.5 kB 00:00
Docker CE Stable - x86_64 14 kB/s | 3.5 kB 00:00
Extra Packages for Enterprise Linux 8 - x86_64 24 kB/s | 4.7 kB 00:00
Extra Packages for Enterprise Linux 8 - x86_64 6.3 MB/s | 11 MB 00:01
Extra Packages for Enterprise Linux Modular 8 - x86_64 15 kB/s | 3.0 kB 00:00
Extra Packages for Enterprise Linux Modular 8 - x86_64 1.3 MB/s | 980 kB 00:00
Kubernetes 1.6 kB/s | 844 B 00:00
依赖关系解决。
====================================================================================================================================================================================
软件包 架构 版本 仓库 大小
====================================================================================================================================================================================
安装:
iptables-services x86_64 1.8.4-20.el8 baseos 63 k
事务概要
====================================================================================================================================================================================
安装 1 软件包
总下载:63 k
安装大小:20 k
确定吗?[y/N]: y
下载软件包:
iptables-services-1.8.4-20.el8.x86_64.rpm 73 kB/s | 63 kB 00:00
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总计 72 kB/s | 63 kB 00:00
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
准备中 : 1/1
安装 : iptables-services-1.8.4-20.el8.x86_64 1/1
运行脚本: iptables-services-1.8.4-20.el8.x86_64 1/1
验证 : iptables-services-1.8.4-20.el8.x86_64 1/1
已安装:
iptables-services-1.8.4-20.el8.x86_64
完毕!
[root@k8s-master01 ~]#
CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙。
1. 关闭防火墙:sudo systemctl stop firewalld.service
2. 关闭开机启动:sudo systemctl disable firewalld.service
3. 设置iptables防火墙开机启动:sudo systemctl enable iptables
3. 设置iptables防火墙关闭开机启动:sudo systemctl disable iptables
[root@k8s-master01 ~]# sudo systemctl enable iptables
Created symlink /etc/systemd/system/multi-user.target.wants/iptables.service → /usr/lib/systemd/system/iptables.service.
[root@k8s-master01 ~]#
[root@k8s-master01 ~]# service iptables status
Redirecting to /bin/systemctl status iptables.service
● iptables.service - IPv4 firewall with iptables
Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled)
Active: inactive (dead)
[root@k8s-master01 ~]#
#最后重启防火墙使配置生效
[root@k8s-master01 ~]# systemctl restart iptables.service
[root@k8s-master01 ~]#
[root@k8s-master01 ~]# service iptables status
Redirecting to /bin/systemctl status iptables.service
● iptables.service - IPv4 firewall with iptables
Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled)
Active: active (exited) since Mon 2022-01-03 11:44:05 CST; 34s ago
Process: 22096 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS)
Main PID: 22096 (code=exited, status=0/SUCCESS)
1月 03 11:44:05 k8s-master01.io systemd[1]: Starting IPv4 firewall with iptables...
1月 03 11:44:05 k8s-master01.io iptables.init[22096]: iptables: Applying firewall rules: [ 确定 ]
1月 03 11:44:05 k8s-master01.io systemd[1]: Started IPv4 firewall with iptables.
[root@k8s-master01 ~]#
[root@k8s-master01 ~]# service iptables stop
Redirecting to /bin/systemctl stop iptables.service
[root@k8s-master01 ~]#
[root@k8s-master01 ~]# sudo systemctl disable iptables
Removed /etc/systemd/system/multi-user.target.wants/iptables.service.
[root@k8s-master01 ~]#
4. 配置iptables防火墙,打开指定端口
以打开redis的端口为例:
# //开放6379到7000之间的端口
[root@k8s-master01 ~]# vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379:7000 -j ACCEPT
[root@k8s-master01 ~]# service iptables save
[root@k8s-master01 ~]# service iptables restart
netfilter 防火墙总是容易受到规则顺序的影响,因为一条规则在链中没有固定的位置。在一条规则之前添加或者删除规则都会改变此规则的位置。 在静态防火墙模型中,改变防火墙就是重建一个干净和完善的防火墙设置,且受限于 system-config-firewall / lokkit 直接支持的功能。也没有整合其他应用程序创建防火墙规则,且如果自定义规则文件功能没在使用 s-c-fw / lokkit 就不知道它们。默认链通常也没有安全的方式添加或删除规则而不影响其他规则。
动态防火墙有附加的防火墙功能链。这些特殊的链按照已定义的顺序进行调用,因而向链中添加规则将不会干扰先前调用的拒绝和丢弃规则。从而利于创建更为合理完善的防火墙配置。
下面是一些由守护进程创建的规则,过滤列表中启用了在公共区域对 ssh , mdns 和 ipp-client 的支持:
*filter
:INPUT ACCEPT [0:0]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [0:0]:FORWARD_ZONES - [0:0]:FORWARD_direct - [0:0]:INPUT_ZONES - [0:0]:INPUT_direct - [0:0]:IN_ZONE_public - [0:0]:IN_ZONE_public_allow - [0:0]:IN_ZONE_public_deny - [0:0]:OUTPUT_direct - [0:0]-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j INPUT_direct
-A INPUT -j INPUT_ZONES
-A INPUT -p icmp -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i lo -j ACCEPT
-A FORWARD -j FORWARD_direct
-A FORWARD -j FORWARD_ZONES
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -j OUTPUT_direct
-A IN_ZONE_public -j IN_ZONE_public_deny
-A IN_ZONE_public -j IN_ZONE_public_allow
-A IN_ZONE_public_allow -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
-A IN_ZONE_public_allow -d 224.0.0.251/32 -p udp -m udp --dport 5353 -m conntrack --ctstate NEW -j ACCEPT
-A IN_ZONE_public_allow -p udp -m udp --dport 631 -m conntrack --ctstate NEW -j ACCEPT
使用 deny/allow 模型来构建一个清晰行为(最好没有冲突规则)。例如: ICMP块将进入 IN_ZONE_public_deny 链(如果为公共区域设置了的话),并将在 IN_ZONE_public_allow 链之前处理。
该模型使得在不干扰其他块的情况下向一个具体块添加或删除规则而变得更加容易。