首页
centos
常用命令linux_系统
Centos后台运行程序命令nohup
CentOS7启用阿里源yum安装Nginx
使用清华大学yum源
使用国内yum源
Linux script(录制) 命令
Linux内核参数中的配置项
Linux 系统生成或重置机器 ID
centos7系统安装
Centos7配置开机自启动脚本
CentOS忘记密码
Linux的服务、程序
系统优化+模板制作
CentOS设置环境变量
CentOS7的systemd
Linux常用命令记录
Centos 7查看系统最近一次启动时间和运行时间
Linux命令 之 watch命令
Centos7下date怎么英文格式输出
linux 使用 rz 和 sz 上传下载文件
Linux下的压缩/解压缩
常用命令linux_文本处理
计划任务crontab
CentOS7 SElinux和防火墙Firewall
Centos firewall-cmd配置软路由
CentOS7系统中使用iptables
iptables配置
iptables基础操作
使用iptables设置端口敲门(port knocking)后转发
Centos7 SSH登录日志分析
CentOS下查看tcp的网络连接状态数 netstat + awk
CentOS7上安装 Fail2Ban防SSH爆破
Fail2Ban开启邮件告警
LDAP
文件存储
ZFS
SSH
CentOS 7 SSH配置免密码登录
CentOS7开启SSH访问配置
删除ssh客户端记录的主机密钥标识(指纹)
sshd启动失败解决
添加用户,设置sudo权限
ssh公钥、机器指纹
ssh客户端提示:找不到对应主机密钥类型
shell脚本
示例:jumpserver一键安装脚本
centos中使用ping日志记录网络通断
盘符挂载硬盘导致重启系统失败
CentOS_网络
centos路由配置
Linux 系统添加永久静态路由
centos 添加删除路由
Linux下使用TC实现网络限流
linux系统下的wifi启动不了
hosts文件配置
网络端口
Centos 网卡命名规则
Centos命令行中nmtui调用图形界面设置网卡
查看CentOS网口的使用带宽
linux抓包工具tcpdump
定时备份删除文件
定时删除n日前的文件
备份指定目录下的文件
检查定时备份是否执行
inotify+rsync实时同步
rsync+lsync
CentOS7 使用SMTP发送邮件
Centos7部署开源SSH蜜罐cowrie
Centos7磁盘相关命令
centos 7 新增硬盘 分区并挂载
centos7加硬盘给根分区扩容--lvm模式
Linux中对lvm逻辑卷分区大小的调整(针对xfs与ext4不同文件系统)
CentOS7挂载4T磁盘
Centos7_NFS
CentOS7挂载samba共享文件夹
vsftpd主动模式和被动模式
CentOS清除旧硬盘格式
CentOS磁盘读写性能测试
硬盘IO查看分析工具iostat
Linux迁移home目录到根目录-需LVM分区
使用 smartctl 命令检查硬盘的状态
lsof列出正在使用某个文件夹
/dev/disk 目录
本文档由 内网文摘 发布,转载请注明出处
-
+
首页
CentOS7 SElinux和防火墙Firewall
## CentOS 7关闭selinux #### 临时关闭 `getenforce` 获取当前selinux状态 Enforcing表示开启 `sudo setenforce 0`临时关闭selinux 重启失效 状态变为Disabled #### 永久关闭 `sudo vim /etc/sysconfig/selinux`或`vi /etc/selinux/config` 将SELINUX=enforcing改为SELINUX=disabled 设置后需要重启才能生效 ## CentOS 7防火墙Firewall #### Firewall开放端口 CentOS升级到7之后使用firewalld代替了原来的iptables 开启tcp端口80 [root@centos7 ~]# `firewall-cmd --zone=public --add-port=80/tcp --permanent` 开启udp端口53 [root@centos7 ~]# `firewall-cmd --zone=public --add-port=53/udp --permanent` 批量添加区间端口`firewall-cmd --zone=public--add-port=4400-4600/udp --permanent` #### Firewall关闭端口 `firewall-cmd --zone=public --remove-port=80/tcp --permanent` #### Firewall查询和重启 查询端口号80 是否开启: [root@centos7 ~]# `firewall-cmd --query-port=80/tcp` 重新载入防火墙配置: [root@centos7 ~]# `firewall-cmd --reload` 查询有哪些端口是开启的: [root@centos7 ~]# `firewall-cmd --list-port` #### 命令含义: --zone #作用域 --add-port=80/tcp #添加端口,格式为:端口/通讯协议 --permanent #永久生效,没有此参数重启后失效 **启停firewall** #### 1、firewalld的基本使用 启动: `systemctl start firewalld` 关闭: `systemctl stop firewalld` 查看状态: `systemctl status firewalld` 开机禁用 : `systemctl disable firewalld` 开机启用 : `systemctl enable firewalld` #### 2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。 - 启动一个服务:systemctl start firewalld.service - 关闭一个服务:systemctl stop firewalld.service - 重启一个服务:systemctl restart firewalld.service - 显示一个服务的状态:systemctl status firewalld.service - 在开机时启用一个服务:systemctl enable firewalld.service - 在开机时禁用一个服务:systemctl disable firewalld.service - **查看服务是否开机启动**:`systemctl is-enabled firewalld.service` - 查看已启动的服务列表:systemctl list-unit-files|grep enabled - 查看启动失败的服务列表:systemctl --failed #### 3.配置firewalld-cmd - 查看版本: firewall-cmd --version - 查看帮助: firewall-cmd --help - 显示状态: firewall-cmd --state - 查看所有打开的端口: firewall-cmd --zone=public --list-ports - 更新防火墙规则: firewall-cmd --reload - 查看区域信息: firewall-cmd --get-active-zones - 查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0 - 拒绝所有包:firewall-cmd --panic-on - 取消拒绝状态: firewall-cmd --panic-off - 查看是否拒绝: firewall-cmd --query-panic 富规则实例 ``` `firewalld`是CentOS 7及许多其他现代Linux发行版中使用的防火墙管理工具。`firewall-cmd`是`firewalld`的命令行界面,用于管理防火墙规则和设置。以下是`firewall-cmd`的一些常见用法及其含义: 1. **`firewall-cmd --list-all`**: - 这个命令用于列出所有区域(zone)的防火墙规则和设置。 - 它会显示当前活动区域的规则、服务、端口、富规则(rich rules)等信息。 - 这个命令提供了一个快速的概览,让你了解当前防火墙的配置状态。 2. **`firewall-cmd --direct --get-all-rules`**: - 这个命令用于获取直接(direct)规则,这些规则是直接在内核层面上应用的,不通过`firewalld`的区域(zone)配置。 - 直接规则通常用于更复杂的场景,比如需要精确控制包过滤的行为,或者需要绕过`firewalld`的某些限制。 - `--get-all-rules`选项用于获取所有直接规则的列表,包括永久规则和当前活动的规则。 简单来说,`--list-all`提供了通过`firewalld`配置的防火墙规则的概览,而`--direct --get-all-rules`则提供了直接在内核中设置的规则的列表,这些规则可能不会被`--list-all`命令显示。 查询 [root@localhost ~]# firewall-cmd --direct --get-all-rules ipv4 filter FORWARD 80000 -p tcp --dport 443 -d 10.1.2.3 -m comment --comment 'permit abc123' -j ACCEPT ipv4 filter FORWARD 80100 -p tcp -s 192.168.10.3 -d 10.10.10.10 --dport 3389 -m comment --comment 'permit3389' -j ACCEPT ipv4 filter FORWARD 80200 -p tcp -d 192.168.10.80 --dport 8080 -m comment --comment 'permit webserver' -j ACCEPT ipv4 filter FORWARD 80300 -p udp -s 192.168.10.2 -d 192.168.200.108 --dport 58880:58889 -m comment --comment 'permit a to b' -j ACCEPT ipv4 filter FORWARD 90000 -p tcp -s 192.168.30.2 -d 10.1.3.0/24 --dport 22 -m comment --comment 'permit22' -j ACCEPT ipv4 filter FORWARD 90200 -p tcp -s 192.168.20.2 -d 10.1.2.0/24 -m comment --comment 'permit all' -j ACCEPT 添加 firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 78800 -p tcp -s 192.168.10.2 -d 10.2.2.0/24 -m comment --comment 'permit222' -j ACCEPT 删除 firewall-cmd --permanent --direct --remove-rule ipv4 filter FORWARD 69500 -p udp -s 192.168.10.1 -d 10.2.3.4 --dport 58880:58889 -m comment --comment 'permit234' -j ACCEPT ``` 使用实例 ``` 添加,放通tcp的80端口 firewall-cmd --zone=public --add-port=80/tcp --permanent 移除 firewall-cmd --zone=public--remove-port=80/tcp --permanent 添加,对192.168.1.0/24网段放通tcp的443端口 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="443" accept" 移除 firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="443" accept" firewall-cmd --reload firewall-cmd --list-all 拒绝特定 MAC 地址的所有流量 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source mac xx:xx:xx:xx:xx:xx drop' 仅拒绝特定 MAC 地址访问 TCP 443 端口 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source mac xx:xx:xx:xx:xx:xx port protocol="tcp" port="443" drop' 查询现在放通的端口 [root@local~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client ports: 8080/tcp 8090/tcp ## 普通放通端口,这里显示 protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: rule family="ipv4" source address="192.168.1.0/24" port port="443" protocol="tcp" accept ## 复杂规则,这里显示 ``` ## firewalld 如果您的系统使用的是 `firewalld` 作为防火墙服务,您可以使用以下命令来查看和管理防火墙规则: 1. **查看所有活动的防火墙规则**: ```shell sudo firewall-cmd --list-all ``` 2. **查看所有已定义的区域及其默认规则**: ```shell sudo firewall-cmd --get-active-zones ``` 3. **查看指定区域的规则**: ```shell sudo firewall-cmd --zone=public --list-all ``` 将 `public` 替换为您想要查看的区域名称。 4. **查看永久配置的防火墙规则**(那些重启后仍然有效的规则): ```shell sudo firewall-cmd --permanent --list-all ``` 5. **查看服务列表**: - 查看所有已定义的服务: ```shell sudo firewall-cmd --get-services ``` - 查看某个服务的规则: ```shell sudo firewall-cmd --service=ssh --list-all ``` 6. **查看端口列表**: - 查看所有放行的端口: ```shell sudo firewall-cmd --get-zone-of-interface=eth0 ``` 其中 `eth0` 是您想要查询的网络接口名称。 7. **查看指定端口的规则**: ```shell sudo firewall-cmd --permanent --zone=public --query-port=80/tcp ``` 这将查询永久配置中是否放行了 TCP 端口 80。 8. **查看防火墙的状态** (是否正在运行): ```shell sudo systemctl status firewalld ``` 9. **查看防火墙的日志**: ```shell sudo journalctl -u firewalld ``` 10. **查看防火墙的版本**: ```shell sudo firewall-cmd --version ``` ### rich rule 富规则 在使用 `firewalld` 作为防火墙管理工具的Linux系统中,"rich rules" 是一种复杂的规则,它们可以匹配更具体的条件,例如接口名称、源或目的地址、服务类型、端口等。这些规则提供了比传统规则更细粒度的控制。 要查看 `firewalld` 中的 rich rules,您可以使用以下命令: ```shell sudo firewall-cmd --permanent --list-rich-rules ``` 这个命令将列出所有在永久配置中设置的 rich rules。如果您只想查看当前活动配置中的 rich rules,可以将 `--permanent` 替换为 `--runtime`: ```shell sudo firewall-cmd --runtime --list-rich-rules ``` Rich rules 的例子可能包括: - 允许特定 IP 地址或地址范围的流量。 - 拒绝来自特定国家或地区的所有流量。 - 允许特定服务在特定时间段运行。 - 根据 MAC 地址、接口或协议类型等条件允许或拒绝流量。 例如,以下是一个 rich rule 的示例,它允许从特定 IP 地址到特定端口的流量: ```shell rule family="ipv4" source address="192.168.1.100" port port="8080" protocol="tcp" accept ``` 要在 `firewalld` 中添加 rich rules,您可以使用 `--add-rich-rule` 选项,并提供规则的定义。例如: ```shell sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="http" accept' ``` ```shell sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="http" accept' ``` 上面的命令将添加一条永久规则,允许从 IP 地址 `192.168.1.100` 到 `http` 服务(通常监听端口 80)的 TCP 流量。 **示例:允许特定源网段和源端口到特定目的端口的流量** 假设您想要允许从网段 192.168.1.0/24 来的、源端口为 8080 的流量,并且这些流量的目标端口是 80(HTTP服务的默认端口),您可以使用以下命令: ``` sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" source port="8080" port="80" protocol="tcp" accept' ``` 这条规则将允许来自 192.168.1.0/24 网段的、源端口为 8080 的 TCP 流量到达任何允许 80 端口的目的地。 **示例:拒绝特定源网段和源端口到特定目的端口的流量** 如果您想要拒绝同样的流量,可以使用 drop 操作: ``` sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" source port="8080" port="80" protocol="tcp" drop' ``` 这条规则将拒绝所有来自 192.168.1.0/24 网段的、源端口为 8080 的 TCP 流量到达任何 80 端口的目的地。 #### 删除rich rule 1. **查询** ``` firewall-cmd --list-all ``` 2. **删除** ``` firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="443" accept" ``` 3. **重载 `firewalld` 配置** 以应用更改: ```shell sudo firewall-cmd --reload ``` 4. **验证规则是否已被删除**: 重新运行查看 rich rules 的命令来确保规则已经被删除: ```shell sudo firewall-cmd --permanent --list-rich-rules ``` 5. **如果您想删除临时规则**(非永久性规则): 您可以使用 `--runtime` 选项代替 `--permanent` 选项,例如: ```shell sudo firewall-cmd --runtime --remove-rich-rule='0' ``` 请注意,删除规则时需要具有相应的权限,因此您可能需要在命令前加上 `sudo`。另外,删除规则可能会影响系统的安全性和网络连接,请在删除前确保理解规则的目的和影响。 如果您不确定要删除哪条规则,或者想要根据特定条件(如源地址、端口等)删除规则,您可以使用 `grep` 来过滤出特定的规则索引号,例如: ```shell sudo firewall-cmd --permanent --list-rich-rules | grep -n -e '源地址条件' ``` 这将显示所有包含特定文本的规则及其索引号,您可以根据这些信息来确定要删除的规则。
local
2024年7月18日 18:56
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 LocalNetwork
LocalNetwork
是由mrdoc开源
LocalNetwork.cn
修改的在线文档系统,作为个人和小型团队的云笔记、文档和知识库管理工具。
如果此文档给你或你的团队带来了帮助,欢迎支持作者持续投入精力更新和维护!内网文摘 & LocalNetwork
>>>主页
logo
logo
下载Markdown文件
分享
链接
类型
密码
更新密码