linux防火墙iptables的配置经历

公司的测试环境都是由开发负责部署,虽然有用jinkens简化了部署的复杂度,但是最开始的时候,还是遇到了很多坑,例如应用的端口被防火墙拦截了。。。


在centos 6.5下安装iptables

一般情况下,centos 6.x 系统都是默认安装了iptables。如果不清楚是否安装,
可以通过 rpm -qa|grep iptables 查询是否安装了iptables。
没有,则可以通过 yum install iptables 进行安装,
确认是否存在该脚本 /etc/rc.d/init.d/iptables
没有需要将iptables添加到服务中。通过 service iptables start 启动iptables服务

iptables 配置

配置一般可以通过命令,或者直接改配置文件实现。

命令方式

格式:iptables [-t table] COMMAND chain CRETIRIA -j ACTION

iptables有五个规则链(chain):

规则链 含义
PREROUTING 路由前
INPUT 数据包入口
FORWARD 转发
OUTPUT 数据包出口
POSTROUTING 路由后

table:

含义 影响的规则链
filter 过滤 INPUT,OUTPUT,FORWARD
nat 地址 PREROUTING,OUTPUT,POSTROUTING
mangle 报文 PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

COMMAND:

1
2
3
4
5
-P (设置默认策略)
-L (查询详细策略)
-Z (清空策略)
-A (追加策略)
-I num (插入策略)

CRETIRIA:

1
2
3
4
5
6
7
8
9
-p (匹配协议)
tcp --dport xx:tcp协议,指定端口
udp --dport xx: udp协议
icmp --icmp-type 8:请求回显,即ping
0:响应,即响应对方的ping
-s (源地址匹配)
-d (目标地址匹配)
-i eth (该网卡流入)
-o eth (该网卡流出)

ACTION:

1
2
3
ACCEPT (接受)
DROP (丢弃)
REJECT (拒绝)

eg:iptables -A INPUT -p tcp –dport 80 -j ACCEPT (接受来自80端口tcp协议的数据)

添加完之后,命令会马上生效。但需要注意,如果重启,这些命令都会丢失。所以,需要保存到配置文件中,执行 service iptables save

配置文件方式

如果通过yum安装的iptables,它的配置文件在 /etc/sysconfig/iptables
修改完文件,直接执行 service iptables reload

后记

如果ssh连接linux,需要注意 执行了 iptables INPUT -P DROP,会断开连接,建议在本机配置,或者通过配置文件配置

附上一份简单的配置,默认拒绝所有请求、转发,允许所有输出;允许80、443端口的tcp请求,以及允许https的三次握手,将无法识别的连接丢弃掉

1
2
3
4
5
6
7
8
9
10
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [30:3148]
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state INVALID -j DROP
-A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
COMMIT

本文标题:linux防火墙iptables的配置经历

文章作者:Tim Jiang

发布时间:2018年06月04日 - 16:06

最后更新:2018年10月09日 - 15:10

原始链接:www.timjt.com/1468559775/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

显示 Gitment 评论