前言:
当前各位老铁们对“iptables白名单规则”大概比较重视,姐妹们都需要学习一些“iptables白名单规则”的相关知识。那么小编在网上汇集了一些对于“iptables白名单规则””的相关资讯,希望朋友们能喜欢,咱们一起来了解一下吧!iptable 基础整理
iptables 参数:
--append -A chain 添加规则到链
--delete -D chain 从链里面删除规则
--delete -D chain 根据规则号删除
--insert -I chain 【rulenum】插入规则默认为第一条
--list -L list规则
--flush -F 清空所有规则
--zero -Z 清空计数器
--policy -P chain target 设置默认规则
-X 删除自定义的链
iptables -FZ 清空规则清空计数器
options:
--protocol -p proto 针对协议过滤,如‘tcp’ 协议
--source -s address 基于源地址
--destination -d address 基于目的地址
--in-interface -i input name 指定进入接口
--jump -j target 跳转
--numeric -n 数字输出地址和端口
--out-interface -o output name 指定出去接口
--table -t table 指定表 默认为 ‘filter’表
--line-numbers 显示规则号
iptables四张表5个链
1、filter表 作为主机防火墙过滤
2、nat表 作为端口、ip 映射
3、mangle表 配置路由标记,ttl、tos、mark)
4、raw表
5链
1、input 入栈
2、output 出栈
3、forward 转发
4、prerouting 路由前
5、postrouting 路由后
基本格式
iptables -t 表名 /查看/增加/替换/删除/清空 链名 匹配条件 处理动作
实例:
iptables -L -n 查看规则 = -nL
1、封22端口:
iptables -t filter -A INPUT --dport 22 -j DROP
= iptables -A INPUT --dport 22 -j DROP 默认是filter表,所以没有指定 -t filter 表
-p #指定过滤的协议
--dport #指定目的端口(用户请求的端口)
-j #对规则的具体处理方法 (ACCEPT,DROP,REJECT,SNAT/DNAT)源地址转换、目的地址转换
--sport #指定源端口
注: 删除刚才的规则
iptables -nL --line-number 显示规则的号码,刚才的命令规则行号为 1
iptables -D INPUT 1
2、禁止10.0.0.1 访问
iptables -I INPUT -p tcp -s 10.0.0.1 -i eth0 -j DROP
-I 将规则列为第一条
INPUT 链
-p tcp 协议
-s 10.0.0.1 源地址是10.0.0.1 就是从10.0.0.1 访问本机
-i eth0 指定本机接口,从eth0进入本机
-j DROP 处理方法为DROP
禁止
3、取反
iptables -A INPUT -p tcp ! -s 10.0.0.1 -i eth0 -j DROP
! 为取反
4、只允许办公网络访问服务器
iptables -I INPUT -p tcp -s 10.0.0.0/24 -i eth0 -j ACCEPT
5、封单个IP
iptables -I INPUT -p tcp -s 10.0.0.1 -j DROP
查看连接数最大的10个
netstat -an|awk '/^tcp/'|grep -i est|awk -F "[: ]+" '{print $6}'|sort|uniq -c |head -10
返回:
4 10.0.01
6、封除 10.0.0.61 以外的所以机器对本机的访问
iptables -I INPUT -p tcp ! -s 10.0.0.61 -j DROP
7、同时封多个端口
iptables -I INPUT -p tcp -m multiport --dport 21,23,24,80,3306 -j DROP
iptables -I INPUT -p tcp --dport 23:8809 -j ACCEPT 从23--8809 端口范围
8、匹配ICMP ping
iptables -A INPUT -p icmp --icmp-type 8 -j DROP 忽略ping 包
iptables -A INPUT -p icmp -s 192.168.1.0/24 --icmp-type 8 -j ACCEPT
内核封ping
net.ipv4.icmp_echo_ignore_all=0
iptables 顺序执行规则,第一条匹配就不会执行下面的
所以: -I 默认是加大第一行的
iptables -I INPUT -p icmp --icmp-type 8 -s 10.0.0.51 -j ACCEPT 允许51 ping
iptables -I INPUT -p icmp ! -s 10.0.0.1 --icmp-type 8 -j DROP 非10.0.0.1 的ping 都DROP掉
有顺序的!!!!!!!!!!!!!!!!!!!!!!!!!
匹配网络状态
-m state --state
NEW: 已经或将启动新的连接
ESTABLISHED: 已建立的连接
RELATED: 正在启动的新连接
INVALID: 非法或无法识别的
例如:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-m limit --limit n/{second/minute/hour}: 限制指定时间内允许通过的数量及并发数
例如:
iptables -I INPUT -p icmp --icmp-type 8 -m limit --limit 6/min -j DROP
--limit-burst [n] 在同一时间内允许通过的请求“n”为数字,不指定默认为5
iptables -I INPUT -s 10.0.0.0/24 -p icmp --icmp-type 8 -m limit --limit 6/min --limit-burst 2 -j ACCEPT
企业级防火墙项目
逛公园模式: 黑名单
看电影模式: 白名单
主机防火墙 ---- 白名单模式
网关 ---- 黑名单
一、各种清零
iptables -F
iptables -X
iptables -Z
二、允许自己的网段及22端口
iptables -A INPUT -s 10.0.0.0/24 -j ACCEPT
三、设置默认规则
iptables -P INPUT DROP 设置默认规则 -P
iptables -P FORWARD DROP
iptables —P OUTPUT ACCEPT
四、设置其他的规则
iptables -A INPUT -i lo -j ACCEPT 允许本地连接,否则本地都无法连通
iptables —A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT 开放80 和443端口
iptables -A INPUT -s 172.16.1.0/24 -j ACCEPT 开放内网、网段
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
注:以上操作都在内存中生效
五、保存
(Centos 7)
iptables -nL
iptables-save > /etc/sysconfig/iptables 存储到iptables 配置文件
(ubuntu 20.04 以上)
iptables-save > iptables.conf
iptables-restore < iptables.conf
六、日常维护
Centos:
修改 /etc/sysconfig/iptables配置 常用的放在前面
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT 添加到结尾 append 追加
生效
systemctl reload iptables
封掉规则要放在允许规则的上面才能生效
允许规则要放在允许规则的上面
常用规则要放在前面
防火墙规则写成脚本
#!/bin/bash
IPT=/sbin/iptables
$IPT -F
$IPT -X
$IPT -Z
#默认防火墙规则,
$IPT --policy OUTPUT ACCEPT
$IPT --policy FORWARD DROP
$IPT -P INPUT DROP
#设置本地规则
$IPT -A INPUT -i lo -j ACCEPT
#设置访问规则
$IPT -A INPUT -s 202.82.17.0/24 -p all -j ACCEPT
$IPT -A INPUT -s ..........-p all -j ACCEPT
...
#icmp 允许ping 包
$IPT -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
#其他规则
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
chkconfig iptables on
systemctl enable iptables
注: 设置前先要 iptables -P INPUT ACCEPT 先要允许INPUT 入 ,否则清空后 ssh会连不上服务器
nat做ip映射:
SNAT 源地址映射
10.0.0.3 的80 端口映射为 172.16.1.17的80端口
iptables -t nat -A PREROUTING -d 10.0.0.3 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.17:80
实现172.16.1.0/24端的主机通过124.32.54.26 外网ip共享上网
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to-source 124.32.54.26
DNAT 和 PNAT
外网访问内网 通过目的地之或者端口映射转换
iptables -t nat -A PREROUTING -i ens192 -d 192.168.200.20(网关外网地址) -p tcp --dport 22 -j DNAT --to-destination 192.168.100.10:22(内网要暴露的主机ip:port)
PNAT
iptables -t nat -A PREROUTING -i ens192 -d 192.168.200.20 -p tcp --dport 23456 -j DNAT --to-destination 192.168.100.10:22 #通过端口映射 23456 --- 22 端口
标签: #iptables白名单规则