iptables作为linux自带的防火墙工具,在安全访问控制方面起着重要作用
但iptables命令又属于常见而高危的命令,使用不当可能会把自己关进小黑屋
常用操作为增删操作,修改操作相对使用较少
iptables -nvL //查看全部链的信息
iptables -nvL INPUT //查看INPUT链的信息
iptables -nL //去除-v(--verbose)较简单明了,但存在多个网卡时无法知道规则对应那个网卡
例如
在上面规则下,服务器还能正常进行登录操作(默认ssh 22端口),只是为什么?
使用-v
参数后会发现,规则限制的网卡是eth0,实际登录使用的网卡是eth1
# 插入 (iptable自上而下读取规则,优先匹配上层规则)
# -I(插入到指定位置,默认头部) -A(追加至尾部)
iptables -I INPUT -s 1.2.3.4 -j DROP //屏1.2.3.4访问(访问包被DROP掉)
iptables -I INPUT 2 -s 1.2.3.5 -j DROP //规则插入位置2
iptables -A INPUT -p tcp --dport 80 -j REJECT //禁止任何机器访问80端口
# 删除
# 使用-D参数
# 方法一:删除指定规则
iptables -D INPUT -s 1.2.3.4 -j DROP //针对(iptables -I INPUT -s 1.2.3.4 -j DROP)
# 方法二:删除指定位置的规则
iptables -D INPUT 1 //删除第一条规则
修改iptables之前,好的习惯是先备份(为什么?你尝试过修改iptables后无法登录,或者重启iptables服务后原规则丢失吗?)
# 备份
iptables-save > /tmp/iptables-save.bak0905 //保存位置自拟
# 恢复
iptables-restore < /tmp/iptables-save.bak0905
当你修改规则后,发现部分服务无法访问,可以使用备份快速恢复
假如不幸,当你添加规则,例如DROP所有eth1 tcp访问,这时你会立刻对服务器无法访问
这时候idc支持带外重启,或者光盘修复才能进行恢复
执行系统重启后,有机会遇上这样的倒霉事情,重启完毕发现所有防火墙规则都被重置了
因为iptables修改后没有执行保存,当服务器重启,或者iptables重启(service iptables restart),所有iptables规则恢复为最后一次保存的状态
所以,规则修改验证正确后,应立刻进行保存
# iptables 规则保存
service iptables save
# 假若上面命令不成功,可以
iptables-save > /etc/sysconfig/iptables //第一个命令保存失败,重启时规则可能不会恢复,这时候只需要手工restore即可
综上所述,修改防火墙规则是,正确的姿势是:
Q: 为什么系统重启后,iptables被重置?
A: iptables最后一次修改没有手工执行save操作
Q: 为什么iptables保存不成功?
A: save命令执行不成功,与操作系统以及相关配置有关;可使用iptables-save方法手工备份替代,重启后可能需要手工恢复
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。