1、其实匹配扩展中,还有需要加-m引用模块的显示扩展,默认是隐含扩展,不要使用 -m
状态检测的包过滤
-m state
--state {NEW,ESTATBLISHED,INVALID,RELATED} 指定检测那种状态
-m multiport 指定多端口号
--sport
--dport
--ports
-m iprange 指定IP段
--src-range ip-ip
--dst-range ip-ip
-m connlimit 连接限定
--comlimit-above # 限定大连接个数
-m limit 现在连接速率,也就是限定匹配数据包的个数
--limit 指定速率
--limit-burst # 峰值速率,最大限定
-m string 按字符串限定
--algo bm|kmp 指定算法bm或kmp
--string "STRING" 指定字符串本身
# iptables -A INPUT -s 0.0.0.0/0.0.0.0 -d 192.168.80.139 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
允许任何主机状态为NEW,ESTABLISHED的状态连接,这里要注意当写成0.0.0.0/0.0.0.0 表示任意地址的时候是可以省略的,如下即可:
# iptables -A INPUT -d 192.168.80.140 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
允许本机的ESTABLISHED状态出去,为了防止有反弹时木马,让服务器主动向外发起请求
# iptables -A OUTPUT -s 192.168.80.140 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
之后再修改默认权限为拒绝即可
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
现在在本机ping 127.0.0.1,发现时不同的,所以要允许本机,下面在写一个:
# iptables -I INPUT 1 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
# iptables -I OUTPUT 1 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
如果要限制80端口的话,那在就在写一条,现在写在一条里,为了节省查询时间
之前的--sport或--dport 后面可以添加连续的如 --sport 22:80 表示从22到80的所有端口,不符合现在的条件,所以我们用第二个显示扩展:
# iptables -A INPUT -d 192.168.80.140 -p tcp -m multiport --dport 22,80 -m state --state NEW,ESTABLISHED -j ACCEPT
这样就把22,80 和在一起的,OUTPUT同理但注意源端口目标端口,之后再删除原来的即可
(注意:有SSH的话一定要先添加在删除)
这里需要知道一点,从本机出去的ESTABLISHED都是现请求进来的,所以可以写成如下:
# iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
表示所有客户端NEW请求进来服务器返回ESTABLISHED的状态全部允许
也可以添加在INPUT中,提高查询速度
# iptables -I INPUT 1 -m state --state ESTABLISHED -j ACCEPT
这里的原理是,当NEW请的时候匹配他自己的那条规则,当建立连接后直接就匹配这条规则,提高效率
例如:第一条是允许ESTABISHED 的,第二条是22,的NEW,ESTABLISHED的规则,这样当用户请求22的时候先匹配22的NEW,之后的ESTABLISHED状态时直接匹配第一条,不用在去匹配第二条的规则了,这样当我们有许多条目的时候大大提高了效率
# iptables -A INPUT -d 192.168.80.140 -m iprange --src-range 192.168.80.130-192.168.80.150 -p tcp --dport 23 -m state --state NEW -j ACCEPT
指定192.168.80.130-192.168.80.150 可以访问本机的23端口
# iptables -I INPUT 2 -d 192.168.80.140 -p tcp --dport 22 -m state --state NEW -m connlimit ! --connlimit-above 2 -j ACCEPT
这里connlimit ! --connlimit-above 2 -j ACCEPT 表示只允许SSH本机2次,connlimit --connlimit-above 2 -j DROP 表示超过2次后拒绝,这里因为默认权限是拒绝的所以用!取反,而且前面有写允许22端口的,这里不匹配后就会先下匹配那条,将匹配22允许的更改即可。
# iptables -A INPUT -d 192.168.80.140 -p tcp --dport 80 -m state --state NEW -m limit --limit 1/second --limit-burst 3 -j ACCEPT
表示对web服务的新连接请求,平均每秒只允许1个,最多一次进3个
# iptables -I OUTPUT 1 -m string --algo kmp --string "peace" -j DROP
表示本机响应当中包含“peace”字符串的机拒绝
2、如何开发FTP
主动模式开放FTP
# iptables -A INPUT -d 192.168.80.140 -p tcp --dport 21 -m state --state NEW -j ACCEPT
# iptables -A INPUT -d 192.168.80.140 -p tcp --dport 20 -m state --state NEW -j ACCEPT
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
被动模式开放FTP
1)清空之前的配置,重启服务即可
# service iptables restart
2)先添加ssh规则
# iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
# iptables -A INPUT -d 192.168.80.140 -p tcp --dport 22 -m state --state NEW -m connlimit ! --connlimit-above 3 -j ACCEPT
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
3)下面开启FTP
# iptables -A INPUT -d 192.168.80.140 -p tcp --dport 21 -m state --state NEW -j ACCEPT
但是访问还是不行
4)先加载模块
# modprobe ip_nat_ftp
# lsmod | grep ftp
ip_nat_ftp 7361 0
ip_nat 20973 1 ip_nat_ftp
ip_conntrack_ftp 11569 1 ip_nat_ftp
ip_conntrack 53409 5 ip_nat_ftp,ip_nat,ip_conntrack_ftp,xt_connlimit,xt_state
5)开发RELATED状态
# iptables -R INPUT 2 -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -R OUTPUT 1 -m state --state ESTABLISHED,RELATED -j ACCEPT
6)在连接下发现可以了
iptables -D INPUT -j REJECT --reject-with icmp-host-prohibited
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
//开放38342端口
iptables -I INPUT 2 -p tcp -m tcp --dport 38342 -j ACCEPT
linux 防火墙详细介绍的更多相关文章
-
Linux防火墙iptables介绍
介绍网络防火墙是通过一个或多个允许或拒绝的规则来过滤网络流量的网络设备或软件.网络防火墙还可以执行更复杂的任务,例如网络地址转换,带宽调整,提供加密隧道以及更多与网络流量相关的任务.而我们的任务就是需 ...
-
Linux 目录详细介绍
[常见目录说明] 目录 /bin 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里. /etc 存放系统管理和配置文件 /home 存放所有用户文件的根目录,是用户主目录的基点 ...
-
linux目录详细介绍
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://yangrong.blog.51cto.com/6945369/1288072 目 ...
-
Linux Systemd 详细介绍: Unit、Unit File、Systemctl、Target
Systemd 简介 CentOS 7 使用 Systemd 替换了SysV Ubuntu 从 15.04 开始使用 Systemd Systemd 是 Linux 系统工具,用来启动守护进程,已成为 ...
-
linux文件目录详细介绍
linux文件目录 目录 /bin 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里 /etc 存放系统管理和配置文件 /home 存放所有用户文件的根目录,是用户主目录的基点 ...
-
linux配置防火墙详细步骤(iptables命令使用方法)
通过本教程操作,请确认您能使用linux本机.如果您使用的是ssh远程,而又不能直接操作本机,那么建议您慎重,慎重,再慎重! 通过iptables我们可以为我们的Linux服务器配置有动态的防火墙,能 ...
-
网卡配置和DNS配置,手动挂在nas存储的共享目录,网络相关其它操作命令,修改防火墙中的端口配置,resolv.conf配置详细介绍和网卡信息配置详细介绍
1. 网卡配置和DNS配置 若想服务器能够发邮件,需要让部署的服务器能够访问到外网环境.若部署的服务器访问不到外网,通过ping www.baidu.com的方式执行的时候,会出现以下问题: &q ...
-
iptables 简单介绍及应用 Linux防火墙
iptables 即 Linux防火墙 的简单介绍及使用 iptables生效位置如下图: 其中, 网络防火墙也可以使用一台启用了iptables的Linux主机代替; 路由器或集线器等设施在拓扑中省 ...
-
linux配置网卡IP地址命令详细介绍及一些常用网络配置命令
linux配置网卡IP地址命令详细介绍及一些常用网络配置命令2010-- 个评论 收藏 我要投稿 Linux命令行下配置IP地址不像图形界面下那么方 便,完全需要我们手动配置,下面就给大家介绍几种配置 ...
随机推荐
-
在Oracle SQLplus下建用户 建表
在建表之前最好新建一个用户,因为在sys用户下的表格不允许删除列, 所以最好不要在sys用户下建表. 一.在Oracle SQLplus下建用户: 1.以dba身份登陆SQLplus: [oracle ...
-
在ie7中overflow:hidden失效问题及解决方案
css兼容ie7: 做页面的时候用负边距居中的时候在IE7下面,父节点中的overflow:hiden失效的问题,查阅了一些资料,总结一下解决方法. 问题原因: 当父元素的直接子元素或者下级子元素的样 ...
-
html5--等待加载效果
<!DOCTYPE HTML> <html lang="zh-cmn-Hans"> <head> <meta charset=" ...
-
Json数据转换
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...
-
JAVA里的String、Timestamp、Date相互转换
Timestamp转化为String: SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定义 ...
-
Android 自动编译、打包生成apk文件 4 - 多渠道批量打包
相关文章列表: < Android 自动编译.打包生成apk文件 1 - 命令行方式> < Android 自动编译.打包生成apk文件 2 - 使用原生Ant方式 > < ...
-
HDU 2609 How many
最小表示法+Map或者字典树,最小表示法找了个模板,还没学习呢... #include<cstdio> #include<cstring> #include<cmath& ...
-
pandas 按照列A分组,将同一组的列B求和,生成新的Dataframe
对于pandas中的Dataframe,如果需要按照列A进行分组,将同一组的列B求和,可以通过下述操作完成: df = df.groupby(by=['column_A'])['column_B']. ...
-
es6零基础学习之项目目录创建(一)
和大家分享一下在学习es6的过程中所积累的东西,也希望更多的朋友能够互相学习 首先创建项目目录 打开你的命令行,什么文件下都可以,大家请随意,我自己用的git,输入 mkdir es6 创建一个完整的 ...
-
css -理解盒模型
标准模式: 总宽度/高度=width/height+padding+border+margin 怪异模式(quirks 模式): 总宽度/高度=width/height + margin = 内容区宽 ...