iptables 是集成在 Linux 内核中的包过滤防火墙系统。使用 iptables 可以添加、删除具体的过滤规则,iptables 默认维护着 4 个表和 5 个链,所有的防火墙策略规则都被分别写入这些表与链中。

1、iptables语法格式

iptables 命令的基本语法格式如下:

[root@l ~]# iptables [-t table] COMMAND [chain] CRETIRIA -j ACTION

命令全景图如下:

 

iptables配置mysql iptables nl_linux

2、具体使用场景

1)查看规则

对规则的查看需要使用如下命令:

[root@~]# iptables -nvL  --line-number

各参数的含义为:

-L 表示查看当前表的所有规则,默认查看的是 filter 表,如果要查看 nat 表,可以加上 -t nat 参数。
-n 表示不对 IP 地址进行反查,加上这个参数显示速度将会加快。
-v 表示输出详细信息,包含通过该规则的数据包数量、总字节数以及相应的网络接口。

--line-number 表示显示序号

其他链表查看规则,依此类推,比如查看nat表规则,同时删除POSTROUTING 链表的第1条规则:

iptables -t nat  -nL  --line-number

iptables -t nat  -D POSTROUTING  1

2)添加/清除默认规则

#拒绝全部input(过滤除iptables规则之外的所有请求)

iptables -P INPUT DROP

#接受全部input

iptables -P INPUT ACCEPT

其他链表的默认规则,依此类推,

比如添加OUTPUT的默认规则就改成iptables -P OUTPUT DROP

比如添加FORWARD的默认规则就改成iptables -P FORWARD  DROP

iptables -F    //安装完成基本配置-清空所有默认规则

iptables -X    //安装完成基本配置-清空所有自定义规则

iptables -Z    //安装完成基本配置-所有计数器归0

iptables -D INPUT 8    //要删除INPUT里序号为8的规则

3) 添加ssh规则

添加规则有两个参数分别是 -A 和 -I。其中

-A 是添加到规则的末尾;

-I 可以插入到指定位置,

默认:没有指定位置的话插入到规则的首部。

eg:添加一条拒绝22端口的规则到尾部。 :

iptables -A INPUT -p tcp --dport 22 -j REJECT

eg:添加一条放通某个IP地址的22端口

iptables -A INPUT -s 10.245.182.10 -p tcp --dport 22 -j ACCEPT

由于最后一条总是生效,先将所有22端口失效,再允许某个IP有效就行。

4)放通samba文件服务器端口

samba新版的已不再使用137.138.139等端口,仅使用445端口。而且仅允许192.168.1网段可以访问。

iptables -I INPUT -s 192.168.1.0/24 -p tcp  --dport 445 -j ACCEPT

5)放通mysql数据库3306端口:

仅允许192.168.1网段可以访问3306端口

iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 3306 -j ACCEPT

6)端口转发

首先开启系统的转发功能

vi /etc/sysctl.conf

将net.ipv4.ip_forward=0修改成net.ipv4.ip_forward=1

#编辑后使用命令让配置马上生效
sysctl -p

其次需要配2条规则:

#目标地址端口为3389的,转换为 192.168.1.1:3389

iptables -t nat -I PREROUTING -p tcp --dport 3389 -j DNAT --to 192.168.1.1:3389

#凡目标地址为192.168.1.1:3389的,把源地址转换为192.168.1.2

iptables -t nat -I POSTROUTING  -p tcp -d 192.168.1.1 --dport 3389 -j SNAT --to 192.168.1.2

mstsc远程访问地址192.168.1.2,iptables就会帮你转换成192.168.1.1的桌面了。

3、归档备存

最后建议建一个excel表,将各个规则写一写,包括 放通的客户机是在哪些位置啦,以及放通的原因是哪些啦。后续方便查看放通的原因。好记性不如笔头嘛。相信对于一堆iptables配置规则,如果没有文档辅助记忆,我会很抓狂。

iptables配置mysql iptables nl_linux_02