iptables防火墙

您所在的位置:网站首页 麒麟操作系统关闭防火墙命令 iptables防火墙

iptables防火墙

2024-07-12 07:27| 来源: 网络整理| 查看: 265

版权声明:原创作品,谢绝转载!否则将追究法律责任。 ————— 作者:kirin 1.iptables 执行过程 1.防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后 进行过滤的。 2. 如果匹配成功规则,即明确表示是拒绝(DROP)还是接收(ACCEPT),数 据包就不再向下匹配新的规则。 3. 如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。 4. 防火墙的默认规则是所有规则都匹配完才会匹配的 2.表与链 1 简介 iptables 是 4表伍链 4表: filter 表 nat表 raw表 mangle表 伍链: INPUT OUTPUT FORWARD PREROUTING POSTROUTING pre.... 之前 post .....之后 2 每个表说明 2.1filter表 实现防火墙功能: 屏蔽或准许 端口 ip 强调:主要和主机自身相关,真正负责主机防火墙功能的 (过滤流入流出主机的数据包) filter表示iptables默认 使用的表,这个表定义了三个链(chains) 企业工作场 景:主机防火墙 INPUT链:负责过滤所有目标地址是本机地址的数据包 通俗来说: 就是过滤进入主机的数据包 (能否让数据包进入服务器) 2.2nat表 实现nat功能 实现共享上网(内网服务器上外网) 端口映射和ip映射 nat:负责网络地址转换的,即来源与目的IP地址和port 的转换。 应用:和主机本身无关,一般用于局域网共享上网 或者特殊的端口转换服务相关。 工作场景: 1. 用于企业路由(zebra)或网关(iptables),共 享上网(POSTROUTING) 2. 做内部外部IP地址一对一映射(dmz),硬件防 火墙映射IP到内部服务器,ftp服务 (PREROUTING) 3. WEB,单个端口的映射,直接映射80端口 (PREROUTING) 这个表定义了3个链,nat功能 相当于网络的acl控制。和网络交换机acl类似 PREROUTING链:在数据包到达防火墙时,进行路由判断之前执行的规则,作用是改变数据包的目的地址、目的端口等就是收信时,根据规则重写收件人的地址。例如:把公网IP:xxx.xxx.xxx.xxx映射到局域网的 xx.xx.xx.xx服务器上。 如果是web服务,可以报80转换为局域网的服务器 9000端口上 POSTROUTING链:在数据包离开防火墙时进行路由判断之后执行的规 则,作用改变数据包的源地址,源端口等。 写好发件人的地址,要让家人回信时能够有地址可 回。 例如。默认笔记本和虚拟机都是局域网地址,在出 网的时候被路由器将源地址改为了公网地址。 生产应用:局域网共享上网。 3.环境准备及相关命令 1.环境准备 m01 10.0.0.61;172.16.1.61 web01 10.0.0.7 172.16.1.7 web02 10.0.0.8 172.16.1.8 [root@m01 ~]# yum install -y iptables-services [root@m01 ~]# rpm -ql iptables-services /etc/sysconfig/ip6tables /etc/sysconfig/iptables #防火 墙的配置文件 /usr/lib/systemd/system/ip6tables.service /usr/lib/systemd/system/iptables.service#防火 墙服务配置文件(命令) [root@m01 ~]# rpm -ql iptables /usr/sbin/iptables #iptables 命令 添加/删除/查 看 规则(4表伍链) /usr/sbin/iptables-save #iptables规则 输出(保存) /usr/sbin/iptables-restore # 恢复

#防火墙相关模块 加载到内核中(临时)

[root@m01 ~]# modprobe ip_tables [root@m01 ~]# modprobe iptable_filter [root@m01 ~]# modprobe iptable_nat [root@m01 ~]# modprobe ip_conntrack [root@m01 ~]# modprobe ip_conntrack_ftp [root@m01 ~]# modprobe ip_nat_ftp [root@m01 ~]# modprobe ipt_state

#永久

[root@m01 ~]# cat >>/etc/rc.local modprobe iptable_filter > modprobe iptable_nat > modprobe ip_conntrack > modprobe ip_conntrack_ftp > modprobe ip_nat_ftp > modprobe ipt_state > EOF

