ip

备注

192.168.174.128

本地主机

192.168.174.129

客户端

本文参考:

c代码实现iptables设置 用iptables举例_centos


1:iptables有几个表以及每个表有几个链

5表5链
Filter : INPUT,OUTPUT,FORWARD
NAT : POSTROUTING,PREROUTING,OUTPUT
Mangle : INPUT,OUTPUT,FORWARD,POSTROUTING,PREROUTING
raw : PREROUTING, OUTPUT
security表
2:iptables的几个表以及每个表对应链的作用,对应企业应用场景

filter表:
主要用于对数据包进行过滤,根据具体的规则决定是否放行该数据包(如DROP、ACCEPT、REJECT、LOG)。filter
表对应的内核模块为iptable_filter,包含三个规则链: INPUT链:INPUT针对那些目的地是本地的包;
FORWARD链:FORWARD过滤所有不是本地产生的并且目的地不是本地(即本机只是负责转发)的包;
OUTPUT链:OUTPUT是用来过滤所有本地生成的包; 企业工作场景:主机防火墙

nat表: 主要用于修改数据包的IP地址、端口号等信息(网络地址转换,如SNAT、DNAT、MASQUERADE、REDIRECT)。属于一个流的包(因为包 的大小限制导致数据可能会被分成多个数据包)只会经过这个表一次。如果第一个包被允许做NAT或Masqueraded,那么余下的包都会自动地被做相同的操作,也就是说,余下的包不会再通过这个表。表对应的内核模块为 iptable_nat,包含三个链: PREROUTING链:作用是在包刚刚到达防火墙时改变它的目的地址; OUTPUT链:改变本地产生的包的目的地址; POSTROUTING链:在包就要离开防火墙之前改变其源地址; (centos7中还有INPUT,centos6中没有) NAT功能一般企业工作场景

mangle表 主要用于修改数据包的TOS(Type Of Service,服务类型)、TTL(Time To
Live,生存周期)指以及为数据包设置Mark标记,以实现Qos(Quality Of
Service,服务质量)调整以及策略路由等应用,由于需要相应的路由设备支持,因此应用并不广泛。
包含五个规则链:PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD。

raw表
是自1.2.9以后版本的iptables新增的表,主要用于决定数据包是否被状态跟踪机制处理。在匹配数据包时,raw表的规则要优先于其他表。
包含两条规则链——OUTPUT、PREROUTING

c代码实现iptables设置 用iptables举例_目的地址_02

3:请写出查看iptables当前所有规则的命令

# iptables -L

4:禁止来自192.168.100.20ip地址访问80端口的请求

# iptables -A INPUT -s 192.168.100.20 -p tcp --dport 80 -j DROP
或iptables -A INPUT -s 192.168.100.20 -p tcp --dport 80 -j REJECT

5:实现把访问192.168.100.20:80的请求转到192.168.100.30:80

# echo 1 > /proc/sys/net/ipv4/ip_forward		//开启路由转发功能
# iptables -t nat -A PREROUTING -d 192.168.174.128 -p tcp --dport 80 -j  DNAT --to 192.168.174.129:80
# iptables -t nat -A POSTROUTING -d 192.168.174.129 -p tcp --dport 80 -j SNAT --to 192.168.174.128

6:写一个防火墙配置脚本,只允许远程主机访问本机的80端口

iptables -F
iptables -X
iptables -P INPUT DROP
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

7:限制客户端对本机telnet服务并发连接数小于等于3

# iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j DROPT

8:仅允许周1、3、5 , 8点到18点访问本机telnet

#iptables -I INPUT -d 192.168.174.128 -p tcp --dport 23 -m time --timestart 08:00:00 --timestop 18:00:00 --weekdays Mon,Wed,Fri -j ACCEPT

9:iptables只开启ssh、web、telnet访问

#iptables -A INPUT -d 192.168.174.128 -p tcp -m multiport --dports 22:23,80 -j ACCEPT
#iptables -A OUTPUT -s 192.168.174.128 -p tcp -m multiport --sports 22:23,80 -j ACCEPT
#iptables -A INPUT -d 192.168.174.128 -j DROP
#iptables -A OUTPUT -s 192.168.174.128 -j DROP

10:指定ip地址范围可以访问本机mysql

# iptables -I INPUT 1 -d 192.168.174.128 -p tcp --dport 3306 -m iprange --src-range 192.168.174.100-192.168.174.130 -j ACCEPT
# iptables -I OUTPUT 1 -s 192.168.174.128 -p tcp --sport 3306 -m iprange --dst-range 192.168.174.100-192.168.174.130 -j ACCEPT