iptables是linux里比较常用的防火墙,也是centos7.0之前的版本默认自带的防火墙。

配置防火墙需特别注意一件事情:如果服务器在异地机房,需要谨慎配置端口,以免造成新配置生效后无法远程登录的惨状。

以下简述一下iptables常用的操作和设置方法。

1.查看iptables运行状态

# 不用操作系统下略有不同
service iptables status

systemctl | grep "iptables"

2.查看iptables当前使用的规则

iptables --list

3.iptables默认规则

iptables可以分别对 流入 流出 转发 三种数据包进行端口级的默认规则(接受 or 拒绝)

打开iptables配置文件

vim /etc/sysconfig/iptables

找到 *filter 起始的行

样例:

# 丢弃来自所有端口 流入 的数据包
:INPUT DROP [:]
# 接受来自 2至65535 端口 流出 的数据包
:OUTPUT ACCEPT[:]
# 丢弃来自 5至2048端口 转发 的数据包
:FORWARD DROP [:]

接下来就是一般常规的防火墙规则了

一般常用的参数如下:

# -A 添加一条防火墙规则,后面一般接上 INPUT OUTPUT FORWARD
# -i 指定流量进入的网卡,后面接上网卡名称,如:lo eth0 eth1
# -o 指定流量出口的网卡,后面接上网卡名称,如:lo eth0 eth1
# -j 指定规则的行为,后面一般接上 DROP ACCEPT DENY
# -p 指定应用的协议,如 tcp udp icmp http
# --dport 进入数据包的目标端口,后面接上端口名称
# --sport 出口数据包的源端口,后面接上端口名称
# --state 连接的状态,后面一般接上 NEW ESTABLISHED RELATED
# -s 源ip地址,后面接上发起数据的ip地址
# -d 目标ip地址,后面接上数据包的目标ip地址

常用规则示例:

# 允许来自本机(127.0.0.1)的流入流量 流出流量
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT # 允许icmp协议的(例如ping,traceroute)数据包,类似ping,不但需要数据流出,也需要数据流入
-A INPUT -p icmp -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT
# 另一种写法
-A INPUT -p icmp --state NEW -j ACCEPT # 允许80端口的所有流量
-A INPUT -p tcp --dport -j ACCEPT
-A OUTPUT -p tcp --sport -j ACCEPT # 拒绝3306端口的所有流量
-A INPUT -p tcp --dport -j DROP
-A OUTPUT -p tcp --sport -j DROP # 只允许来自192.168.1.150的ssh(22端口)连接
-A INPUT -p tcp --dport -s 192.168.1.150 -j ACCEPT
-A OUTPUT -p tcp --sport -d 192.168.1.150 -j ACCEPT

4.保存iptables规则

很多人设置完iptables后,没有保存,或者修改完配置文件后直接执行iptables-save其实都是错的,这样会导致你之前的设置丢失,直接使用iptables-save只适用于通过 iptables -A INPUT -p tcp --dport 3306 -j DROP命令行方式添加的规则进行保存。

简单地说,iptables-save是把当前内存中的iptables规则写入至 /etc/sysconfig/iptables 文件而已。

正确方法是:

先重启iptables

# 不同操作系统有不同
service iptables restart
# 或
systemctl restart iptables

再执行保存

iptables-save

或从不执行iptables-save,只修改配置文件,重启iptables

