Iptables与Firewalld(RHEL7中新增)
防火墙实现:Iptables或Firewalld定义防火墙规则,由内核中的netfilter读取并实现过滤
Iptables命令
-
规则:
ACEEPT:允许通过 LOG:记录日志信息,然后传给下一条规则继续匹配 REJECT:拒绝通过,给出提示 DROP:直接丢弃,没有回应
-
规则链:依据处理数据报的位置不同而进行分类
PREROUTING链:在进行路由选择前处理数据包 INPUT链:处理入站的数据包 OUTPUT链:处理出站的数据包 FORWARD链:处理转发的数据包 POSTROUTING链:在进行路由选择后处理数据包
-
规则表:
raw表:确定是否对该数据包进行状态跟踪 mangle表:为数据包设置标记 nat表:修改数据包中的源、目标IP地址或端口 filter表:确定是否放行该数据包(过滤)
命令格式:iptables [-t 表名] 选项 [链名] [条件] [-j 规则]
-
参数:
-P ->设置默认策略、-F ->清空规则链、-L ->查看规则链 -A ->在规则链末尾加入新规则 -I num ->在规则链的头部加入新规则 -D num ->删除某一条规则 -s ->匹配来源地址、-d ->匹配目标地址 -i 网卡名 ->匹配从这块网卡流入的数据 -o 网卡名 ->匹配从这块网卡流出的数据 -p ->匹配协议,如tcp、udp、icmp --dport num ->匹配目标端口号 --sport num ->匹配来源端口号
-
eg:
1、仅允许来自192.168.10.0/24域的用户连接本机的ssh服务: iptables -I INPUT -s 192.168.10.0/24 -p tcp -dport 22 -ACCEPT iptables -A INPUT -p tcp --dport 22 -j REJECT 注意:iptables防火墙按照顺序匹配规则,需保证‘允许’规则在‘拒绝’规则上面 2、不允许任何用户访问本机的12345端口: iptables -I INPUT -p tcp --dport 12345 -j REJECT iptables -I INPUT -p udp --dport 12345 -j REJECT 3、拒绝其他用户从“eno16777736”网卡访问本机http服务的数据包: iptables -I INPUT -i eno16777736 -p tcp --dport 80 -j REJECT 4、禁止用户访问www.my133t.org: iptables -I FORWARD -d www.my133t.org -j DROP 5、禁止IP地址是192.168.10.10的用户上网: iptables -I FORWARD -s 192.168.10.10 -j DROP
SNAT与DNAT
SNAT:源地址转换技术,使多个内网用户通过一个外网地址上网
-
eg:将内网IP地址192.168.10.10用户经过SNAT变成外网IP地址111.196.211.212:
iptables -t nat -A POSTROUTING -s 192.168.10.10 -o eno16777736 -j SNAT --to-source
DNAT:目的地址转换技术,使外网IP用户访问局域网内不同的服务器
-
eg:使互联网中的客户机61.240.149.149访问到内网服务器192.168.10.6:
iptables -t nat -A PREROUTING -i eno 16777736 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.6
端口转发:将发送到某端口的数据包转发到其他端口
流量均衡:将访问流量分到不同主机上
Firewalld防火墙(待补充)