Linux iptables 防火墙基本管理

iptables基本管理

内容目录:
内容一:使用iptables就必须要关闭firewalld
1.1 关闭firewalld,启动iptables服务
1.2 安装iptables-services并启动服务

内容二:iptables的四表五链
2.1 iptables的四表
2.2 iptbales的五链

内容三:iptables命令的基本使用方法
3.1 iptables语法格式
3.2 iptables基本使用的案例
3.3 iptables语法需要注意的事项和规律
3.3.1 可以不指定表,默认为filter表
3.3.2 可以不指定链,默认为对应表的所有链
3.3.3 如果没有找到匹配条件,则执行防火墙默认规则
3.3.4 选项/链名/目标操作用大写字母,其余都小写
3.4 iptables对于目标的操作
3.4.1 ACCEPT:允许通过/放行
3.4.2 DROP:直接丢弃,不给出任何回应
3.4.3 REJECT:拒绝通过,必要时会给出提示
3.4.4 LOG:记录日志,然后传给下一条规则

内容四:iptables命令的常用选项

内容五:iptables命令的使用案例

内容六:查看iptables防火墙规则

内容七:filter过滤和转发控制(iptables的主机防火墙和网络防火墙设置)
7.1 iptables的防火墙分为主机型防火墙和网络型防火墙
7.2 iptables创建常用主机防火墙规则以及网络防火墙规则可以实现的目标
7.2.1 针对Linux主机进行出站、入站控制
7.2.2 利用ip_forward机制实现Linux路由/网关功能
7.2.3 在Linux网关上实现数据包转发访问控制
7.3 iptables防火墙的过滤条件
7.4 iptables主机型防火墙案例
7.5 iptables网络型防火墙案例
7.5.1 使用网络型防火墙之前要先开启路由转发功能
7.5.1.1 Linux实现路由转发功能的方式介绍
7.5.1.2 Linux开启临时路由转发功能的方法
7.5.1.3 Linux永久开启路由转发功能的方法
7.5.2 iptables网络型防火墙案例之禁止某一个ip访问某一个端口
7.5.3 iptables网络型防火墙案例之禁止ping

内容八:iptables防火墙扩展规则
8.1 iptables防火墙扩展规则可以实现的功能只要有三个
8.1.1 根据MAC地址封锁主机
8.1.2 在一条规则中开放多个TCP服务
8.1.3 根据IP范围设置封锁规则
8.2 iptables防火墙扩展规则案例之根据MAC地址过滤ssh端口
8.2.1 先要查看对方的网卡的MAC地址
8.2.2 在iptables扩展防火墙中添加与Mac地址的规则
8.3 iptables防火墙扩展规则案例之一次性过滤多个端口
8.4 iptables防火墙扩展规则案例之根据IP地址范围设置规则

内容九:使用iptables通过SNAT实现共享上网
9.1 实现SNAT的主机需要开启路由转发
9.2 设置防火墙规则,实现SNAT地址转换
9.2.1 将一个网段中的ip都伪装成另一个固定的ip访问外网
9.2.2 将一个网段中的ip都伪装成另外几个固定的ip访问外网

内容十:所有的iptables配置都是临时的,要让他永久生效需要添加以下命令

内容详细:
内容一:使用iptables就必须要关闭firewalld

1.1 关闭firewalld,启动iptables服务
# systemctl stop firewalld.service
# systemctl disable firewalld.service


1.2 安装iptables-services并启动服务
# yum -y install iptables-services
# systemctl start iptables.service

内容二:iptables的四表五链
2.1 iptables的四表
iptables默认有4个表(注意这些一定要区分大小写)
nat表(地址转换表)
filter表(数据过滤表)
raw表(状态跟踪表)
mangle表(包标记表)

2.2 iptbales的五链
iptables有5链 (注意这些一定要区分大小写)
INPUT链(入站规则)
OUTPUT链(出站规则)
FORWARD链(转发规则)
PREROUTING链(路由前规则)
POSTROUTING链(路由后规则)

内容三:iptables命令的基本使用方法
3.1 iptables语法格式
# iptables [-t 表明] 选项 [链名] [条件] [-j 目标操作]