iptables简易使用教程的更多相关文章

  1. Git GUI简易使用教程

    Git GUI简易使用教程:先上图~~~~~ 一. 先从添加文件开始讲(先上图): 1.选中要添加的文件,点击菜单栏的“提交”,选中“缓存为提交”,

  2. Android简易实战教程--第五十一话《使用Handler实现增加、减少、暂停计数》

    转载博客请注明出处:道龙的博客 之前,写过一篇使用异步任务AysncTask实现倒计时的小案例,喜欢的话可以参考博客:Android简易实战教程--第三十三话< AsyncTask异步倒计时&g ...

  3. Android简易实战教程--第五十话《动画扫描》

    祝新年快乐!2017(一起)前行. 转载博客请注明出处:道龙的博客 本篇简答的小案例,使用动画知识,完成一个类似雷达扫描效果,并且加入自定义进度条.对于自定义进度条前面有很详细的解析和案例了,本篇就结 ...

  4. Android简易实战教程--第十六话《SharedPreferences保存用户名和密码》

    之前在Android简易实战教程--第七话<在内存中存储用户名和密码> 那里是把用户名和密码保存到了内存中,这一篇把用户名和密码保存至SharedPreferences文件.为了引起误导, ...

  5. Web压力测试工具 LoadRunner12.x简易入门教程--(一)回放与录制

        LoadRunner12.x简易入门教程--(一)回放与录制 今天在这里分享一下LoadRunner12.x版本的入门使用方法,希望对刚接触LoadRunner的童鞋有所帮助. LoadRun ...

  6. Qt QBarSeries简易柱状图教程

    博客园最强Qt QBarSeries简易柱状图教程 前情提要 每个人的绘图需求不同,此篇教程也是根据需求来改的.我的需求大概如下所示. 通过信号槽的方式接收signals来刷新柱状图,所以每次触发信号 ...

  7. Webpack简易入门教程

    <!-- 其实网上关于webpack的教程已经很多了,但是本人在学习过程中发现很多教程有错误,或者写的很不全面,结果做的过程出现各种各样的问题,对新手不但不友好还会让人浪费很多不必要的时间.所以 ...

  8. Lua简易入门教程

    环境:lua for windows (lfW)主页:http://luaforwindows.luaforge.net/https://code.google.com/p/luaforwindows ...

  9. Windows Git+TortoiseGit简易使用教程

    转载自 http://blog.csdn.net/jarelzhou/article/details/8256139 官方教程:http://tortoisegit.org/docs/tortoise ...

随机推荐

  1. EF4.2预览版出来了

    原文发布时间为:2011-09-21 -- 来源于本人的百度文章 [由搬家工具导入] http://blogs.msdn.com/b/adonet/archive/2011/08/22/ef-4-2- ...

  2. Java学习之路(3)

    JKD的安装和配置: 一.适合超级菜鸟的,不用设置系统路径,不用到处找插件 (1)如果你的系统是windows或linux,根据系统的不同(32位和64位之分),先到www.baidu.com搜索jd ...

  3. 如何得知 GIC 的所有中斷

    can get the supported GIC interrupts from the below adb command, adb root adb shell cat /proc/interr ...

  4. 牛客网 牛客小白月赛1 D.多项式乘法

    D.多项式乘法   链接:https://www.nowcoder.com/acm/contest/85/D来源:牛客网 这个题想一下就能想出来了. 代码: 1 #include<iostrea ...

  5. Codeforces 586D Phillip and Trains(DP)

    题目链接 Phillip and Trains 考虑相对位移. 每一轮人向右移动一格,再在竖直方向上移动0~1格,列车再向左移动两格. 这个过程相当于每一轮人向右移动一格,再在竖直方向上移动0~1格, ...

  6. 基于VUE开发项目

    前言 最近由于公司需要,需要写一个相对来说比较大型的后台管理系统.为了保证管理系统操作体验较为舒适并且项目后期益于维护,最后决定基于VUE全家桶来开发一个高度组件化的单页SPA应用. 技术选型 vue ...

  7. j2ee性能调优之最小化资源压力测试法则

    前面看到有人讲j2ee的性能调优,虽然这块不是自己的专长,但是猪养多了,也忍不住跳出来说几句. 虽然几乎每本讲性能调优的书籍开篇都会提,没必要的情况下就不要做调优,但是我个人还是认为,所有系统在上线前 ...

  8. commons-lang3-StringUtils

    字符串工具类   abbreviate(String str, int maxWidth) 返回一个指定长度加省略号的字符串,maxWidth必须大于3 StringUtils.abbreviate( ...

  9. git-ssh配置和使用

    https://segmentfault.com/a/1190000002645623 1.设置Git的user name和email:(如果是第一次的话) $ git config --global ...

  10. 有关javaScript面向对象和原型笔记

    javaScript是一种比較特殊的语言,ECMAScript中没有类的概念.跟其它面向对象的语言有一定的差别.它的对象也与基于类的语言中的对象有所不同,严格来说,javascript对象是一组没有特 ...