检查是否加入

[root@m01 ~]# lsmod |egrep 'filter|nat|ipt' nf_nat_ftp 12809 0 nf_conntrack_ftp 18478 1 nf_nat_ftp iptable_nat 12875 0 nf_nat_ipv4 14115 1 iptable_nat nf_nat 26583 2 nf_nat_ftp,nf_nat_ipv4 nf_conntrack 139264 6 nf_nat_ftp,nf_nat,xt_state,nf_nat_ipv4,nf_conntrack_ftp,nf_conntrack_ipv4 iptable_filter 12810 0 ip_tables 27126 2 iptable_filter,iptable_nat libcrc32c 12644 3 xfs,nf_nat,nf_conntrack

关闭自带防火墙并启动iptables

[root@m01 ~]# systemctl stop firewalld [root@m01 ~]# systemctl disable firewalld [root@m01 ~]# systemctl start iptables.service [root@m01 ~]# systemctl enable iptables.service Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service.

#查看filter表中的规则 ,默认查看的是filter表

[root@m01 ~]# iptables -nL

#查看指定表中的规则

[root@m01 ~]# iptables -t nat -nL 2.iptables命令参数 参数 含义 -L 显示表中的所有规则 -n 不要把端口 或ip反向解析为名字 -t 指定表 不指定默认是filter表 -A 追加 加入准许类规则 使用-A -I insert 把规则加在链的第1条 拒绝类规则放在所有 规则最上面 拒绝类 -I -D delete 删除 -D INPUT 1 -p 协议 protocal tcp/udp/icmp/all –dport 目标端口 dest destination 指定端口 加上协议 -p tcp –sport 源端口 source 源 -s –source 源ip -d –destination 目标ip -m 指定模块 multiport -i input 输入的时候 从哪个网卡进来 -o ouput 输出的时候 从哪个网卡出去 -j 满足条件后的动作:DROP/ACCEPT/REJECT DROP REJECT拒绝 DROP 把数据丢掉 不会返回信息给用户 REJECT 拒绝 返回拒绝信息 -F 清除所有规则,不会处理默认的规则 -X 删除用户自定义的链 -Z 链的计数器清零(数据包计数器与数据包字节计数器) 3 配置filter表规则 3.1正式配置之前先清空规则 [root@m01 ~]# iptables -F [root@m01 ~]# iptables -X [root@m01 ~]# iptables -Z [root@m01 ~]# iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 3.2禁止访问22端口 [root@m01 ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j DROP ###拒绝用户访问22端口(危险,一会要跑机房) #此时发现Xshell已经无法进行操作了 #进入机房 #查看规则并加上序号 [root@m01 ~]# iptables -t filter -nL --line-number #删除规则 iptables -t filter -D INPUT 1 #根据序号删除 3.3 封ip 屏蔽某个ip

#拒绝10.0.0.7访问     

[root@m01 ~]# iptables -t filter -I INPUT -s 10.0.0.7 -j DROP [root@m01 ~]# iptables -t filter -nL --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 DROP all -- 10.0.0.7 0.0.0.0/0 Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination

#拒绝某个网段的访问

[root@m01 ~]# iptables -I INPUT -s 172.16.1.0/24 -j DROP [root@m01 ~]# iptables -t filter -nL --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 DROP all -- 172.16.1.0/24 0.0.0.0/0 2 DROP all -- 10.0.0.7 0.0.0.0/0 Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination

#禁止网段连入(禁止10.0.0.0/24网段访问 8888端口)

[root@m01 ~]# iptables -I INPUT -s 10.0.0.0/24 -p tcp --dport 8080 -j DROP [root@m01 ~]# iptables -t filter -nL --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 DROP tcp -- 10.0.0.0/24 0.0.0.0/0 tcp dpt:8080 2 DROP all -- 172.16.1.0/24 0.0.0.0/0 3 DROP all -- 10.0.0.7 0.0.0.0/0 Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination 3.4只允许指定网段连入(允许172.16.1.0网段)

#方法1: 利用 ! 进行排除

[root@m01 ~]# iptables -I INPUT ! -s 172.16.1.0/24 -j DROP

#方法2: 修改链默认规则 修改为拒绝 添加准许

