防火墙-iptables常用操作命令

常用操作命令

#查看已经添加的规则
iptables -L -n -v 

#清空制定链INPUT上面的规则
iptables -F INPUT 

#删除制定的链,这个链必须没有被其他任何规则引用,而且这条上必须没有任何规则。如果没有指定链名,则会删除该表中所有非内置的链。
iptables -X INPUT 

#把指定链,或者表中的所有链上的所有计数器清零
iptables -Z INPUT 

#添加规则
iptables -t filter -l INPUT -s x.x.x.x -j DROP 

#删除iptables中的记录
iptables -t filter -D INPUT -s x.x.x.x -j DROP 

#保存配置
iptables-save > /etc/sysconfig/tables 

#重载配置
iptables-restore < /etc/sysconfig/iptables 

自定义链

iptables的默认链就已经能够满足大部分场景了,为什么还需要自定义链呢?
原因如下:
当默认链中的规则非常多时,不方便管理。假设如果INPUT链中存放了200条规则,这200条规则有针对httpd服务的,有针对sshd服务的,有针对私网IP的,有针对公网IP的,假如,我们突然想要修改针对httpd服务的相关规则,难道我们还要从头看一遍这200条规则,找出哪些规则是针对httpd的吗?这显然不合理。
所以,iptables中,可以自定义链,通过自定义链即可解决上述问题。

自定义链并不能直接使用,而是需要被默认链引用才能够使用,即默认生效的还是默认的五条链,而自定义链必须在某条默认脸的某个规则里设置target为自定义连,然后才会被使用。

# 创建一条名为xxx的自定义链:
iptables -N xxx
# 创建一条引用xxx链的规则
iptables -l INPUT -p tcp --dport 80 -j xxx

黑白名单机制

报文在经过iptables的链时,会匹配链中的规则,遇到匹配的规则时,就执行对应的动作,如果链中的规则都无法匹配到当前报文,则使用链的默认策略(默认动作),链的默认策略通常设置为ACCEP或者DROP。
那么,当链的默认策略设置为ACCEPT时,如果没有对应的链中没有配置任何规则,就表示接受所有的报文,如果对应的链中存在规则,但是这些规则没有匹配到报文,报文还是会被接受。
同理,当链的默认策略设置为DROP时,如果对应的链中没有配置任何规则,就表示拒绝所有报文,如果对应的链中存在规则,但是这些规则没有匹配到报文,报文还是会被拒绝。

白名单机制更加安全一些,黑名单机制更加灵活一些。
ACCEPT – 白名单
DROP --黑名单

# 设置黑白名单
iptables -A INPUT -s x.x.x.x -j ACCEPT # 白
iptables -A INPUT -p tcp -s x.x.x.x -j DROP # 黑

# 设置默认规则命令为:
iptables -p INPUT DROP # 配置默认的不让进
iptables -P OUTPUT ACCEPT # 默认的可以出去
iptables -P FORWARD DROP # 默认的不允许转发

常见主机/网关应用

主机/服务器

主机类防火墙主要应用于本机进出的数据的安全控制。

# 开放本机80.443端口
iptables -t filter -l INPUT -p tcp -m multiport --dports 80,443 -j REJECT

# 已经建立的连接得让它进来
iptables -A INPUT -M state -- state ESTABLISHED,RELATED -j ACCEPT

# 屏蔽整个段
iptables -l INPUT -s 123.0.0.0/8 -j DROP

# 允许本机访问
iptables -l INPUT -i lo -j ACCEPT

# 防止SYN洪水攻击
iptables -A INPUT -p tcp --syn -m limit --limit 5/second -j ACCEPT

网关

网关类防火墙主要应用于经过网关转发数据的安全控制。

转发控制

# 允许转发
iptables -A FORWARD -s x.x.x.x/8 -j ACCEPT

# 禁止内网与外网互访
iptables -A FORWARD -s x.x.x.x/16 -d x.x.x.x/16 -j ACCEPT

地址转换

# 公网183.6.180.230让内网10.0.0.0/10上网
iptables -t nat -A POSTROUTING -s 10.0.0.0/10 -j SNAT --to-source 183.4.180.230

# 本机的2222端口映射到内网虚拟机的22端口
iptables -t nat -A PREROUTING -d 210.14.67.127 -p tcp --dport 2222 -j DNAT --to-dest 192.168.188.115:22

VPN节点

扫描二维码关注公众号,回复: 12905763 查看本文章
# 允许GRE协议
iptables -A INPUT -p gre -j ACCEPT
# 允许数据转发
iptables -A FORWARD -j ACCEPT

猜你喜欢

转载自blog.csdn.net/qq_42748009/article/details/111572008