龙空技术网

iptables 整理

北京老头做运维 664

前言:

当前各位老铁们对“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白名单规则