3.2 iptables基本使用的案例
# iptables -t filter -I INPUT -p icmp -j ACCEPT
# iptables -I INPUT -p icmp -j REJECT

3.3 iptables语法需要注意的事项和规律
3.3.1 可以不指定表,默认为filter表
3.3.2 可以不指定链,默认为对应表的所有链
3.3.3 如果没有找到匹配条件,则执行防火墙默认规则
3.3.4 选项/链名/目标操作用大写字母,其余都小写

3.4 iptables对于目标的操作
3.4.1 ACCEPT:允许通过/放行
3.4.2 DROP:直接丢弃,不给出任何回应
3.4.3 REJECT:拒绝通过,必要时会给出提示
3.4.4 LOG:记录日志,然后传给下一条规则

内容四:iptables命令的常用选项
类别       选项                   描述

添加规则    -A            追加一条防火墙规则至链的末尾位置

添加规则    -I            插入一条防火墙规则至链的开头

查看规则    -L            查看iptables所有规则

查看规则    -n            以数字形式显示地址、端口等信息

查看规则   --line-numbers 查看规则时,显示规则等行好

删除规则    -D            删除链内指定序号(或内容)等一条规则

删除规则    -F            清空所有的规则

默认规则    -P            为指定的链设置默认规则

内容五:iptables命令的使用案例
# iptables  -t  filter  -A  INPUT  -p tcp  -j  ACCEPT
(在filter表中的INPUT链的末尾,添加一条允许任何人使用TCP协议访问本机的协议)
# iptables  -I INPUT -p udp -j ACCEPT
(在filter表中的INPUT链的开头,添加一条允许任何人使用UDP协议访问本机的协议)
# iptables -I INPUT 2 -p icmp -j ACCEPT
(插入规则至filter表中的INPUT链的第2行,允许任何人使用ICMP协议访问本机)

内容六:查看iptables防火墙规则
# iptables -nL INPUT #仅查看INPUT链的规则
,不显示行号
target proc  opt    source     destination

ACCEPT udp    --    0.0.0.0/0    0.0.0.0/0

ACCEPT udp    --    0.0.0.0/0    0.0.0.0/0

ACCEPT icmp   --    0.0.0.0/0    0.0.0.0/0

ACCEPT tcp    --    0.0.0.0/0    0.0.0.0/0

# iptables  -L  INPUT  --line-numbers  #查看规则,显示行号
num    target    prot opt  source      destination
1    
1      ACCEPT    udp  --   anywhere     anywhere
2    
2      ACCEPT    icmp --   anywhere     anywhere
3    
3      ACCEPT    tcp  --   anywhere     anywhere

内容七:filter过滤和转发控制(iptables的主机防火墙和网络防火墙设置)
7.1 iptables的防火墙分为主机型防火墙和网络型防火墙
7.2 iptables创建常用主机防火墙规则以及网络防火墙规则可以实现的目标
7.2.1 针对Linux主机进行出站、入站控制
7.2.2 利用ip_forward机制实现Linux路由/网关功能
7.2.3 在Linux网关上实现数据包转发访问控制

7.3 iptables防火墙的过滤条件
类别      选项          用法
通用匹配  协议匹配       -p 协议名称
通用匹配  地址匹配       -s 源地址、-d 目标地址
通用匹配  接口匹配       -i 接受数据的网卡、-o 发送数据的网卡
隐含匹配  端口匹配       --sport 源端口号、--dport 目标端口号
隐含匹配  ICMP 类型匹配  --icmp-type ICMP 类型

7.4 iptables主机型防火墙案例
# iptables -I INPUT -p tcp --dport 80 -j REJECT
# iptables -I INPUT -s 192.168.1.100 -j REJECT
# iptables -I INPUT -d 192.168.1.5 -p tcp --dport 80 -j REJECT
# iptables -I INPUT -i eth0 -p tcp --dport 80 -j REJECT
# iptables -A  INPUT -s 192.168.1.100 -j DROP #丢弃192.168.1.100发给本机的所有数据包
# iptables -A  INPUT -s 192.168.1.0/24 -j DROP #丢弃192.168.1.0/24网络中所有主机发送给本机的所有数据包
# iptables -A  INPUT -s 114.212.11.13 -p tcp --dport 22 -j  REJECT #拒绝114.212.11.13使用tcp协议远程连接本机ssh(22端口)

