iptables

作者: 国王12 | 来源:发表于2019-08-20 20:48 被阅读0次

一、首先熟悉一些名词

容器:瓶子,放东西的
表(table): 存放链的容器
链(chain): 存放规则的容器
规则(policy): 准许ACCPT或拒绝DROP规则

二、iptables执行过程

1.防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
2.匹配 表示 阻止还是通过,数据包就不再向下匹配新的规则 。
3.如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明  确的阻止还是通过。
4.防火墙的默认规则是所有规则执行完才执行的。
image.png

三、四表五链

表:
filter(默认,防火墙功能,准许 拒绝)
nat (nat功能:共享上网,端口映射)
mangle
raw

四表五链流程:

四、安装部署

下载
yum install -y iptables-services

加载内核模块(临时生效,写入rc.local永久生效)
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state

lsmod | egrep 'ipt|nat|filter'

systemctl start iptables.service
systemctl enable iptables.service 

五、常用命令-filter表

1.查看规则

查看默认表规则
iptables -nL
查看nat表规则
iptables -t nat -nL

2.清空规则

iptables -F
iptables -X
iptables -Z
-F,--flush   清除所有规则,不会处理默认的规则
-X  删除用户自定义的链
-Z  链的计数器清零(数据包计数器与数据包字节计数器)

3.删除INPUT的第一条规则

iptables -D INPUT 1
依此类推

3.配置规则

3.1.IP相关

1.禁止10.0.0.7访问22端口
iptables -I INPUT -s 10.0.0.7 -p tcp --dport 22 -j DROP

2.禁止172.16.1.0网段访问8080端口
iptables -I INPUT -s 172.16.1.0/24 -p tcp --dport 8080 -j DROP

3.只允许10.0.0.0网段访问(设置白名单)
iptables -I input ! -s 10.0.0.0/24 -j DROP

3.2.端口相关

禁止用户访问1024-65535端口
iptables -I INPUT -p tcp --dport 1024:65535 -j DROP

禁止用户访问80端口和443端口
iptables -I INPUT -p tcp -m multiport --dport 80,443 -j DROP

3.3禁止被ping

通过内核参数设置禁止被ping
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
sysctl -p

通过防火墙设置禁止被ping
iptables -I INPUT -p icmp--icmp-type 8 -j DROP

3.4生产用法

允许22端口接入
iptables -I INPUT -p  tcp --dport 22 -j ACCEPT 

流量进来出去走lo网卡
iptables -A INPUT -i lo -j ACCEPT 
iptables -A OUTPUT -o lo -j ACCEPT 

允许80,443端口接入
iptables -I INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT 

修改默认规则为拒绝
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

设置10.0.0.0网段为白名单
iptables -A INPUT -s 10.0.0.0/24 -j ACCEPT

六、常用命令-nat表

1.共享上网

把172.16.1.7转换为10.0.0.61访问外网
iptables -t nat -A POSTROUTING  -s 172.16.1.7 -j SNAT --to-source  10.0.0.61

把172.16.1.0网段转换为10.0.0.61访问外网
iptables -t nat -A POSTROUTING  -s 172.16.1.0/24 -j SNAT --to-source  10.0.0.61

开启转发规则
echo 'net.ipv4.ip_forward = 1'  >> /etc/sysctl.conf 
sysctl -p

2.端口转发

客户端访问10.0.0.61 9000端口 跳转至172.16.1.7 22端口
iptables -t nat -A POSTROUTING  -d 10.0.0.61 -p tcp --dport 9000 -j DNAT --to-destination 172.16.1.7:22

注意查看是否配置了转发规则
tail -1 /etc/sysctl.conf
net.ipv4.ip_forward=1

#注意:内网的服务器需要把网关设置为防火墙的IP

3.IP转发

添加临时IP10.0.0.62
ip a a 10.0.0.62/24 dev eth0 lable eth0:0

访问10.0.0.62,自动跳转至172.16.1.7
iptables -t nat -A PREROUTING  -d 10.0.0.62   -j DNAT  --to-destination 172.16.1.7

删除临时IP
ip a del 10.0.0.62/24 dev eth0

相关文章

网友评论

      本文标题:iptables

      本文链接:https://www.haomeiwen.com/subject/isemsctx.html