iptables 是nuix/linux 系统自带的优秀且完全免费的基于包过滤的防火墙工具、它的功能十分强大、使用非常灵活、可以对流入、流出及流经服务器的数据包进行精细的控制。特别是它可以在一台非常低配置下跑的非常好。提供400台机器的办公上网共享服务丝毫不逊色数万RMB企业级专业路由器防火墙。
prerouting、input、forwrad、output、postrouting
filter、nat、mangle表
mangle->nat->filter
据指定的匹配条件来尝试匹配每个流经此处的报文,一旦匹配成功,则由规则后面指定的处理动作进行处理;
命令中常用的参数
-P 设置默认策略:iptables -P INPUT (DROP|ACCEPT)
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址IP/MASK,加叹号"!"表示除这个IP外。
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如tcp,udp,icmp
--dport num 匹配目标端口号
--sport num 匹配来源端口号
注:如果没有指定表就是默认为filter表
# 丢弃来自1.0.98.1的包 iptables -A INPUT -s "1.0.98.1" -j DROP # 阻止来自eth0网卡的tcp的包 iptables -A INPUT -i eth0 -p tcp -s "1.0.98.1" -j DROP
# 允许所有来自外部的SSH连接请求,即只允许进入eth0接口,并且目标端口为22的数据包 iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT -j DROP —dport 90
# 删除上面的规则 iptables -D INPUT -s "1.0.98.1" -j DROP iptables -D INPUT -i eth0 -p tcp -s "1.0.98.1" -j DROP iptables -D INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -D OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT iptables -t filter -D INPUT -j DROP —dport 90
想要看其他常用命令:https://www.linuxprobe.com/25-iptables-common-examples.html
参考文档:
https://www.zsythink.net/archives/1199
https://www.cnblogs.com/liang2580/articles/8400140.html