一、常见的两种火墙
- iptables 防火墙:
iptables service 管理防火墙规则的模式(静态):用户将新的防火墙规则添加进 /etc/sysconfig/iptables 配置文件当中,再执行命令 /etc/init.d/iptables reload 使变更的规则生效。在这整个过程的背后,iptables service 首先对旧的防火墙规则进行了清空,然后重新完整地加载所有新的防火墙规则,如果加载了防火墙的模块,需要在重新加载后进行手动加载防火墙的模块。
- firewalld防火墙:
使用 python 语言开发,管理防火墙规则的模式(动态):任何规则的变更都不需要对整个防火墙规则列表进行重新加载,只需要将变更部分保存并更新到运行中的 iptables 即可。还有命令行和图形界面配置工具,它仅仅是替代了 iptables service 部分,其底层还是使用 iptables 作为防火墙规则管理入口。
Filewalld(动态防火墙)作为系统中变更对于netfilter内核模块的管理工具;
二、火墙管理工具切换
在rhle8中默认使用firewalld
1.firewalld----------->iptables
1.iptables----------->firewalld
三、iptables
1.iptables防火墙基础知识
<1>概述:保护内部主机和内部网络的安全,通过过滤的方式对网络层的ip地址和端口进行处理;
<2>了解防火墙:
硬件防火墙:ASA
软件防火墙:iptables(linux平台)、ISA(windows自带的)
<3>iptables防火墙结构:
netfilter内核模块、iptables用户工具、firewall用户工具
<4>iptables的表:按照不同功能来划分;
raw(状态跟踪)、mangle(标记)、nat(修改)、filter(过滤)
raw:主要是为了提高效率使用的,raw本身的含义是指“原生的”、“未经过加工 的”,符合raw表所对应规则的数据包将会跳过一些检查,这样就可以提高效率;
mangle:mangle表的规则可以对数据包进行修改,比如修改ttl值等;
nat:进行源地址或目标地址修改转换;
filter:通过过滤数据包的ip地址、mac地址、协议、端口,对数据包进行控制;
<5>iptables规则链:根据不同时机来划分链,在链中存放规则;
INPUT(入站)、OUTPUT(出站)、FORWARD(转发)、PREROUTING(路由前)、POSTROUTING(路由后)
<6>表中默认包含链:
raw:PREROUTING、OUTPUT
mangle:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING
nat: PREROUTING、POSTROUTING、OUTPUT
filter:INPUT、FORWARD、OUTPUT
2.火墙策略的永久保存
火墙策略的永久保存
/etc/sysconfig/iptables ##iptables策略记录文件
不保存策略重启服务后自动恢复最初的策略
永久保存策略两种方法
iptables-save > /etc/sysconfig/iptables
service iptables save ##常用方法
3.iptables的命令用法
##iptables规则链
INPUT(入站)、OUTPUT(出站)、FORWARD(转发)、PREROUTING(路由前)、POSTROUTING(路由后)
##表中默认包含链
raw: PREROUTING、OUTPUT
mangle:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING
nat: PREROUTING、POSTROUTING、OUTPUT
filter:INPUT、FORWARD、OUTPUT
##iptables匹配流程 ##(根据数据流的方向确定匹配顺序)
链: 入站数据流向:PREROUTING、INPUT
出站数据流向:OUTPUT、POSTROUTING
转发数据流向:PREROUTING、FORWARD、POSTROUTING
表: raw--mangle--nat--filter
总结:链内规则匹配顺序:从上到下、匹配即停止、未匹配使用默认规则;
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A INPUT ! -s 172.25.254.10 -p tcp --dport 22 -m state --state NEW -j ACCEPT
iptables -A INPUT -s 172.25.254.10 -p tcp --dport 22 -m state --state NEW -j ACCEPT
iptables -A INPUT -j REJECT
iptables -nL
- 在系统中设定火墙只允许访问dns,httpd服务
- 设定火墙仅允许172.25.254.250链接SSHD服务
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -s 172.25.254.250 -p tcp --dport 22 -m state --state NEW -j ACCEPT
iptables -A INPUT -j REJECT
service iptables save