[root@m01 ~]# iptables -P INPUT DROP [root@m01 ~]# iptables -nL Chain INPUT (policy DROP)####已经变为拒绝了 target prot opt source destination ACCEPT all -- 10.0.0.0/24 0.0.0.0/0 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination #测试完成后 修改回去 [root@m01 ~]# iptables -P INPUT ACCEPT [root@m01 ~]# iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- 10.0.0.0/24 0.0.0.0/0 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 3.5 指定多个端口

#指定多个端口

-m multiport -p tcp --dport 80,443 [root@m01 ~]# iptables -t filter -A INPUT -m multiport -p tcp --dport 80,443 -j ACCEPT [root@m01 ~]# iptables -nL 3.6匹配ICMP类型

###通过防火墙设置

[root@m01 ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP [root@m01 ~]# iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination DROP icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 8 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination

###通过内核参数设置

[root@m01 ~]# echo "net.ipv4.icmp_echo_ignore_all = 1" >> /etc/sysctl.conf [root@m01 ~]# sysctl -p net.ipv4.icmp_echo_ignore_all = 1 [root@m01 ~]# cat /proc/sys/net/ipv4/icmp_echo_ignore_all 1 3.7 限制并发及速率

-m limit 限制模块

-m limit –limit 10/minute     #每分钟只能有10个数据包 每6秒 生成

iptables -I INPUT  -p icmp  -m limit –limit 10/minute    –limit-burst 5   -j ACCEPT

3.8 防火墙规则的保存与恢复

iptables-save 默认输出到屏幕

iptables-restore 加上文件

写入到/etc/sysconfig/iptables

####保存

[root@m01 ~]# iptables-save >/etc/sysconfig/iptables [root@m01 ~]# cat /etc/sysconfig/iptables # Generated by iptables-save v1.4.21 on Fri May 28 16:52:58 2021 *nat :PREROUTING ACCEPT [55:8594] :INPUT ACCEPT [27:6329] :OUTPUT ACCEPT [113:7357] :POSTROUTING ACCEPT [113:7357] COMMIT # Completed on Fri May 28 16:52:58 2021 # Generated by iptables-save v1.4.21 on Fri May 28 16:52:58 2021 *filter :INPUT ACCEPT [30:2576] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [364:46616] -A INPUT -s 10.0.0.0/24 -j ACCEPT -A INPUT -s 10.0.0.0/24 -p icmp -m icmp --icmp-type 8 -j DROP COMMIT # Completed on Fri May 28 16:52:58 2021

###删除后的恢复

[root@m01 ~]# iptables -D INPUT 1 [root@m01 ~]# iptables -D INPUT 1 [root@m01 ~]# iptables -D INPUT 1 iptables: Index of deletion too big. [root@m01 ~]# iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination [root@m01 ~]# iptables-restore < /etc/sysconfig/iptables [root@m01 ~]# iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- 10.0.0.0/24 0.0.0.0/0 DROP icmp -- 10.0.0.0/24 0.0.0.0/0 icmptype 8 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 4. nat表规则 4.1 实现共享上网

##防火墙配置

[root@m01 ~]# iptables -t nat -A POSTROUTING -s 172.16.1.7 -j SNAT --to-source 10.0.0.61 [root@m01 ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf [root@m01 ~]# sysctl -p net.ipv4.icmp_echo_ignore_all = 1 net.ipv4.ip_forward = 1

##web端配置

[root@web01 ~]# echo GATEWAY=172.16.1.61 >> /etc/sysconfig/network-scripts/ifcfg-eth1 [root@web01 ~]# ifdown eth1 && ifup eth1 4.2 实现端口转发

##防火墙配置

[root@mb01 ~]# iptables -t nat -I PREROUTING -d 10.0.0.61 -p tcp --dport 9000 -j DNAT --to-destination 172.16.1.7:22 [root@mb01 ~]# sysctl -p net.ipv4.icmp_echo_ignore_all = 1 net.ipv4.ip_forward = 1 ###然后用xshell连接测试一下吧

 

本文来自博客园,作者:kirin(麒麟),转载请注明原文链接:https://www.cnblogs.com/kirin365/articles/16137202.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3