CentOS firewall简单总结
简介
防火墙是安全的重要道防线.
硬件防火墙一般部署再内网的边界区域.作为最外层的防护.
但是一般硬件的防火墙会比较宽松. 不然会导致很多业务不可用
软件防火墙可以部署到每一个虚拟机内部
可以实现资源划分.安全防护.访问限制等重要作用.
最近用到了比较多, 也从同事那里学到很多, 所以最近想总结一下
所以水这一篇文章.
防火墙的简单说明
iptables 是2001年kernel 2.4.0 时代引入的.
在很长的一段时间内可以理解为内核层 netfilter的前端实现.
不仅可以实现防火墙的功能, 包过滤,还可以实现端口转发等内容
核心知识点是四表五链.
随着伯克利包过滤器的越来越强大.新版本的内核可能直接采用
bpfilter代替服役20年的netfilter 实现iptables的功能
firewall
firewalld是centos7的一大特性,
最大的好处有两个:
1. 支持动态更新,不用重启服务;
2. 加入了防火墙的“zone”概念
可惜的是CentOS7 马上要在2024年6月份停服了.
不过大部分国产linux都有这个命令集.
区别与联系
firewalld iptables
配置文件 /usr/lib/ firewalld/&/etc/firewalld /etc/sysconfig/iptables
对规则的修改 不需要全部刷新策略,不丢失现行连接 需要全部刷新策略,丢失连接
防火墙类型 动态防火墙 静态防火墙
firewall 划分的zone
firewalld防火墙预定义了9个区域:
①trusted (信任区域) :允许所有的传入流量。
②public(公共区域):允许与ssh或dhcpv6-client预定义服务匹配的传入流量,其余均拒绝。是新添加网络接口的默认区域。
③external (外部区域) :允许与ssh预定义服务匹配的传入流量,其余均拒绝。
默认将通过此区域转发的IPv4传出流量将进行地址伪装,可用于为路由器启用了伪装功能的外部网络。
④home (家庭区域) :允许与ssh、ipp-client、 mdns、 samba-client或dhcpv6-client预定义服务匹配的传入流量,其余均拒绝
⑤internal (内部区域) :默认值时与home区域相同。
⑥work (工作区域) :允许与ssh、ipp-client、 dhcpv6-client 预定义服务匹配的传入流量,其余均拒绝。
⑦dmz(隔离区域也称为非军事区域):允许与ssh预定义服务匹配的传入流量,其余均拒绝。
⑧block (限制区域) :拒绝所有传入流量。
⑨drop (丢弃区域) :丢弃所有传入流量,并且不产生包含ICMP的错误响应。
防火墙的简单操作.
# 查看防火墙的状态
systemctl status firewalld
# 重启防火墙
systemctl restart firewalld
# 注意有时候重启可能不管用, 需要关闭再启动
systemctl stop firewalld && systemctl start firewalld
防火墙的简单查询操作
# 获取默认区域
firewall-cmd --get-default-zone
# 获取活跃zone的具体配置信息
firewall-cmd --get-active-zones
# 获取哪些服务可以在当前default区域内例外
firewall-cmd --list-services
# 获取哪些端口进行了对外开放
firewall-cmd --list-ports
防火墙的简单设置操作
# 添加例外,可以进行访问
firewall-cmd --zone=trusted --add-source=10.25.11.53 --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
# 删除例外, 保证安全
firewall-cmd --zone=trusted --remove-source=10.25.11.53 --permanent
firewall-cmd --remove-service ssh --permanent
firewall-cmd --zone=public --remove-port=80/tcp --permanent
firewall-cmd --reload
关于防火墙与容器的处理
前期一直有一个困惑, 就是防火墙总是无法显示容器 -p 0.0.0.0:5672:5672 类似暴露的端口
一段时间没办法的情况下仅能够修改为 -p 127.0.0.1:port:port 进行expose来保证安全
最近两天同事帮忙分析了下, 发现可以在systemd 里面关掉docker 对iptables的映射来保证安全.
也就是可以让容器进行转发.forward, 但是不在iptables 上面进行链路规划了. 就可以保证不会被外部访问了.
方法也很简单. 主要如下:
感谢帅男同学的帮助:
思路为在systemd的启动脚本出增加 --iptabls=false的方式来避免插入
需要注意的一点是: /etc/docker/daemon.josn 写入是没有效果的. 可能跟之前的graph的设置一样.高版本只能修改systemd的启动脚本了.
sed -i 's/--iptables=false/ /g' /usr/lib/systemd/system/docker.service
sed -i 's/ExecStart=\/usr\/bin\/dockerd/\EExecStart=\/usr\/bin\/dockerd --iptables=false/g' /usr/lib/systemd/system/docker.service
systemctl daemon-reload
systemctl stop docker
systemctl start docker
docker ps
标签:总结,CentOS,firewall,cmd,防火墙,firewalld,--,区域
From: https://www.cnblogs.com/jinanxiaolaohu/p/16790059.html