Linux运维–iptables防火墙的简单使用与示例
目录
前言
就”firewall“而言“iptables”算的上是老古董了。
iptables 是 Linux 管理员用来设置 IPv4 数据包过滤条件和 NAT 的命令行工具。
在这里需要注意的是“iptables可以阻止所有我指定网络服务器的流量,还是可以通过 IPv6 进行的外部攻击”,有两种办法来解决:
1.用“iptables”来禁用ipv6。
2.通过ip6tables来设置规则。
好啦开始正文吧! 简单看完你还不会就再看看!实在还不会就去看官方介绍!
这里我将介绍iptables v1.4.21如何配置 Filter 表防火墙和配置 NAT 表防火墙。
一,iptabls基础命令
1.1 启动
service iptables start
如果你不是老版的linux话使用上面命令会提示使用“systemctl”命令来启动如图1
systemctl start iptables
1.2 停止
##老版
service iptables stop
##新版
systemctl stop iptables
1.3 重新启动
##老版
service iptables restart
##新版
systemctl restart iptables
1.4 重新加载启动
##新版
systemctl reload iptables
1.5 帮助命令
话说我们实在不记得怎么使用语法我就寄出帮助大法!如图2 它讲解了怎么使用和语法
iptables -h
1.6 保存
这里我们在修改规则后最后的一步操作保存。
service iptables save
##保存
iptables-save
#保存防火墙策略规则及数据包计数器信息
iptables-save -c
#仅保存防火墙策略中指定的表单内容
iptables-save -t filter
##在使用“iptables”命令中另一种运行方式:
##我们可以先查看“iptables”工具的目录如图3
##whereis 命令从英文看出他的含义是在哪?查找关联工具目录
whereis iptables
1.7 查看规则链
查看所有规则如图4:
iptables --list
##在图4我们可以看到
filter表中有三个链INPUT,OUTPUT,FORWARD,这表是用来过滤数据包的。
1.7.1 查看filter表规则链的INPUT(可以理解为“进入”规则)
iptables -t filter -L INPUT
#我们可看出图4中的INPUT链与如图5中一样,这是因为在iptables默认是filter表。
1.7.2 查看filter表规则链的OUTPUT(可以理解为“出去”规则)
iptables -t filter -L OUTPUT
1.7.3 列出nat表三条链的规则
iptables -t nat -L -n
##语法
iptables [-t tables] [-L] [-nv]
-t :后面接 table ,例如 nat 或 filter (不使用”-t“默认使用 filter表)。
-L :列出某个 table 的所有链或某个链的规则。
-n :直接显示 IP。
-v :列出更多的信息,包括通过该规则的数据包总位数、相关的网络接口等。
1.7.4 清除所有已制定的规则
iptables -F
1.7.5 删除所有使用者自定义chain
##删除fliter表中ACCOUNRT链
iptables -X ACCOUNRT
1.7.6 将所有的 chain 的计数与流量统计都清零
iptables -Z
1.7.7 删除INPUT链
假设删除第1行规则:
iptables -D INPUT 1
1.8 查看iptables是否生效
iptables -L
二、常用命令与讲解
2.1 开放80端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
service iptables save
##保存
iptables-save
2.2 开放22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
##保存
service iptables save
##保存
iptables-save
##查看配置文件可以看到如图7前面放行端口。
vim /etc/sysconfig/iptables.save
2.3 封单个IP
iptables -I INPUT -s 192.168.1.199 -j DROP
2.4 替换指定的规则
假设我需要替换filter表中的第2行规则
iptables -R INPUT 2 -s 192.168.1.188 -j REJECT
2.5 网卡规则
这里我以eth0网卡为例拒绝172.20.10.3主机访问我的eth0网卡
iptables -A INPUT -s 172.20.10.3 -i eth0 -j REJECT
这里A主机(172.20.10.3)访问B主机(192.168.179.143)在没有设置规则情况下A主机pingB主机如图8可以正常ping。
B主机开始设置规则:
iptables -A INPUT -s 172.20.10.3 -i eth0 -j REJECT
##保存
iptables-save
2.6 封单个段IP
iptables -I INPUT -s 192.168.1.0/24 -j DROP
2.7 允许特定的IP访问
iptables -I INPUT -s 192.168.1.199 -p TCP –dport 3389 -j ACCEPT
这里允许特定192.168.1.199IP访问3389端口
#语法
iptables [-AI chain] [-io interface] [-p tcp,udp] [-s 来源 IP] [–sport 端口范围] [-d 目标 IP] [–dport 端口范围] -j [ACCEPT,DROP,REJECT]
-A, --append :用来添加“INPUT或者“OUTPUT”规则
-I : 表示在指定的链中插入一条规则,可以指定编号;
-i: 数据包从哪个网卡进入 如如:-i eth0 表示eth0网卡
-o, --out-interface : 数据包从哪个网卡出去
–sport, --source-port :sport表示来源端口
–dport, --destination-port :dport表示目的端口
–sport:限制来源的端口号
–dport:限制目标的端口号
-s : 表示能访问的ip 如“-s 192.168.1.199” 就是这个IP能进入
-d :目标 IP
-j :如-j ACCEPT表示接受(进入),-j REJECT表示拒绝访问并回送一个数据包,
-j DROP 拒绝所有人访问服务器
-R :替换指定的规则
2.8 NAT规则
2.8.1 端口射映
这里我们把本地8080端口射映出去变成8081端口
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8080 -j DNAT --to-destination 127.0.0.1:8081
iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 8080 -j SNAT --to-source 127.0.0.1
2.8.2 删除nat规则
ptables -t nat -D POSTROUTING 1
2.9 规则的导出、导入(备份与还原)
有时候需要把iptables规则导出在其他主机使用
这里导出在我的/home/demo目录里(导出/etc/sysconfig/iptables文件也是一样)
iptables-save > /home/demo/iptables_backup.txt
在还原到其他同主机我们先通过scp 复制到主机“/home/demo2”目录上
iptables-restore < /home/demo2/iptables_backup.txt
再重启即可生效
systemctl restart iptables