linux初学者-iptables篇
iptables是防火墙的一种,是用来设置、维护和检查linux内核的IP过滤规则的,可以完成封包过滤、封包重定向和网络地址转换(NAT)等功能。
iptables包含3张表和5条链。3张表分别是:filter、mangle、nat。5条链分别是:INPUT、FORWARD、OUTPUT、PREROUTING、POSTROUTING。
3张表分别代表:
filter: 一般的过滤功能
mangle: 用于对特定数据包的修改
nat : 用于nat功能(端口映射,地址映射等)
现阶段还加入了raw表,一般是为了不再让iptables做数据包的连接跟踪处理,提高性能。
5条链分别代表:
INPUT :通过路由表后,目的地为本机
FORWARD :通过路由表后,目的地不为本机
OUTPUT :由本机产生,向外转发
PREROUTING :数据包进入路由表之前
POSTROUTING :发送到网卡接口之前
1、iptables的基本命令和设置
"iptables -t filter -nL"。查看filter表的信息。如下图所示,可以看到filter表中包含了哪几条链,各有什么策略。同理也可以看到其他表的。
"iptables -t filter -F"。清空这个表里面的全部策略,这只是临时清空,在重启iptables后还会出现,所以还需要输入命令"service iptables save"来保存。
"iptables -t filter -P INPUT ACCEPT|DROP"。改变filter表中改变INPUT模式,ACCEPT接受,DROP表示丢弃数据包。例如设置成DROP以后,其他主机无法通过ssh服务连接这台主机。
"iptables -t filter -A INPUT -j REJECT"。"-A"表示在最后添加一个策略,该策略是拒绝所有数据。如下图所示,client主机无法连接,请求被拒绝。
"iptables -t filter -I INPUT 1 -i lo -j ACCEPT"。"-I"表示插入,插在后面数字之前,该策略表示本机的数据可以通过,如下图所示,本机可以通过ssh连接本机,但是其他主机不行。
"iptables -t filter -I INPUT 2 -s 172.25.254.102 -p tcp --dport 22 -j ACCEPT"。这条策略表示,172.25.254.102的主机的数据可以通过本机的22号端口,22号端口是sshd服务的端口。
"iptables -t filter -I INPUT 3 -p tcp --dport 80 -j ACCEPT"。这条策略表示80号端口的数据都可以通过。
"iptables -t filter -D INPUT 3"。删除第3条策略。
"iptables -t filter -D INPUNT -p tcp --dport 80 -j ACCEPT"。也可以通过后面的条件来删除策略。
"iptables -t filter -R INPUT 2 -s 172.25.254.102 -p tcp --dport 22 -j REJECT"。"-R"表示改变策略,将之前设置的策略中的"ACCEPT"改为"REJECT"。
"iptables -t filter -N WE"。添加一个"WE"链。
"iptables -t filter -E WE REDHAT"。改变自定义链的名称,需注意,只有自定义链可以改变名称。
"iptables -x REDHAT"。删除自定义的链。
2、策略举例
数据包进入后读取策略是从上到下逐条读取,如果有很多的策略,一个数据包再次进入显然会因为读取策略占用较长的时间,所以可以设置策略,数据包第一次进入需要读取是否允许进入的策略,再次进入则直接通过。以此为例简要介绍策略应用。
如下图所示,因为策略读取是逐条的,所以将再次进入的策略写在第一个可以大大缩短读取时间。第一条输入"iptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT",这条策略表示再次进入的数据包直接通过。然后添加"iptables -t filter -A INPUT -m state --state NEW -i lo -j ACCEPT",该条策略表示本机的数据都可以直接通过。在后面就可以添加图中所示的首次进入的数据包的各种策略了。
这就是策略的一个简单的应用。
但是,需要注意的是,在设置的策略中,ftp的策略是特殊的,因为ftp的被动模式在连接时会随机开启一个大于1024的端口,端口不固定,所以策略也有所不同。
具体步骤如下:
编辑ftp的配置文件"/etc/vsftpd/vsftpd.conf",在其中输入"pasv_max_port=1025"和"pasv_min_port=1025",即将端口固定在1025上,也可以是大于1024的其他端口。重启服务后输入"iptables -t filter -I INPUT 3 -p tcp --dport 1025 -j ACCEPT"添加通过这个端口的策略。完成配置后就可以使用ftp了。
3、路由策略
现有3台主机,分别是一台有两个卡的主机server,IP分别为"172.25.254.202"、"172.25.2.202",一台client的主机IP为"172.25.2.102",网关是"172.25.2.202",一台主机的IP为"172.25.254.2"。
"2"网段的client主机现在想通过ssh连接"254"网段的主机,在不做任何配置的情况下,这是不可能的。先在可以以server主机为路由器,配置iptablse,使得可以实现。
在server主机上的配置如下:
a、"sysctl -a | grep forward"。通过这个命令查看内核路由功能"net.ipv4.ip_forward"是否开启,0为关闭,1为开启。
b、"vim /etc/sysctl.conf"。如果没有开启,编辑这个文件,在其中写入"net.ipv4.ip_forward = 1"。完成后输入"sysctl -p"加载。
c、"iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.102"。添加策略,使得所有通过eth0网卡的数据包封装为"172.25.254.102"的数据包。
完成上述策略后,"2"网段的client主机就可以连接到"172.25.254.2"的主机了。
但是,因为数据包是封装过的,在"172.25.254.2"的主机上只能看到连接的是"172.25.254.202"的主机,并不知道有client主机的存在。这时候可以在server主机上加入策略,使得"172.25.254.2"的主机连接看到的IP时,直接连到"2"网段的主机client上。使得server主机完成路由的功能。
在server主机上加入策略"iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-dest 172.25.2.102"。加入后"172.25.254.2"的主机连接server主机就会自动连接到"2"网段的client主机上了。
以上只是iptables的一些命令和应用,如果读者有兴趣也可以研究。
linux初学者-iptables篇的更多相关文章
- linux初学者-firewall篇
linux初学者-firewall篇 firewalld是防火墙的另一种程序,与iptables相同,但是使用起来要比iptables简单的点,不需要了解3张表和5条链也可以使用. 1.firewa ...
- linux初学者-SElinux篇
linux初学者-SElinux篇 SElinux是强制访问控制(MAC)安全系统,是linux历史上最杰出的新安全系统.对于linux安全模块来说,SElinux的功能是最全面的,测试也是最充分的, ...
- linux初学者-mail篇
linux初学者-mail篇 邮件是在生活中比较常用的一个工具,在linux系统中的邮件也是.在linux中,邮件的发送所用的服务时postfix,邮件的接收所用的服务是pop(110端口).ima ...
- linux初学者-Apache篇
linux初学者-Apache篇 Apache提供了超文本传输协议http,httpd是Apache超文本传输协议的主服务器.下文将对httpd的安装和配置进行简单的叙述. ...
- linux初学者-iscsi篇
linux初学者-iscsi篇 之前介绍过网络文件共享系统NFS和CIFS.在系统中,设备也是可以共享的,这就是iSCSI,它可以用来建立和管理IP存储设备.主机和客户机等之间的相互 ...
- linux初学者-ftp篇(一)
linux初学者-ftp篇(一) FTP是文件传输协议,是用于Internet上的控制文件的双向传输.用户可以通过客户机程序从远程主机上下载或者向远程主机上传文件. linux系统中,如果不了解SEL ...
- linux初学者-磁盘阵列篇
linux初学者-磁盘阵列篇 在磁盘的使用中,有时候需要提高磁盘的读写数据速度,就要用到磁盘组——raid,也就是磁盘阵列. 磁盘阵列是由最少两块以上的磁盘组成的,raid有许多模式,在这里将介绍其中 ...
- linux初学者-进程篇
linux初学者-进程篇 不管是windows还是linux,都有进程,那么什么是进程呢?进程就是cpu未完成的工作.下面会介绍一些关于系统中进程的查看以及管理的方法. 1.命令 1.1.命令使用 查 ...
- ## 本篇文章对linux常用的一些命令做一下总结,如有需要补充以及不懂得地方,请在下方留言 适合于linux初学者,以及对命令掌握不牢的用来备忘
本篇文章对linux常用的一些命令做一下总结,如有需要补充以及不懂得地方,请在下方留言 适合于linux初学者,以及对命令掌握不牢的用来备忘一,磁盘管理1.显示当前目录位置 pwd2.切换目录 cd ...
随机推荐
- 【Linux】Linux 环境下splite以及一些正则使用
由于在windows下,遍历目录,想查找满足条件的文件: dir /s > ..\fileresult.txt 结果得到的文件过大,999多MB的txt: split -b 10k date.f ...
- notepadd++正则表达式大小写转换
示例1:将语句 test this sentence 转为大写 查找:^.*$ 替换:\U$0 或------------ 查找:^(.*)$ 替换:\U\1 或 \U$1 示例2:将语句 TEST ...
- c++用参数返回堆上的空间
<高质量c++和c编程>7.4 指针参数是如何传递内存的一节中写道 void GetMemory(char *p, int num) { p = (char *)malloc(sizeof ...
- python列表和字典的迭代
1.列表和字典的迭代 程序开发中,对列表和字典进行迭代是非常常见的事情. 字典一般可以选择对key进行迭代.对value迭代和对key/value一起迭代 >>> d = {'a': ...
- 关于web系统整体优化提速总结
关于web系统整体优化提速总结 一.背景 随着公司业务的拓展,随之而来就是各种系统横向和纵向的增加,PV.UV也都随之增加,原有的系统架构和模式慢慢遇上了瓶颈,需要逐步的对系统从整体上进行改造升级,通 ...
- 使用Python终结“你是什么垃圾”的灵魂拷问!
目录 0 引言 1 环境 2 需求分析 3 代码实现 4 后记 0 引言 纸巾再湿也是干垃圾?瓜子皮再干也是湿垃圾??最近大家都被垃圾分类折磨的不行,傻傻的你是否拎得清?
- Android前沿技术
一.热升级Tinker源码解析与手写二.热修复阿里百川Sophix内核原理三.App Instantgoogle8.0 类似热更新技术原理与实战四.强制更新1.银行应用非对称加密对称加密五.组件化框架 ...
- Android短视频中如何实现720P磨皮美颜录制?
视频中磨皮.美颜功能已成为刚需,那么如何在Android短视频中实现720P磨皮美颜录制?本篇文章中,网易云信资深开发工程师将向大家介绍具体的操作方法. 相关阅读推荐 <短视频技术详解:Andr ...
- java基础知识总结(二)
Java中的代码块 java中的代码块是用{}括起来的代码,进行一些功能的限定 静态代码块:在类第一次被初始化的是后执行,负责一些类的初始化操作,仅仅只执行一次 构造代码块:顾名思义,辅助构造器进行初 ...
- Python初探-基础篇
python和其他语言其实是相似的,如果你会了另一门语言,那学习这个语言,会很快上手 1.mac下自带的有python,版本为2.7.0(可以用home brew python3 安装最新版本的pyt ...