iptables 相关内容整理

Posted hao97994

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iptables 相关内容整理相关的知识,希望对你有一定的参考价值。

注意

无论如何,iptables是一个需要特别谨慎设置的东西,万一服务器不在你身边,而你贸然设置导致无法SSH,那就等着被老板骂吧,呵呵。。。

语法:

iptables (选项) (参数)
iptables命令选项输入顺序:
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

表名包括:

raw:高级功能,如:网址过滤。
mangle:数据包修改(QOS),用于实现服务质量。
net:地址转换,用于网关路由器。
filter:包过滤,用于防火墙规则。

规则链名包括:

INPUT链:处理输入数据包。
OUTPUT链:处理输出数据包。
PORWARD链:处理转发数据包。
PREROUTING链:用于目标地址转换(DNAT)。
POSTOUTING链:用于源地址转换(SNAT)。

动作包括:

ACCEPT:            接收数据包。
DROP:              丢弃数据包。
REDIRECT:          重定向、映射、透明代理。
SNAT:              源地址转换。
DNAT:              目标地址转换。
MASQUERADE:        IP伪装(NAT),用于ADSL。
LOG:               日志记录。

常用命令

查看现在iptables规则:

iptables -L -n -v

清空配置:

iptables -F #清楚规则链中已有的条目;使用iptables -F 要小心,搞不好,你就马上同服务器断开连接了
iptables -X #删除没有用户配置文件相关的chain
iptables -Z #清空规则链中的数据包计算器和字节计数器;
使用清空配置要小心,可参考https://blog.csdn.net/ingiaohi/article/details/70559425

用规则配置:

配置,禁止进,允许出,允许回环网卡

iptables -P INPUT DROP
iptables -A OUTPUT -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

允许ping

iptables -A INPUT -p icmp -j ACCEPT

允许ssh

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

允许ftp

iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT

允许ftp被动接口范围,在ftp配置文件里可以设置

iptables -A INPUT -p tcp --dport 20000:30000 -j ACCEPT

学习felix,把smtp设成本地

iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT -s 127.0.0.1
iptables -A INPUT -p tcp -m tcp --dport 25 -j REJECT

允许DNS

iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT

允许http和https

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

允许已建立的或相关连的通行

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

禁止其他未允许的规则访问

iptables -A INPUT -j REJECT #(注意:如果22端口未加入允许规则,SSH链接会直接断开。)
iptables -A FORWARD -j REJECT

屏蔽ip——使用-I参数

iptables -I INPUT -s 123.45.6.7 -j DROP       #屏蔽单个IP的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP      #封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP    #封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 123.45.6.0/24 -j DROP    #封IP段即从123.45.6.1到123.45.6.254的命令是

删除已添加的iptables规则——使用-D参数

假设之前用iptables -A INPUT -s 192.168.1.4 -j DROP 添加的规则

iptables -D INPUT -s 192.168.1.4 -j DROP

或者

查出当前规则的列表,使用当前列表下的序号:由下至下顺序

iptables -D INPUT 3 #这里是删除第三条

修改规则——使用-R参数

假设之前用iptables -A INPUT -s 192.168.1.4 -j DROP 添加的规则

iptables -R INPUT -s 192.168.1.4 -j DROP

或者

查出当前规则的列表,使用当前列表下的序号:由下至下顺序

iptables -R INPUT 3 -j ACCEPT

规则永久生效:包括重启

service iptables save #保存
service iptables restart #重启iptables防火墙

备份与还原

保存配置

iptables-save > /etc/iptables #(注意:后边这个文件路径可以自选)

还原配置

iptables-restore < /etc/iptables #(注意:后边这个文件路径可以自选,要是前边备份文件的位置)

关于不重启规则不生效的解决

使用iptables命令操作的规则仅对当前会话有效,规则存在于内存中,如果重启就会丢失规则,上边提到永久生效的方法,经测试debian下没有成功,所以这里额外记述一些解决方案
本方法的原理是使用重启后系统会扫描并执行指定文件夹下的脚本,在脚本内执行还原之前保存的规则文件

step1

保存规则
iptables-save > /etc/iptables/iptables-script

step2

在/etc/network/if-pre-up.d目录下创建脚本
vim /etc/network/if-pre-up.d/auto_restore_iptables

step3

添加如下内容,其中后边的路径为保存的规则文件路径
#!/bin/sh
/sbin/iptables-restore < /etc/iptables/iptables-script
保存退出

step4

为脚本添加可执行权限
sudo chmod +x /etc/network/if-pre-up.d/auto_restore_iptables

至此,已经完成开机自动还原规则的操作了

那么增、删、改等操作就简单了

1.使用命令修改规则

2.保存规则

iptables-save > /etc/iptables/iptables-script

以上是关于iptables 相关内容整理的主要内容,如果未能解决你的问题,请参考以下文章

最全最详细publiccms其他常用代码片段(内容站点)

IOS开发-OC学习-常用功能代码片段整理

VS2015 代码片段整理

sublime text3 增加代码片段(snipper)

AJAX相关JS代码片段和部分浏览器模型

片段内容未出现在手机上