首页 > 技术文章 > 再识iptables规则

sunnyyangwang 2017-05-14 22:38 原文

实验机器

测试机:192.168.1.140 CentOS release 6.5

客户端:192.168.1.179 CentOS release 6.5

描述,客户端通过nmap知悉测试机的22、80、443、3306tcp接口有服务。

 

1、基础部分

查看是否开启状态:service iptables status

-nvL 就是查看规则, -F 是临时清除当前规则,重启系统或者重启 iptalbes 服务后还会加载已经保存的规则,所以需要使用 /etc/init.d/iptables save 保存一下规则,通过上边的命令输出我们也可以看到,防火墙规则保存在了/etc/sysconfig/iptables 你可以查看一下这个文件。

 

重点案例:

a、远程SSH登陆,我们要开启22端口.

[root@tp ~]# iptables -A INPUT -s 192.168.1.179 -p tcp --dport 22 -j ACCEPT

[root@tp ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT (注:这个规则,如果你把OUTPUT 设置成DROP的就要写上这一部,好多人都是望了写这一部规则导致,始终无法SSH)

 

b、允许icmp包通过,也就是允许ping,

[root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)

[root@tp ~]# iptables -A INPUT -s 192.168.1.179 -p icmp -j DROP (INPUT设置成DROP的话)

[root@tp ~]# iptables -A INPUT -s 192.168.1.10/24 -p icmp -j ACCEPT

[root@localhost ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP

--icmp-type 这个选项是要跟-p icmp 一起使用的,后面指定类型编号。这个8指的是能在本机ping通其他机器,而其他机器不能ping通本机。

 

c、按序号删除规则

忘记创建规则,直接删除序号

[root@localhost ~]# iptables -nL --line-numbers

Chain INPUT (policy ACCEPT)

num target prot opt source destination

1 ACCEPT tcp -- 192.168.1.179 0.0.0.0/0 tcp dpt:22

2 DROP tcp -- 192.168.1.180 0.0.0.0/0 tcp dpt:80

3 DROP all -- 192.168.1.181 0.0.0.0/0

4 ACCEPT icmp -- 192.168.1.0/24 0.0.0.0/0

Chain FORWARD (policy ACCEPT)

num target prot opt source destination

Chain OUTPUT (policy ACCEPT)

num target prot opt source destination

1 DROP tcp -- 0.0.0.0/0 192.168.1.79 tcp dpt:22

2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0

3 ACCEPT icmp -- 192.168.1.179 0.0.0.0/0

删除某一条规则使用如下命令:

[root@localhost ~]# iptables -D OUTPUT 1

[root@localhost ~]# iptables -nL --line-numbers

 

2、路由功能

a、内核参数相关的配置文件,打开路由转发功能

[root@1-243 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward 开启路由转发(临时生效)

[root@1-243 ~]# cat /etc/sysctl.conf 开启路由转发(永久生效)

 

b、iptables对nat表做IP转发,-s 表示内部需要上网的ip段,-o 选项后跟设备名,即出口网卡,MASQUERADE表示伪装

[root@1-243 ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE

 

c、实现端口转发功能

将局域网业务代理出去

[root@1-243 ~]iptables -t nat -A PREROUTING -d 120.237.xx.xxx -p tcp -m tcp --dport 82 -j DNAT --to-destination 192.168.1.244:82 

推荐阅读