centos7是默认使用firewalld防火墙,需要永久关闭
iptables 规则是立即生效的
一、四表五链
表中有链,链中有规则
表
表的作用:规定了如何处理数据包
1.raw:是否跟踪数据流量
2.mangle:是否标记数据流量
3.nat:地址转换 pre post
4.filte:过滤数据流量 决定数据是否通过 input output forward
链
链的作用:什么时候作用
1.input链:处理需要进入本机的流量
2.output链: 处理本机出来的流量
3.forward:处理需要被本机转发的流量
4.preouting链:处理在路由判断前的数据,在不明确是给本机的数据还是穿过本机,转发给别的机器的数据前进行处理
5.postrouting链:处理在路由判断后的数据包,明确是给自己还是给别人后处理
二、iptables命令总结
1.查看iptables规则列表命令
iptables -vnL
iptables -vnl --line-numbers
#显示规则序号
2.添加iptables规则列表命令
iptables [-t 表名] -[AIDR] 链名 规则 -j 处理动作 (ACCEPT DROP REJECT)
#命令格式
iptables -t filter -A INPUT -s 192.168.91.0/24 -j DROP
#来源于 192.168.91.0段的所有数据包都丢弃
iptables -t filter -I INPUT 3 -s 192.168.91.0/24 -j DROP
#插入第三条规则
3.删除iptables规则列表命令
iptables -t 表名 -F 清空
iptables -t 表名 -D 链名 编号 删除1条规则
iptables -F
#清空
三、iptables实操
1.拒绝来自192.168.20.6主机访问本机的22端口
#拒绝来自192.168.20.6主机访问本机的22端口
iptables -A INPUT -s 192.168.20.6 -p tcp --dport 22 -j DROP
#查看filter规则表
iptables -vnL
#查看filter规则表,并显示规则编号
iptables -vnL --line-num
#删除规则编号2
iptables -D INPUT 2
iptables -vnL --line-num
2.添加允许连接本机回环网卡
iptables -A INPUT -i lo -j ACCEPT
#添加允许流量进入本机回环网卡
3.黑名单白名单
设置是DROP的时候是黑名单,默认拒绝所有,那么需要设置白名单,同时iptables -F清空命令失效
#先在accept基础上设置黑名单,等同于iptables -P INPUT DROP
iptables -A INPUT -j DROP
iptables -vnL
#在第一行插入,添加允许xshell连接本机
iptables -I INPUT -s 192.168.20.1 -j ACCEPT
iptables -vnL
设置是ACCEPT的时候是白名单,默认允许所有,需要设置黑名单,那么想要有与DROP一样的效果,就在最后一条加上拒绝所有
4.设置icmp策略,让A可以ping通B,B 不可以ping通A
iptables -A INPUT -s 192.168.91.101 -j REJECT
#双方都不可以ping
1.拒绝B的请求包
iptables -A INPUT -s 192.168.91.101 -p icmp --icmp-type 8 -j REJECT
2.拒绝B的回复包
iptables -A OUTPUT -d 192.168.91.101 -p icmp --icmp-type 0 -j REJECT
注:拒绝请求包比拒绝回复包好
5.multiport(以离散的方式匹配不同的端口)
iptables -A INPUT -s 192.168.20.8 -p tcp -m multiport --dport 22,80 -j REJECT
#拒绝来自192.168.20.8主机访问本机的22和80端口
6.限制流量(limit)
iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 10/minute --limit-burst 5 -j ACCEPT
#每分钟1允许0个 前5个不限制
iptables -A INPUT -p icmp -j REJECT
7.state模块
1.NEW:新发出请求;连接追踪信息库中不存在此连接的相关信息条目,因此,将其识别为第一次发出的请求
2.ESTABLISHED:NEW状态之后,连接追踪信息库中为其建立的条目失效之前期间内所进行的通信状态
3.RELATED:新发起的但与已有连接相关联的连接,如:ftp协议中的数据连接与命令连接之间的关系
4.INVALID:无效的连接,如flag标记不正确
5.UNTRACKED:未进行追踪的连接,如:raw表中关闭追踪
--state state
ipatables -A INPUT -m state --state NEW -j REJECT
ipatables -A INPUT -m state --state ESTABLISHED -j ACCEPT
#新用户不可以访问 老用户可以继续访问 老用户退出不可以访问了
面试题:
报错Feb 5 09:41:49 localhost kernel: nf_conntrack: table full, dropping packet
(原本能ping通的服务器因为最大记录的用户数满了导致无法ping通,需要修改最大记录数)
cat /proc/sys/net/netfilter/nf_conntrack_max
#默认记录的用户数为 65536
echo 10000 > /proc/sys/net/netfilter/nf_conntrack_max
#修改最大记录数
tail /var/log/messages
#查看日志