Iptables 之二扩展模块 nat
问题一:如果开发被动模式的ftp服务?
21号端口是命令连接端口,数据连接端口不固定
三步骤:
(1)装载ftp追踪时的专用的模块
/lib/modules/$(uname-r)/kernel/kernel下有个trace模块
/lib/modules/$(uname-r)/kernel/net 下有个netfilter目录nf_conntrack_ftp.ko.xz 此模块 专门为ftp追踪RELATED连接的专用模块
#modprode nf_conntrack_ftp 手动装载此依赖模块
[root@localhost netfilter]# modinfo nf_conntrack_ftp.ko.xz
filename: /lib/modules/3.10.-.el7.x86_64/kernel/net/netfilter/nf_conntrack_ftp.ko.xz
alias: nfct-helper-ftp
alias: ip_conntrack_ftp
description: ftp connection tracking helper
author: Rusty Russell <rusty@rustcorp.com.au>
license: GPL
rhelversion: 7.4
srcversion: D43BF56A22E3D137BA1227B
depends: nf_conntrack
intree: Y
vermagic: 3.10.-.el7.x86_64 SMP mod_unload modversions
signer: CentOS Linux kernel signing key
sig_key: DA::7D:CA:7D:BE::AB::BD::BD:0C:4E::F4::B6:A4:9C
sig_hashalgo: sha256
parm: ports:array of ushort
parm: loose:bool
(2)放行请求报文:
命令连接:NEW, ESTABLISHED
数据连接:RELATED(第一次建立连接--这个连接不是新连接而是RELATED), ESTABLISHED(所有的后续通信)
只有对数据连接的第一次请求叫做RELATED;后续请求一旦达成了,双方建立起来对话,后续所有数据传输连接过程都是ESTABLISHED
# iptables -A INPUT -d LocalIP -p tcp -m state --state RALETD,ESTABLISHED -j ACCEPT
# iptables -A INPUT -d LocalIP -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
(3)放行响应报文:ESTABLISHED
#iptables -A OUTPUT -s LocalIP -p tcp -m state --state ESTABLISHED -j ACCEPT
实例:
(1)yum -y install vsftp ll /var/ftp (2)cp /etc/issue /var/ftp/pub (3)start vsftpd.service (4)iptables-save > /root/iptables. 另存为 (5)不加防火墙规则,ftp是否可以访问 iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -F (6)iptables-restore < /root/iptables. 重新载入 (7)modprode nf_conntrack_ftp
lsmod | grep ftp
(8)放行ftp策略 这是新增规则
iptables -I INPUT -d 192.168.1.101 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 1 -p tcp -m state --state RALETD,ESTABLISHED -j ACCEPT iptables -I OUTPUT -p tcp -m state --state ESTABLISHED -j ACCEPT 这是在原来规则上修改
iptables -R INPUT -2 -d 192.168.1.101 -p tcp -m multiport --dport 21,22,80 -m state --state NEW,ESTABLISHED -j ACCEPT
二、如何保存及重载规则:
保存规则至指定文件:
iptables-save > /PATH/TO/SOMEFILE
从指定文件重载规则:
iptables-restore < /PATH/TO/SOMEFILE
CentOS 6 :
service iptables save 相当于 iptables-save > /etc/sysconfig/iptables
service iptables restart 比系统中的规则全清了,再把此路径下文件读进去
相当于 iptables-restore < /etc/sysconfig/iptables
CentOS 7:
引入了新的iptables的前端管理服务工具:firewalld
firewalld-cmd、firewalld-config
注:在CentOS 7上使用iptables需要首先禁用firewalld
systemctl disables firewalld.service
systemctl stop firewalld.servicer
PS:
1)、CentOS 6环境
service iptables start 没反应说明此前禁用了iptables
如果此前禁用iptables那么就没有此文件/etc/sysconfig/iptables
可以先保存service iptables save 就会产生
再重启service iptables start
脚本:/etc/rc.d/init.d/iptables (此脚本不会启动任何服务,虽然叫服务脚本,也支持start,但它没有启动任何进程;仅仅是让那些规则生效而已)
另一个作用:此脚本能够在开机时候自动把我们某些所需要的模块装载进来;依赖于/etc/sysconfig/iptables/iptables-config此文件;
把需要开机启动的模块写于此处,多个模块之间用空格隔开

