快捷搜索: 王者荣耀 脱发

Linux防火墙:iptables和firewalld

概述

netfilter/iptables框架是集成在Linux内核中的防火墙系统,由于netfilter在内核空间,用户通常无法对其进行修改,所以就需要一个命令行工具。常见的有iptables和firewalld工具。

一、iptables防火墙

iptables通过四个规则表和五个数据链来实现防火墙策略,所有的防火墙策略都被分别写入这些表与链中

1、四个表:

filter表:过滤规则表 nat表:地址转换规则表 mangle:修改数据标记位i规则表 raw:跟踪数据表规则表

2、五个链:

3、语法:

iptables -t 表名(默认filter) {选项} 链名 选项: -t 指定表 -A 追加防火墙规则 -D删除 -I 插入 -F 清空 -L 列出 -R 替换 -P 设置链规则 匹配参数: -p 匹配协议 (icmp等) -s 匹配源地址 -d 目标地址 –sport 源端口 –dport 目标端口 -i 匹配入站网卡接口 -o 出站网卡接口 参数前加!,表示取反,如:!-s 192.168.1.1 触发动作: 用-j参数指定动作 ACCEPT 允许数据包通过 DROP 丢弃数据包 REJECT 拒绝数据包通过 LOG 将数据包信息记录为syslog DNAT 目标地址转化 SNAT 源地址转换 举例: 1)在filter表中添加一条新的入站规则,拒绝192.168.0.1 ping本机 iptables -A input -s 192.168.0.1 -p icmp -j reject 2)允许客户端访问服务器的http服务 iptables -A input -p tcp --dport 80 -j accept

4、案例分析:

案例一:
案例二:

二、firewalld防火墙

firewalld是Centos7之后默认的系统防火墙。是更加高级的防火墙工具,但也是调用了底层的iptables来实现的 firewalld将所有网络流量都分类汇集到zone,通过管理zone来管理防火墙规则。每一个进入系统的数据包,都会检查他的源IP地址和进出网卡的接口,如果地址与某个zone匹配,则该zone的规则将生效 用firewall-cmd命令来操作。如果和任何一个zone都匹配不到,则将该数据包匹配到默认zone,一般是public。

1、firewall的9个zone:

trusted: 允许所有入站流量 public: 允许其他主机入站访问本机的预定义服务(ssh等),允许本机访问其他主机的返回入站流量,拒绝其他所有入站数据包 home、internal、work、external、dmz、block、drop

2、命令语法

通过 firewall-cmd 命令操作 命令常用选项 –get-default-zone 获取默认的zone,一般是public –set-default-zone=【zone】 设置默认zone –get-active-zone 获取当前正在使用的zone –get-services 显示系统预定义的服务名称 –get-zone-of-interface=【interface】 查看指定接口与哪个zone匹配 –list-all-zones 显示所有zone的规则 –add-service=【service】 --zone=【zone】 向zone中添加允许访问的服务 –add-port=【port】/【portcol】 --zone=【zone】 向zone中添加允许访问的端口及网络服务类型(tcp/udp等) –add-interface=【interface】 --zone=【zone】 将接口与zone绑定 –add-source=【source】 --zone=【zone】 将源地址与zone绑定 –list-all 列出默认zone的规则,后面跟 --zone= 列出指定zone的规则 –remove-service=【service】 --zone=【zone】 从zone中移除某个服务 –remove-port、interface、source=… 与add类似 –permanent 使规则永久生效 –reload 重新加载firewall

经验分享 程序员 微信小程序 职场和发展