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 ...
随机推荐
- Android开发环境搭建(原创)
1,我的环境: win8 64位 2,软件安装: 1) jdk-7u40-windows-i586.exe 下载合适的版本,我下载的是 jdk7u40 32位 for windows 安装JDK,配置 ...
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发4- 后台模板html页面创建
上一篇教程<asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发3-登录模块开发>完成了本项目的登录模块,登录后就需要进入后台管理首页了,需要准备一个后台模 ...
- 办公利器-一行代码搞定http服务
平时给内网的同事分享个文件,直接用python启动一个http服务,方便又简洁: python3: python -m http.server [port] 默认端口为8000 python2: py ...
- Python自学day-15
一.防止页面变形 在改变浏览器大小时,可能会导致里面的元素变形(特别是用百分比设置的宽度). 那么,我们如何解决这个问题? 可以在最外层的元素(例如div)中,设置一个固定像素的宽度,例如: < ...
- SLAM方向公众号、知乎、博客上有哪些大V可以关注?
一.公众号 泡泡机器人:泡泡机器人由一帮热爱探索并立志推广机器人同时定位与地图构建(SLAM)技术的极客创办而成,通过原创文章.公开课等方式分享SLAM领域的数学理论.编程实践和学术前沿. 经典文 ...
- 【JAVA8】Set排序四种写法
工作中遇到,写了很久以前的写法,师兄给了很多建议,于是整理了一下.孔子曰:"你知道茴香豆的茴字有几种写法吗?" 第一种,平常的写法: public class App { publ ...
- Spring Boot 整合 Freemarker,50 多行配置是怎么省略掉的?
Spring Boot2 系列教程接近完工,最近进入修修补补阶段.Freemarker 整合貌似还没和大家聊过,因此今天把这个补充上. 已经完工的 Spring Boot2 教程,大家可以参考这里: ...
- Linux 配置 history 命令显示操作时间、用户和登录 IP
一.在配置文件中(/etc/bashrc 或者 /etc/profile 或者~/.bash_profile 或者 ~/.bashrc)添加如下配置 #vim /etc/bashrc // 进到 ...
- 学习kafka自己发生的几个小错误记录
一. The method iterator() is ambiguous ConsumerIterator<byte[],byte[]> it =stream.iterator(); ...
- android开发环境配置和一些坑
要开发安卓应用,首先就是要配置安卓的开发环境. 新手在这个步骤时,会发现安卓的开发环境配置不是一般的麻烦,因为一般人是选择eclipse+a sdk+adt的,需要java环境,需要翻 墙,需要有非一 ...