iptables的基本认识
iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的”安全框架”中,这个”安全框架”才是真正的防 火墙,这个框架的名字叫netfilter.
netfilter才是防火墙真正的安全框架(framework),netfilter位于内核空间。 iptables其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架。
netfilter/iptables(下文中简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案, 完成封包过滤、封包重定向和网络地址转换(NAT)等功能。
Netfilter是Linux操作系统核心层内部的一个数据包处理模块,它具有如下功能: 网络地址转换(Network Address Translate) 数据包内容修改 以及数据包过滤的防火墙功能
所以说,虽然我们使用service iptables start启动iptables”服务”,但是其实准确的来说,iptables并没有一个守护进程,所以并不能算是真正意义上的服务,而应该算是内核提供的功能。
Netfilter表、链对应关系
iptables基本命令
iptables -t 指定操作的表
iptables -A 添加(不能指定添加的位置)
iptables -I 添加(可以指定添加位置)
iptables -R 策略修改
iptables -N 不做解析显示IP
iptables -L 显示所要查看的策略信息
iptables -F 清空规则链
iptables -D 删除
[root@localhost ~]# systemctl stop firewalld ##关闭火墙
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# systemctl start iptables.service ##开启iptables服务
[root@localhost ~]# systemctl enable iptables.service
[root@localhoat ~]# systemctl start httpd ##开启http服务
[root@localhost ~]# iptables -nL ##列出当前
[root@localhost ~]# iptables -F ##清除规则链中已有的条目
[root@localhost ~]# iptables -nL
[root@localhost ~]# service iptables save ##保存
在真机上网页浏览172.25.254.128
在server虚拟机上网页浏览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
在真机上网页浏览172.25.254.128
在server虚拟机上网页浏览172.25.254.128
当设置为DROP状态的时候系统是处于丢弃状态,一直转圈却打不开网页,因为丢弃状态不返回值。
[root@localhost Desktop]# iptables -P INPUT ACCEPT 重新将策略改为接受
[root@localhost Desktop]# iptables -A INPUT -p tcp --dport 80 -j REJECT 将80端口设置为拒绝
[root@localhost Desktop]# iptables -nL 查看策略
[root@localhoat Desktop]# iptables -A INPUT -s 172.25.254.68 -p tcp --dport 80 -j ACCEPT
设置68主机可以访问
[root@localhoat Desktop]# iptables -A INPUT -p tcp --dport 80 -j REJECT 拒绝其他用户访问
[root@localhoat Desktop]# iptables -nL 查看策略
在真机测试和虚拟机测试结果如下:
iptables的规则是从上读取,如果第一个策略是拒绝所有IP那么无论下面的策略是接受还是丢弃都会被拒绝。
[root@localhost Desktop]# iptables -D INPUT 1 删除第一条策略
[root@localhost Desktop]# iptables -nL 查看策略
在真机IP为68的主机测试:
在虚拟机测试:
[root@localhost Desktop]# iptables -F ##清除规则链中已有的条目
[root@localhost Desktop]# iptables -nL
[root@localhost Desktop]# service iptables save ##保存
[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表
基本常用配置
[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 ##保存策略
iptables的地址伪装
在desktop虚拟机:
添加网卡,设置两个IP在不同网段
eth0:172.25.254.128
eth1:172.25.0.128
[root@localhost Desktop]# iptables -F
[root@localhost Desktop]# iptables -t nat -nL
[root@localhost Desktop]# iptables -t nat -A POSTROUTING -o eth0(254网段) -j SNAT --to-source 172.25.254.128
[root@localhost Desktop]# iptables -t nat -nL
[root@localhost Desktop]# vim /etc/sysctl.conf
加入:net.ipv4.ip_forward = 1
[root@localhost Desktop]# sysctl -p
net.ipv4.ip_forward = 1
在server虚拟机上
[root@localhost Desktop]# ping 172.25.254.68
[root@localhost Desktop]# ssh root@172.25.254.68
[root@localhost Desktop]# w -i 出来的是254网段
在desktop虚拟机:
[root@localhost Desktop]# iptables -t nat -A PREROUTING -i eth0(254网段) -p tcp --dport 22 -j DNAT --to-dest 172.25.0.228 ##伪装IP为228
在真机上连接desktop虚拟机
[kiosk@foundation68 Desktop]$ ssh root@172.25.254.128
[root@localhost ~]# ifconfig