iptables 基础

#iptables中有4个表5个链,分别为
1、filter(数据过滤表)INPUT、FORWARD、OUTPUT
2、nat(地址转换表)PREROUTING、POSTROUTING、OUTPUT
3、mangle(包标记表)PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
4、raw表(状态跟踪表)PREROUTING、OUTPUT
INPUT链(入战规则)
OUTPUT链(出战规则)
FORWARD链(转发规则)
PREROUTING链(路由前规则)
POSTROUTING链(路由后规则)

iptables [-t 表名] 选项 [链名] [条件] [-j 目标操作]
iptables -t filter -I INPUT -p icmp -j REJECT
iptables -F #清空所有规则
iptables -t filter -I INPUT -p icmp -j ACCEPT
iptables -I INPUT -p icmp -j REJECT
#注意事项与规律:
#可以不指定表,默认为filter表
#可以不指定链,默认为对应表的所有链(只有查的时候有用)
#按顺序匹配,匹配即停止,如果没有找到匹配条件,则执行防火墙默认规则
#选项/链名/目标操作用大写字母,其余都小写
########################################################################
#目标操作:
#ACCEPT:允许通过/放行
#DROP:直接丢弃,不给出任何回应
#REJECT:拒绝通过,必要时会给出提示
#LOG:记录日志,然后传给下一条规则
table001.png

#查看防火墙规则
iptables -t 表名 -nL INPUT #仅查看INPUT链的规则
iptables -L INPUT --line-numbers #查看规则,显示行号

#删除防火墙规则
iptables -D INPUT 3
#删除filter表中INPUT链的第3条规则
iptables -nL INPUT #查看规则,确认是否删除
iptables -F
#清空filter表中所有链的防火墙规则
iptables -t nat -F
#清空nat表中所有链的防火墙规则
iptables -t mangle -F
#清空mangle表中所有链的防火墙规则
iptables -t raw -F
#清空raw表中所有链的防火墙规则

#设置防火墙默认规则
ptables -t filter -P INPUT DROP #设置INPUT链默认规则为DROP(不能随便设置,否则会断开连接)
iptables -nL
iptables -t filter -P INPUT ACCEPT #设置INPUT链默认规则为ACCEPT

#iptables防火墙规则的条件
iptables防火墙可以根据很多规则进行过滤行为
table002.png
iptables -I INPUT -p tcp --dport 80 -j REJECT
iptables -I INPUT -s 192.168.2.100 -j REJECT
iptables -I INPUT -d 192.168.2.5 -p tcp --dport 80 -j REJECT
iptables -I INPUT -i eth0 -p tcp --dport 80 -j REJECT
iptables -A INPUT -s 192.168.2.0/24 -j DROP
#丢弃192.168.2.0/24网络中所有主机发送给本机的所有数据包
iptables -A INPUT -s 114.212.33.12 -p tcp --dport 22 -j REJECT
#拒绝114.212.33.12使用tcp协议远程连接本机ssh(22端口)

#禁止其他主机ping本机,允许本机ping其他主机
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
#仅禁止入站的ping请求,不拒绝入站的ping回应包

#根据mac地址拒绝访问
nmap -n -sP 对方IP地址 #查看对方mac地址
iptables -A INPUT -p tcp --dport 22 -m mac --mac-source mac地址 -j DROP
#拒绝52:54:00:00:00:0b这台主机远程本机

#网络型防火墙
iptables -I FORWARD -s 192.168.4.10 -p tcp --dport 80 -j DROP #禁止192.168.4.10以tcp协议访问端口80,把规则做在路由器上,转发表上,保护后端集群

#基于多端口设置过滤
iptables -A INPUT -p tcp -m multiport --dports 20,25,80,110,143,16501:16800 -j ACCEPT
#一次性开启20,25,80,110,143,16501到16800所有的端口

#根据IP地址范围设置规则
iptables -A INPUT -p tcp --dport 22 -m iprange --src-range 192.168.4.10-192.168.4.20 -j ACCEPT
#允许从 192.168.4.10-192.168.4.20 主机ssh远程登录本机

未完待续......