Search Posts

标签: admin

CentOS的firewall-cmd用法详细总结

Centos 采用的防火墙firewalld简介:

firewalld 是 CentOS 和其他一些 Linux 发行版中默认使用的防火墙软件,它提供了一种灵活的方式来管理系统的网络安全和连接。

firewalld 使用 D-Bus 接口来管理网络连接,它使用基于区域的策略来控制入站和出站流量,并且可以在运行时动态更新规则。这使得 firewalld 比传统的 iptables 防火墙更加灵活和易于管理。

以下是 firewalld 的一些主要特点:

  1. 支持基于区域的策略:firewalld 使用基于区域的策略来控制入站和出站流量。每个区域都有一个预定义的安全级别和一组服务,这些服务定义了允许访问的端口和协议。你可以轻松地将系统接口分配给不同的区域,并在区域之间移动。

  2. 支持动态更新规则:firewalld 可以在运行时动态更新规则,无需重启防火墙服务。这使得添加或删除规则变得更加方便和快捷。

  3. 支持网络连接跟踪:firewalld 可以跟踪网络连接并在其生命周期内应用相应的规则。这使得 firewalld 能够更好地保护系统安全和隐私。

  4. 支持 IPv6:firewalld 支持 IPv6,可以轻松地管理 IPv6 网络安全。

  5. 支持命令行和图形界面:firewalld 提供了命令行和图形界面两种管理方式。你可以使用命令行工具 firewall-cmd 来管理防火墙,也可以使用图形界面工具 firewall-config 来配置防火墙规则。

总之,firewalld 是一个功能强大且易于管理的防火墙软件,它提供了一种灵活的方式来保护系统网络安全和连接。如果你使用 CentOS 或其他一些 Linux 发行版,firewalld 是一个值得考虑的防火墙解决方案。

firewall-cmd 的不同场景应用举例:

如果通过命令方式修改firewalld防火墙规则,则通过firewall-cmd 命令具体执行,以下是一些实际例子:

firewall-cmd 设置linux防火墙允许80端口对外访问:

firewall-cmd --zone=public --add-port=80/tcp --permanent

查看当前规则:

firewall-cmd --list-all public

允许特定服务通过防火墙:

firewall-cmd --zone=public --add-service=httpd --permanent

让firewall-cmd命令设置的规则马上生效:

firewall-cmd --reload

对于非默认端口的开放,除了要防火墙允许,还要selinux允许,

在centos7等最新的发行版上,默认启用了selinux,而selinux允许指定端口的命令是:

semanage port -a -t http_port_t -p tcp 81
semanage port -a -t ssh_port_t -p tcp 222
semanage port -a -t vnc_port_t -p tcp 5999

除非关闭了selinux(命令 setenforce 0 可关闭 selinux ,如果永久关闭,可编辑/etc/sysconfig/selinux 文件将 SELINUX=enforcing 改成 SELINUX=disabled),才不需要额外执行以上命令。

要指定允许的来源ip和目标端口:

firewall-cmd --permanent --zone=public --add-rich-rule='
  rule family="ipv4"
  source address="10.10.99.10/32"
  port protocol="tcp" port="80" accept'

firewalld 根据nginx访问日志的 503 记录,自动屏蔽特定ip:

iptables 方式:

*/1 * * * * for itm in /usr/bin/tail -2000 /www/wwwlogs/site.com.log
查看余下内容

docker端口绑定到ipv6导致ipv4请求无法转发的问题和解决

本文是对docker 端口绑定到ipv6 导致ipv4请求无法转发的问题的一些记录和解决过程。

问题症状

vmware虚拟机的 centos 7 里面运行了docker 的mysql服务,端口转发3306:3306,结果发现虚拟机外的系统无法访问到虚拟机的3306的数据库服务。

核心的原因

docker 对与ipv6默认是没有打开forwarding 设置的

首先官方的介绍:
在默认的配置中,流量的端口转发分为两种:内部流量转发(本机),外部流量转发(跨机器)

举个例子:

#docker run -d -p 80:80 nginx

这个操作会在iptables中增加如下策略(是的,docker所有的端口转发都是靠iptables实现的)

#iptables -t nat -L -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
    0     0 DOCKER     all  --  any    any     anywhere             anywhere             ADDRTYPE match dst-type LOCAL
 
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
 
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
    1    60 DOCKER     all  --  any    any     anywhere            !loopback/8          
查看余下内容
加好友请备注:chinaoss
您可以在微信公众号联系我们
我们将24小时内回复。
取消