CentOS7默认的防火墙不是iptables,而是firewalld. 安装iptable iptable-service
#先检查是否安装了iptables
service iptables status
#安装iptables
yum install -y iptables
#升级iptables
yum update iptables
#安装iptables-services
yum install iptables-services
禁用/停止自带的firewalld服务
#停止firewalld服务
systemctl stop firewalld
#禁用firewalld服务
systemctl mask firewalld
设置现有规则
-A append 追加新规则
-p protocol 规则协议
-s source 数据包源地址
-d destination 目的地址
--dport XX-XX 指定目标端口,不能指定多个非连续端口,只能指定单个端口
例如:--dport 21 或者 --dport 21-23 (此时表示21,22,23)
-j jump to target 处理方式
-i input interface 输入接口
-o out interface 输出接口
-m multiport 启用多端口扩展( -m state --dports 21,23,80)
五个钩子函数(hook functions),也叫五个规则链。
1.PREROUTING (路由前)
2.INPUT (数据包流入口)
3.FORWARD (转发管卡)
4.OUTPUT(数据包出口)
5.POSTROUTING(路由后)
这是NetFilter规定的五个规则链,任何一个数据包,只要经过本机,必将经过这五个链中的其中一个链
对规则有了一个基本描述之后,有时候我们还希望指定端口、TCP标志、ICMP类型等内容。
–sport 源端口(source port)针对 -p tcp 或者 -p udp
缺省情况下,将匹配所有端口
可以指定端口号或者端口名称,例如”–sport 22″与”–sport ssh”。
/etc/services文件描述了上述映射关系。
从性能上讲,使用端口号更好
使用冒号可以匹配端口范围,如”–sport 22:100″
还可以使用”–source-port”
–-dport 目的端口(destination port)针对-p tcp 或者 -p udp
参数和–sport类似
还可以使用”–destination-port”
-–tcp-flags TCP标志 针对-p tcp
可以指定由逗号分隔的多个参数
有效值可以是:SYN, ACK, FIN, RST, URG, PSH
可以使用ALL或者NONE
-–icmp-type ICMP类型 针对-p icmp
–icmp-type 0 表示Echo Reply
–icmp-type 8 表示Echo
#查看iptables现有规则
iptables -L -n
#先允许所有,不然有可能会杯具
iptables -P INPUT ACCEPT
#清空所有默认规则
iptables -F (flush)
#清空所有自定义规则
iptables -X
#所有计数器归0
iptables -Z
#允许来自于lo接口的数据包(本地访问)
iptables -A INPUT -i lo -j ACCEPT
ifconfig查看网卡名称
iptables -A INPUT -i ens33 -j ACCEPT
#开放22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#开放21端口(FTP)
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
#开放80端口(HTTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#开放443端口(HTTPS)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#允许ping
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
#禁止PING
iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
#允许接受本机请求之后的返回数据 RELATED,是为FTP设置的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#其他入站一律丢弃
iptables -P INPUT DROP
#所有出站一律绿灯
iptables -P OUTPUT ACCEPT
#所有转发一律丢弃
iptables -P FORWARD DROP
其他规则设定
#如果要添加内网ip信任(接受其所有TCP请求)
iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT
#过滤所有非以上规则的请求
iptables -P INPUT DROP
#要封停一个IP,使用下面这条命令:
iptables -I INPUT -s ***.***.***.*** -j DROP
#要解封一个IP,使用下面这条命令:
iptables -D INPUT -s ***.***.***.*** -j DROP
删除INPUT链编号为2的规则
iptables -L -n --line-number
iptables -D INPUT 2
保存规则设定
sevice iptables save
开启iptables服务
#注册iptables服务
#相当于以前的chkconfig iptables on
systemctl enable iptables.service
#开启服务
systemctl start iptables.service
#查看状态
systemctl status iptables.service