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

最新文章

  1. 第二轮冲刺-Runner站立会议07
  2. Windows安装Scrapy遇坑解决办
  3. js php json
  4. Java 容器:Collection 初探之 List
  5. win8.1右键新建菜单添加新建php文件
  6. Flex 自动获取焦点 监听全局键盘事件
  7. SVN记住用户名和密码后如何修改
  8. 每天一水SGU347
  9. 平衡搜索树(三) B-Tree
  10. 【uva10917】Walk Through the Forest (最短路)
  11. JS数量输入控件
  12. iOS APP中Versions和build版本区别
  13. xBIM 应用与学习 (二)
  14. 史上最全的Spring-Boot-Starter开发手册
  15. SQLServer2016 之后增加了索引列数的限制 从 16个列 增加到了 32个列
  16. goto语句
  17. 纯css3实现的switch开关按钮
  18. HTML(一)
  19. 【noip模拟赛4】汽艇 模拟
  20. Shiro源码分析

热门文章

  1. 【CDockablePane】关于CDockablePane
  2. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---54
  3. SaltStack 模块学习之拷贝master服务器上文件和目录到minion服务器
  4. Day 30 process&thread_2
  5. java通过反射获取私有的构造方法,及反射擦除泛型数据类型约束
  6. Codeforces Gym101473 E.Dangerous Dive (2013-2014 ACM-ICPC Brazil Subregional Programming Contest)
  7. BZOJ 3881 COCI 2015 Divljak
  8. https的实现原理
  9. OpenSSL使用2(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12概念说明)(转)
  10. centos7.5更换docker-ce镜像源