7.5 iptables网络型防火墙案例
7.5.1 使用网络型防火墙之前要先开启路由转发功能
7.5.1.1 Linux实现路由转发功能的方式介绍
Linux内核默认支持软路由功能,通过修改内核参数即可开启或关闭路由转发功能

7.5.1.2 Linux开启临时路由转发功能的方法
(此种方法计算机重启后无效)
# echo 0 > /proc/sys/net/ipv4/ip_forward #关闭路由转发
# echo 1 > /proc/sys/net/ipv4/ip_forward #开启路由转发

7.5.1.3 Linux永久开启路由转发功能的方法
(修改/etc/sysctl.conf配置文件,可以实现永久有效规则)
# echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf

7.5.2 iptables网络型防火墙案例之禁止某一个ip访问某一个端口
# iptables -I FORWARD -s 192.168.4.100 -p tcp --dport 80 -j DROP

7.5.3 iptables网络型防火墙案例之禁止ping
# iptables -I INPUT -p icmp -j DROP #这样自己既不能ping别人,别人也不能ping自己

# iptables  -A  INPUT  -p icmp --icmp-type echo-request  -j  DROP #仅禁止入站的ping请求,不拒绝入站的ping回应包,这样自己可以ping别人,别人不能ping自己

# iptables -p icmp --help #关于ICMP的类型,可以参考help帮助,参考命令如下

内容八:iptables防火墙扩展规则
8.1 iptables防火墙扩展规则可以实现的功能只要有三个
8.1.1 根据MAC地址封锁主机
8.1.2 在一条规则中开放多个TCP服务
8.1.3 根据IP范围设置封锁规则

8.2 iptables防火墙扩展规则案例之根据MAC地址过滤ssh端口
8.2.1 先要查看对方的网卡的MAC地址
(在要被防火墙禁止的主机上操作)
# ip link show eth0 #查看对方的MAC地址
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 
link/ether 52:54:00:00:00:0b brd ff:ff:ff:ff:ff:ff

8.2.2 在iptables扩展防火墙中添加与Mac地址的规则
# iptables -A INPUT -p tcp --dport 22 -m mac --mac-source 52:54:00:00:00:0b -j DROP

8.3 iptables防火墙扩展规则案例之一次性过滤多个端口
# iptables -A INPUT -p tcp -m multiport --dports 20:22,25,80,110,143,16501:16800 -j ACCEPT
(多端口限制还可以通过限制多个源端口的方式实现,但因为源端口不固定,一般不会使用。限制多个源端口的参数是--sports)

8.4 iptables防火墙扩展规则案例之根据IP地址范围设置规则
# iptables -A INPUT -p tcp --dport 22 -m iprange --src-range 192.168.1.10-192.168.1.20 -j ACCEPT #允许从 192.168.1.10-192.168.1.20登录
(注意,这里也可以限制多个目标IP的范围,参数是--dst-range,用法与--src-range一致)

# iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j DROP #禁止从 192.168.1.0/24 网段其他的主机登录

内容九:使用iptables通过SNAT实现共享上网
9.1 实现SNAT的主机需要开启路由转发
# echo 1 > /proc/sys/net/ipv4/ip_forward #开启路由转发

9.2 设置防火墙规则,实现SNAT地址转换
9.2.1 将一个网段中的ip都伪装成另一个固定的ip访问外网
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j SNAT --to-source 192.168.2.5
(这样会让内网192.168.1.0网段中的所有ip都伪装成192.168.2.5并访问外网的80端口)

9.2.2 将一个网段中的ip都伪装成另外几个固定的ip访问外网
# iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -p tcp --dport 80 -j MASQUERADE
内容十:所有的iptables配置都是临时的,要让他永久生效需要添加以下命令
# service iptables save