关于firewalld:
https://www.ibm.com/developerworks/cn/linux/1507_caojh/index.html
三、网络防火墙
nmcli 管理命令
a、内网添加默认路由
route add default gw 192.168.20.1
b、中间主机添加一块网卡和地址
ip addr add 192.168.20.1/24 dev en0number
c、中间主机打开网络转发功能: cat /proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.ip_forward=1
d、外网主机添加路由指向
route add -net 192.168.20.0/24 gw 192.168.100.9

在内网主机开启httpd服务:
目的:如何在中间主机添加规则来控制外网谁能访问,谁不能访问?
因为开了转发功能,所有的转发都会经过本机的forward链, 默认是ACCEPT
针对单个:
iptables -P FORWARD DROP
iptables -A FORWARF -d 192.168.20.2 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARF -s 192.168.20.2 -p tcp --sport 80 -j ACCEPT
能访问web服务,但是ping不同;

优化:
iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARF -d 192.168.20.2 -p tcp -m multiport --dport 22,80 -m state --state NEW -j ACCEPT
练习:
主机防火墙:
放行telnet,ftp,web服务,samba, dns服务(查询和区域传送)
网络防火墙:打开核心转发
放行telnet,ftp,web服务,samba, dns服务(查询和区域传送)
dns : INPUT:53/tcp ;OUTPUT:53/tcp
samba : 137/udp ,138/udp,139/tcp,445/tcp
四、nat表
nat : Network Address Translation 网络层+传输层
proxy :代理 应用层
nat :
SNAT :只修改请求报文的源地址
DNAT:只修改请求报文的目标地址

