iptables、ip6tables防火墙的安装配置(CentOS)
iptables 是集成在 Linux 内核中的包过滤防火墙系统。使用 iptables 可以添加、删除具体的过滤规则,iptables 默认维护着 4 个表和 5 个链,所有的防火墙策略规则都被分别写入这些表与链中。
“四表”是指 iptables 的功能,默认的 iptable s规则表有 filter 表(过滤规则表)、nat 表(地址转换规则表)、mangle(修改数据标记位规则表)、raw(跟踪数据表规则表):
filter 表:控制数据包是否允许进出及转发,可以控制的链路有 INPUT、FORWARD 和 OUTPUT。
nat 表:控制数据包中地址转换,可以控制的链路有 PREROUTING、INPUT、OUTPUT 和 POSTROUTING。
mangle:修改数据包中的原数据,可以控制的链路有 PREROUTING、INPUT、OUTPUT、FORWARD 和 POSTROUTING。
raw:控制 nat 表中连接追踪机制的启用状况,可以控制的链路有 PREROUTING、OUTPUT。
“五链”是指内核中控制网络的 NetFilter 定义的 5 个规则链。每个规则表中包含多个数据链:INPUT(入站数据过滤)、OUTPUT(出站数据过滤)、FORWARD(转发数据过滤)、PREROUTING(路由前过滤)和POSTROUTING(路由后过滤),防火墙规则需要写入到这些具体的数据链中。
安装配置iptables/ip6tables
关闭默认防火墙firewall
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
安装iptables防火墙
yum install iptables-services
iptables配置(针对ipv4)
将iptables加入开机启动项,同时启动iptables服务
systemctl enable iptables.service
systemctl start iptables.service
配置防火墙 ,规则如下
#设置INPUT链默认规则为允许通过(避免远程到服务器配置防火墙规则时被拦截)
iptables -P INPUT ACCEPT
#清空防火墙规则
iptables -F && iptables -X
#允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -i lo -j ACCEPT
#允许访问80端口
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
#允许访问443端口
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
#允许访问22端口
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
#允许已建立的或相关连的通行
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#允许ping
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
#允许所有本机向外的访问
iptables -P OUTPUT ACCEPT
#设置INPUT链默认规则为禁止通过
iptables -P INPUT DROP
保存iptables规则至配置文件 /etc/sysconfig/iptables
iptables-save > /etc/sysconfig/iptables
重启iptables
systemctl restart iptables
查看规则
iptables -L -n
ip6tables配置(针对ipv6)
将ip6tables加入开机启动项,同时启动iptables服务
systemctl enable ip6tables.service
systemctl start ip6tables.service
配置防火墙 ,规则如下
ip6tables -P INPUT ACCEPT
ip6tables -F && ip6tables -X
ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
ip6tables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
ip6tables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
ip6tables -A INPUT -d fe80::/64 -p udp -m udp --dport 546 -m state --state NEW -j ACCEPT
ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
ip6tables -A INPUT -p ipv6-icmp -j ACCEPT
ip6tables -A INPUT -j REJECT --reject-with icmp6-adm-prohibited
ip6tables -A FORWARD -j REJECT --reject-with icmp6-adm-prohibited
ip6tables -P OUTPUT ACCEPT
ip6tables -P FORWARD ACCEPT
ip6tables -P INPUT DROP
保存配置
ip6tables-save | sudo tee /etc/sysconfig/ip6tables
重启ip6tables
systemctl restart ip6tables
查看规则
ip6tables -L -n