防火墙iptables
1.iptables和firewalld的区别?
2者都是防火墙,都是属于包过滤防火墙。
- iptables 主要是基于接口,来设置规则,从而判断网络的安全性。firewalld 是基于区域,根据不同的区域来设置不同的规则,从而保证网络的安全,与硬件防火墙的设置相类似。
- iptables 防火墙类型为静态防火墙。firewalld 防火墙类型为动态防火墙。
2.iptables使用场景
iptables的主要功能是实现对网络数据包进出设备及转发的控制。当数据包需要进入设备、从设备中流出或者经该设备转发、路由时,都可以使用iptables进行控制。
3.iptables中的“四表五链”及“堵通策略”
A.“四表”是指,iptables的功能——filter, nat, mangle, raw.
filter, 控制数据包是否允许进出及转发(INPUT、OUTPUT、FORWARD),可以控制的链路有input, forward, output
nat, 控制数据包中地址转换,可以控制的链路有prerouting, input, output, postrouting
mangle,修改数据包中的原数据,可以控制的链路有prerouting, input, forward, output, postrouting
raw,控制nat表中连接追踪机制的启用状况,可以控制的链路有prerouting, output
注:在centos7中,还有security表,不过这里不作介绍
B.“五链”是指内核中控制网络的NetFilter定义的五个规则链,分别为
PREROUTING, 路由前
INPUT, 数据包流入口
FORWARD, 转发管卡
OUTPUT, 数据包出口
POSTROUTING, 路由后
C.堵通策略是指对数据包所做的操作,一般有两种操作——“通(ACCEPT)”、“堵(DROP)”,还有一种操作很常见REJECT.
谈谈REJECT和DROP之间的区别,Ming写了一封信,向Rose示爱。Rose如果不愿意接受,她可以不回应Ming,这个时候Ming不确定Rose是否接到了信;Rose也可以同样写一封信,在信中明确地拒绝Ming。前一种操作就如同执行了DROP操作,而后一种操作就如同REJECT操作。
4.iptables安装
rpm -qa | grep firewalld //安装之前检查有没有firewalld
systemctl stop firewalld // 停止firewalld服务
service iptables status // 检查是否安装了iptables
yum install -y iptables // 安装iptables
yum update iptables // 升级iptables
yum install iptables-services //安装iptables-service
5.iptables使用
systemctl enable iptables.service // 设置防火墙开机启动
systemctl start iptables // 启动防火墙
systemctl stop iptables // 关闭防火墙,关闭时才运行此命令
systemctl restart iptables // 重启防火墙,重启时才运行此命令
vim /etc/sysconfig/iptables // 查看防火墙编辑,最好是通过下面的语句来运行:
iptables-restore /etc/sysconfig/iptables //防火墙生效
6.demo
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -p tcp -m tcp --dport 8638 -j DNAT --to-destination ip:8638
-A PREROUTING -p tcp -m tcp --dport 8639 -j DNAT --to-destination ip:8639
-A PREROUTING -p tcp -m tcp --dport 8640 -j DNAT --to-destination ip:8640
-A POSTROUTING -d ip/32 -p tcp -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [20:161821]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [615:655925]
-A INPUT -p tcp -m tcp --dport 10050 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
COMMIT