linux

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

留言

您的电子邮箱地址不会被公开。 必填项已用 * 标注