利用iptables设置了一套简单的防火墙

利用iptables设置了一套简单的防火墙

Posted by ivo on April 18, 2019

利用iptables设置了一套简单的防火墙。

学习资料

建立规则 和上篇一样,我把这个过程写成了Bash脚本文件,代码如下: (我的代码重度参考了文章Linux上iptables防火墙的基本应用教程)

#!/bin/bash

清除已有iptables规则

iptables -F iptables -X iptables -Z

开放本机向外的所有访问

iptables -A OUTPUT -j ACCEPT

允许本地回环接口(即运行本机访问本机)

iptables -A INPUT -i lo -j ACCEPT

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

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

开放ssh端口

echo Input Server SSH port read ServerSSHport iptables -A INPUT -p tcp –dport $ServerSSHport -j ACCEPT

开放ShadowSocks Server端口

echo Input ShadowSocks Server port read ShadowSocksServerPort iptables -A INPUT -p tcp –dport $ShadowSocksServerPort -j ACCEPT

参照上几条规则,开放自己需要的服务端口,比如HTTP、FTP、VPN等

不允许其它机器ping通本机

iptables -A INPUT -p icmp -j REJECT

最后两条,禁止所有未允许的访问,禁止所有未允许的转发

iptables -A INPUT -j REJECT iptables -A FORWARD -j REJECT 查看状态 运行脚本后,防火墙规则就建立好了。执行代码iptables -L -n可以查看当前规则。

Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all — 0.0.0.0/0 0.0.0.0/0 ACCEPT all — 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:SSH_PORT ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:SS_PORT REJECT icmp — 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable REJECT all — 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT) target prot opt source destination REJECT all — 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT all — 0.0.0.0/0 0.0.0.0/0 自动保存 在Ubuntu环境下,iptables代理规则是没法自动保存。网上资料推荐的方法是:修改脚本执行权限让网卡关闭是保存iptables规则,启动时加载iptables规则。DigitalOcean则很用心的写了一篇iptables设置教程推荐了iptables-persistentdeb包。在安装deb包时会自动检测当前的iptables规则,并生成文件在下次重启时自动加载。

sudo apt-get install iptables-persistent

本内容同步更新在我的个人博客 「北极星」 https://ezlost.com 搜索查询关注订阅评论 更加方便快捷.内容转载请注明来源。