iptables
防火墙是每一层都可以检查的-->工作在7层
iptables的4表5链
规则链
规则的作用在于对数据包进行过滤或处理,根据处理时机的不同,各种规则被组织在不同的“链”中
规则链是防火墙规则/策略的集合
默认的5种规则链
INPUT:处理入站数据包
OUTPUT:处理出站数据包
FORWARD:处理转发数据包
POSTROUTING链:在进行路由选择后处理数据包
PREROUTING链:在进行路由选择前处理数据包
根据数据的流向来限制:
1.只是限制其他的机器访问本机 --》INPUT
2.做路由器使用 -->PREROUTING、POSTROUTING --->路由功能一定要开启
Chain 链
规则表是规则链的集合
默认的4个规则表
raw表:确定是否对该数据包进行状态跟踪 --》new连接还是以前的连接
mangle表:为数据包设置标记 --》给数据包打标志
nat表:修改数据包中的源、目标IP地址或端口 --》实现nat功能的
filter表:确定是否放行该数据包(过滤) --》INPUT
firewalld是centos7里的一个防火墙的服务,底层任然使用的是iptables和内核过滤机制
规则表间的优先顺序
依次为:raw、mangle、nat、filter
规则链间的匹配顺序
入站数据:PREROUTING、INPUT
出站数据:OUTPUT、POSTROUTING
转发数据:PREROUTING、FORWARD、POSTROUTING
规则链内的匹配顺序
按顺序依次进行检查,找到相匹配的规则即停止(LOG策略会有例外)
若在该链内找不到相匹配的规则,则按该链的默认策略处理
计划任务:
[root@web-server sanchuang]# crontab -e
[root@web-server sanchuang]# crontab -e 新建一个计划任务
crontab: installing new crontab
[root@web-server sanchuang]# crontab -l 查看计划任务
0 3 * * * bash /lianxi/mysql/backup_db.sh
*/1 * * * * bash /root/sanchuang/clear_fw.sh
语法
iptables的条件:
1.协议:tcp udp icmp
-p protocol 小写的p
-p icmp --icmp-type 8 ping请求报文
-p icmp --icmp-type 0 ping响应报文
2.端口号:
-p tcp --sport
-p tcp --dport
-p udp --sport
-p udp --dport
-p tcp --sport 20:80
iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT
3.ip地址
-s source
-d destination
iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP
4.mac地址
5.状态
6.其他
-i in-interface
-o out-interface
iptables -I INPUT -i ens33 -p tcp --tcp-flags SYN,RST,ACK SYN -j REJECT
ens33接口上不接收tcp三次握手的第一个包--》不允许新的连接产生了
[root@localhost ~]# iptables -A FORWARD -m mac --mac-source 00:0C:29:27:55:3F -j DROP
[root@localhost ~]# iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT
[root@localhost ~]# iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP
常见的数据包处理方式
ACCEPT:放行数据包
DROP:丢弃数据包
REJECT:拒绝数据包,给一个回复
LOG:记录日志信息,并传递给下一条规则处理 --》相当于抓包
用户自定义链名:传递给自定义链内的规则进行处理
SNAT:修改数据包的源地址信息
DNAT:修改数据包的目标地址信息
MASQUERADE 实现snat功能,不需要经常换公网ip地址
自定义链
[root@web-server ~]# iptables -t filter -N sanchuang 新建链
[root@web-server ~]# iptables -t filter -A sanchuang -p tcp --dport 22 -j ACCEPT 增加规则
[root@web-server ~]# iptables -A INPUT -p tcp --dport 22 -j sanchuang 通过INPUT链给sanchuang链导流,然后会根据sanchuang链里的规则进行匹配