1.iptables防火墙简介:
Iptables也叫netfilter是Linux下自带的一款免费且优秀的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入、流出、流经服务器的数据包进行精细的控制。iptables是Linux2.4及2.6内核中集成的模块。
iptables的结构:
在iptables中有 三表五链(三表:filter、nat、mangle。五链:INPUT 、 PREOUTING、FORWARD、POSTROUTING、OUTPUT )最常用的是filter表
filter: input forward output
^输入 ^转换 ^输出
经过内核 经过内核转发 经过内核
nat: input prerouting postrouting output
^输入 ^路由之前 ^ 路由之后 ^输出
不经过内核 不经过内核
源地址转换
mangle : input prerouting forward pastrouting output
前俩个表的综合
#################################################3
2.iptables实验环境的搭建
yum install iptables -y 下载安装
systemctl stop firewalld 关闭firewalld
systemctl disable firewalld 设置开机不启动
systemctl mask firewalld.service 冻结firewalld
systemctl start iptables.service 开启iptables服务
systemctl enable iptables.service 设置iptables服务开机启动
a
iptables的 基本命令
iptable -t ##指定表名称
-n 不作解析
-L 列出指定表中的策略
-A ##增加策略
-p ##网络协议
--dport ##端口
-s ##数据来源
-j ##动作
ACCEPT ##允许 REJECT ##拒绝 DROP ##丢弃 -N ##增加链
-E ##修改链名称
-X ##删除链
-D ##删除指定策略
-I ##插入
-R ##修改策略
-P ##修改默认策略
iptables -t filter -nL 查看filter表中的策略
iptables -F
刷掉filter表中的所有策略(临时刷掉,重启服务恢复原始)
当没有用-t指定表名称时默认时filter
service iptables save
保存当前的策略,如果没有保存,重启服务会回到原来的策略
iptables -p INPUT ACCEPT | DROP
把INPUT表中的策略改为ACCEPT允许或者DROP丢弃
iptables -A INPUT -j REJECT 拒绝所有主机的数据来源
测试:http 和 lftp 等服务无法使用
iptables -I INPUT 3 -p tcp --dport 80 -j ACCEPT
插入策略到第三条,允许80 端口的开放
测试:
iptables -D INPUT 3 删除INPUT链第三条策略
iptables -F
iptables -t filter -nL 列出filter表中的策略
iptables -N HAHA 增加HAHA链
iptables -E HAHA HELLO 改变HAHA链名为HELLO
iptables -X HELLO
删除HELLO链,此命令只对自定义链起作用,对系统存在的链不起作用
########################################
3.iptables 的地址转换
sysctl -a | grep ip_forward 查找并过滤sysctl服务中的forward
ip_forward = 0 需要
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p 刷新
iptables -F 刷掉filter表中的所有策略
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.122.7
将数据包来源伪装成7主机
iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-dest 192.168.122.77
将数据包目的地来源伪装成27.227主机
测试:
用 192.168.122.1的主机ssh连接192.168.122.7主机
连上之后显示的是77主机被连接
打开77 主机
w -i 查看连接来源是7主机,事实上是1主机