linux下iptables基本配置与地址伪装 - Go语言中文社区

linux下iptables基本配置与地址伪装


##################1.iptables简述###############################################

iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的”安全框架”中,这个”安全框架”才是真正的防 火墙,这个框架的名字叫netfilter. 

IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。 
防火墙在做信息包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的信 息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 信息包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。 

netfilter才是防火墙真正的安全框架(framework),netfilter位于内核空间。 iptables其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架。 
netfilter/iptables(下文中简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案, 完成封包过滤、封包重定向和网络地址转换(NAT)等功能。 
Netfilter是Linux操作系统核心层内部的一个数据包处理模块,它具有如下功能: 网络地址转换(Network Address Translate) 数据包内容修改 以及数据包过滤的防火墙功能 
所以说,虽然我们使用service iptables start启动iptables”服务”,但是其实准确的来说,iptables并没有一个守护进程,所以并不能算是真正意义上的服务,而应该算是内核提供的功能。


               

###############################2.iptables基本命令##################################

iptables                         -nL查看火墙信息 
                                       -F 刷新策略,临时清空表的信息 
                                       -t 指定操作的表 
                                       -P 默认规则 
                                       -A 自己添加的规则 (从上到下依次读取策略,上面的满足了,就不读取下面的 )
                                       -I 插入,可以指定添加所在位置 
                                       -R 修改策略 
                                       -n 表示不做解析 
                                       -L 查表的策略信息 
                                       -p 协议 
                                       -D 删除链上的制定规则 
                                       -N 自动以添加链名 
                                       -E 修改规则链名称 
                                       -X 删除自定义链

一·iptables的开启服务

[root@localhost ~]# systemctl stop firewalld   ##关闭火墙
[root@localhost ~]# systemctl disable firewalld    ##开机自动关闭
[root@localhost ~]# systemctl start iptables.service    ##开启iptables服务
[root@localhost ~]# systemctl enable iptables.service     ##开机自动开启

         

二·iptables的基本命令

[root@localhost ~]# iptables -nL      ##列出所有策略
[root@localhost ~]# iptables -F       ##清空所有策略
[root@localhost ~]# iptables -nL      ##再次列出
[root@localhost ~]# service iptables save    ##保存规则信息
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]    ##保存在/etc/sysconfig/iptables  文件中
[root@localhost ~]# cat /etc/sysconfig/iptables                        ##查看iptables配置文件




[root@localhost ~]# iptables -t mangle -nL    ##查看mangle表策略
[root@localhost ~]# iptables -t nat -nL       ##查看nat表策略
[root@localhost ~]# systemctl start httpd    ##开启服务
[root@localhost ~]# iptables -P INPUT ACCEPT    #将访问设置为接受模式
[root@localhost ~]# iptables -nL   ##列出


测试:所有主机浏览器都可以看到httpd的测试浏览页面 
在真机上网页浏览172.25.254.128 
在虚拟机上网页浏览172.25.254.128 

[root@localhost Desktop]# iptables -t filter -nL  查看filter表策略
[root@localhost Desktop]#iptables -t nat -nL    查看nat表策略
[root@localhoat Desktop]#iptables -t mangle -nL  查看mangle表策略
[root@localhoat Desktop]# iptables -P INPUT DROP   设置为丢弃状态
[root@localhoat Desktop]# iptables -nL

当设置为DROP状态的时候系统是处于丢弃状态,一直转圈却打不开网页,因为丢弃状态没有回显。

默认添加访问http为拒绝模式
[root@node1 Desktop]# iptables -A INPUT -p tcp --dport 80 -j REJECT  #默认添加访问httpd为拒绝模式
[root@node1 Desktop]# iptables -nL  #查看已经添加规则
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  


测试:所有主机都访问不到服务端http 



[root@localhost Desktop]# iptables -N westos  添加一行
[root@localhost Desktop]# iptables -nL  查看策略多出来一行
[root@localhost Desktop]# iptables -E westos WESTOS  更改名字为大写
[root@desktop Desktop]# iptables -nL  查看策略
[root@desktop Desktop]# iptables -X WESTOS  删除WESTOS表

三.iptables的基本常用配置