响应地址的转换是由nat server自行决定的(内部有个nat表)
nat表三条链:使用位置
PREROUTING : DNAT
OUTPUT
POSTROUTING : SNAT
#源地址转换:外网地址固定
iptables -t nat - A POSTROUTING -s LocalNET ! -d LocalNet -j SANT --to-source ExtIP(外部IP)
外网地址不固定
iptables -t nat - A POSTROUTING -s LocalNET ! -d LocalNet -j MASQUERADE
#目标地址转换:
iptables -t nat -A PERROUTING -d ExtIP -p {tcp|udp|icmp} --dport PORT -j DANT --to-destination InterServerIP[:PORT]
e.g
iptables -t nat - A POSTROUTING -s 192.168.20.0/24 ! -d 192.168.20.0/24 -j SANT --to-source 172.16.100.9
iptables -t nat -A PERROUTING -d 172.16.100.9 -p tcp --dport 80 -j DANT --to-destination 192.168.20.2:80 #转发
#外网地址经常发生变换,无法使用--to-source确定某个地址
iptables -t nat - A POSTROUTING -s 192.168.20.0/24 ! -d 192.168.20.0/24 -j MASQUERADE #地址伪装
SNAT 和 DNAT
SNAT:
假如我要让公司192.168.10.0/24段的地址都通过linux服务器的eth0 :123.123.123.123上网
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 123.123.123.123
DNAT
GATEWAY eth0:123.123.123.123 eth1:192.168.10.1 内网主机:192.168.10.10
要使访问123.123.123.123的80 自动跳到192.168.10.10的80端口上
iptables -t nat -A PREROUTING -p tcp -d 123.123.123.123 --dport 80 -j DNAT --to-destination 192.168.10.10:80
iptables -t nat -A POSTROUTING -p tcp -d 192.168.10.10 --dport 80 -j SNAT --to-source 192.168.10.1 (内网之间进行nat才加上)
第一条:将外部数据包的目的地址改到内网主机的指定端口
第二条:转发前,将外部源地址改为内网本地地址
https://www.cnblogs.com/harlanzhang/p/6188952.html
Iptables 之二扩展模块 nat的更多相关文章
- iptables 分析(二)
原文:http://blog.chinaunix.net/uid-24207747-id-2622901.html do_command()函数分析 //负责整个用户输入的命令处理 int do_co ...
- iptables(二)iptables实际操作之规则查询
如果你是一个新手,在阅读如下文章时,请坚持读到最后,读的过程中可能会有障碍,但是在读完以后,你会发现你已经明白了. 在进行iptables实验时,请务必在测试机上进行. 之前在iptables的概念中 ...
- LVS(二)NAT模型配置
NAT配置模式 环境说明 LVS服务器(在eth0:0上设置VIP为:192.168.159.200/24) Eth0:192.168.159.133/24 GW:192.168.159.2 Et ...
- 【Linux 驱动】Netfilter/iptables (八) Netfilter的NAT机制
NAT是Network Address Translation的缩写,意即"网络地址转换". 从本质上来说,是通过改动IP数据首部中的地址,以实现将一个地址转换成还有一个地址的技术 ...
- 二、NAT(地址转换模式)
刚刚我们说到,如果你的网络ip资源紧缺,但是你又希望你的虚拟机能够联网,这时候NAT模式是最好的选择.NAT模式借助虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网.其网络结构如下图所示: NA ...
- iptables nat及端口映射
iptables nat及端口映射 发布: 2010-6-11 15:05 | 作者: admin | 来源: SF NetWork 门户网站 iptables 应用初探(nat+三层访问控制) ip ...
- iptables NAT规则【转】
nat表需要的三个链: 1.PREROUTING:可以在这里定义进行目的NAT的规则,因为路由器进行路由时只检查数据包的目的ip地址,所以为了使数据包得以正确路由,我们必须在路由之前就进行目的NAT; ...
- Static NAT with iptables on Linux
本文的名字取的比较有意义,因为本文并不是真的要讨论如何在Linux上使用iptables实现static nat!之所以这么命名本文,是想引起别人的注意,因为中文资料,以及国内的搜索引擎,基本上没有人 ...
- Linux iptables用法与NAT
1.相关概念 2.iptables相关用法 3.NAT(DNAT与SNAT) 相关概念 防火墙除了软件及硬件的分类,也可对数据封包的取得方式来分类,可分为代理服务器(Proxy)及封包过滤机制(IP ...
随机推荐
- PHP 结合 Boostrap 结合 js 实现学生列表删除编辑以及搜索功能(完结)
这个自己的小项目要先告一段落了.可能还有许多bug.请见谅 删除学生功能 PHP: // 这里是通过前端代码HTML中的 url 传过来的,用 $_GET 来获取(相关HTML代码可以看一下到主页看一 ...
- Linux (x86) Exploit 开发系列教程之三(Off-By-One 漏洞 (基于栈))
off by one(栈)? 将源字符串复制到目标缓冲区可能会导致off by one 1.源字符串长度等于目标缓冲区长度. 当源字符串长度等于目标缓冲区长度时,单个NULL字节将被复制到目标缓冲区上 ...
- plsql developer中如何设置sql window显示行号
转自:https://blog.csdn.net/qq_31302091/article/details/74931828 英文版的plsql developer中,很多时候,很多功能不去用,都不知道 ...
- Flume 初探
Apache 是一个高可用.高可靠的,分布式的海量日志采集.聚合.传输系统,基于流式架构,灵活简单. Flume 最主要的作用就是实时读取服务器本地磁盘的数据,将数据写入HDFS中. Flume组成架 ...
- JQuery EasyUI treegrid展开与折叠,以及数据加载两次的问题
问题:做项目的时候遇到代码生成的页面,只默认展开了一级节点,每次操作之后刷新还要手动一级一级展开,太麻烦了 官方API:http://www.jeasyui.net/plugins/186.html ...
- LAMP环境搭建基本步骤
LAMP环境搭建基本步骤 参考链接https://yq.aliyun.com/articles/106387 apache性能优化.配置https://my.oschina.net/lockupme/ ...
- SHELL脚本编程基础知识
SHELL脚本编程基础知识 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Linux之父Linus有一句话很经典:"Talk is cheap, show me the ...
- HTML&CSS基础-内边框
HTML&CSS基础-内边框 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HTML源代码 <!DOCTYPE html> <html> &l ...
- Random Forest(sklearn参数详解)
2016年08月17日 10:32:42 铭霏 阅读数:36874 版权声明:本文为博主原创文章,博主转载请附加原文链接并声明. https://blog.csdn.net/u012102306/ ...
- visual studio故障修复
如果没有安装程序,直接在控制面板——>程序和功能,在列表中找到您安装的vs,右键选择更改,然后程序会启动,做一些准备.然后又三个选项,可以选择修复.