(1)指定添加内容
[root@node1 Desktop]# iptables -A INPUT -s 172.25.254.69 -p tcp --dport 80 -j ACCEPT 
#默认指定添加172.25.254.69主机可以访问到本机httpd
[root@node1 Desktop]# iptables -nL  #查看指定添加的规则
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 reject-with icmp-port-unreachable
ACCEPT     tcp  --  172.25.254.69        0.0.0.0/0            tcp dpt:80

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@node1 Desktop]# iptables -D INPUT 2  
#因为读取时是从第一条开始读取,当第一条满足时不再读取第二条规则,所以删除第二条规则,将其插入到第一条,这样172.25.254.69主机就可以访问到本机httpd
[root@node1 Desktop]# iptables -I INPUT 1 -s 172.25.254.69 -p tcp --dport 80 -j ACCEPT  #指定在第一行添加指定ip的主机可以访问httpd
[root@node1 Desktop]# iptables -nL  #查看已经添加
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  172.25.254.69        0.0.0.0/0            tcp dpt:80
REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination      

测试:ip为172.25.254.69的主机可以访问到http,其他主机不能访问 


(2)修改内容
[root@node1 Desktop]# iptables -nL  #查看规则
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  172.25.254.69        0.0.0.0/0            tcp dpt:80
REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@node1 Desktop]# iptables -R INPUT 2 -s 172.25.254.11 -p tcp --dport 80 -j ACCEPT   
#指定修改表的第二行内容
[root@node1 Desktop]# iptables -nL  #查看规则已经将第二行内容修改
Chain INPUT (policy ACCEPT) 
target     prot opt source               destination         
ACCEPT     tcp  --  172.25.254.69        0.0.0.0/0            tcp dpt:80
ACCEPT     tcp  --  172.25.254.11        0.0.0.0/0            tcp dpt:80

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination    

对第一次访问的请求读取允许连接的策略,当第二次访问或者之后访问的直接接受请求,不读取允许连接的策略,以节省时间 。
NEW:表示第一次访问 
ESTABLISHED :表示第二次访问 
RELATED :表示关闭访问后再次访问

[root@localhost Desktop]# iptables -F  ##清空
[root@localhost Desktop]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@localhost Desktop]# iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT ##允许数据包从22端口进入
[root@localhost Desktop]# iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT ##允许数据包从53端口进入
[root@localhost Desktop]# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT  ##允许数据包从80端口进入
[root@localhost Desktop]# iptables -A INPUT -m state --state NEW -p tcp --dport 3260 -j ACCEPT ##允许数据包从3260端口进入
[root@localhost Desktop]# iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT  ##允许数据包从443端口进入
[root@localhost Desktop]# iptables -A INPUT -m state --state NEW -i lo -j ACCEPT ##允许回环接口
[root@localhost Desktop]# iptables -A INPUT -j REJECT
[root@localhost Desktop]# iptables -nL ##查看策略
[root@localhost Desktop]# service iptables save  ##保存策略


四.地址伪装

做路由的主机:

[root@node1 Desktop]# iptables -F
[root@node1 Desktop]# iptables -nL -t nat  #查看nat策略
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination        
[root@node1 Desktop]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.169
#在路由后,通过SNAT的方式将其转换为源地址

客户主机: 

这里写图片描述

五.端口转发

被添加为转发端口的主机:

[root@server Desktop]# ifconfig eth0 172.25.254.196/24  
#因为本机yum源是254网段的主机共享的,所以需要临时修改ip
[root@server Desktop]# yum install httpd  #下载http
[root@server Desktop]# systemctl restart network  #重启网络,ip恢复
[root@server Desktop]# systemctl start httpd  #打开http服务
[root@server Desktop]# echo 172.25.0.196 > /var/www/html/index.html  
#给http的默认发布文件写入内容172.25.0.196

添加端口转发的主机(路由主机):

[root@node1 Desktop]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-dest 172.25.0.196
#在路由前,通过DNAT的方式将其转换为目标地址172.25.0.196
[root@node1 Desktop]# iptables -nL -t nat  #查看添加规则
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 to:172.25.0.196

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  0.0.0.0/0            0.0.0.0/0            to:172.25.254.169

在真机测试: 
访问路由主机的http时,查看到的是客户主机的http默认发布文件的内容 。


版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/chao199512/article/details/80697499
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-06-20 16:40:54
  • 阅读 ( 738 )
  • 分类:Linux

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