Linux下配置iptables详细步骤
前段时间对一台服务器进行了防火墙配置,在配置完成后总结了配置过程。希望后人可以少走弯路,也希望大神可以指出不足之处,我们大家一起进步。正片开始:
什么是iptables?
在我们服务器上一般都会安装防火墙,iptables是一种比较常用的免费防火墙,它可以阻挡一些非法的请求,对数据进行过滤。
安装iptables
进入SSH终端,首先查看是否已经安装了iptables,输入命令:
whereis iptables
出现以下的类似信息,说明此服务器上已经安装好了iptables,只需要进行规则配置即可:
iptables: /sbin/iptables /usr/share/iptables /usr/share/man/man8/iptables.8.gz
如果没有任务信息,则需要进行手动安装,输入命令:
apt-get install iptables
等待安装完成……
检查iptables配置信息的命令为:
sudo iptables -L -v -n
如果以前没有进行过此类配置,那么配置应为空:
Chain INPUT (policy ACCEPT 1235M packets, 1591G bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 1196M packets, 1321G bytes)
pkts bytes target prot opt in out source destination
Tips:你可以每配置一条规则查看一下配置信息,不仅可以检查配置是否有误,还可以让你尽快理解配置规则命令的作用。
配置iptables
配置iptables有两种方式,一种是通过iptables的配置文件进行配置,一种是直接通过命令来实现配置。我采用的是第二种配置方式,个人认为通过命令配置比较容易上手(如果有需要第一种配置方式的,请在评论区告诉我)下面配置开始:
- 允许环回端口,有许多程序是通过环回端口进行通信的,我们一般将它作为第一个规则插入:
sudo iptables -i INPUT 1 -i lo -j ACCEPT
- 允许已经建立的会话接收流量:
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- 允许指定的端口传入流量:
在这里我们一般必须允许的端口有:
SSH端口、http端口、https端口、ftp端口
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
其他端口则视自己情况而定,事先查看好自己项目所需要开放的端口,按照以上格式开放即可。
敲黑板,期末要考:一定要在阻止其他流量之前先允许SSH端口传入,执行保存操作之前记得检查,否则你将无法通过SSH进行登录。
PS:3306端口我不建议大家开放,操作数据库尽量在服务器本地进行操作,项目中的数据库连接方式也尽量使用内网进行连接,提升了安全性还能避免占用外网带宽。何乐而不为呢?
- 阻止其他流量:
在接收到我们想要的流量之后,可以在最后对其他的所有流量进行阻止:
sudo iptables -A INPUT -j DROP
基本的配置就差不多了,其他的可以根据自己的需求来进行相应的配置。
如果你想要删除某条规则,只需要将配置规则时的-A改为-D即可删除对应的规则。
保存iptables配置
不保存也会生效,只是在重启服务器以后配置会消失,想要在重启后依然保留此配置,需要执行命令:
iptables-save
禁用防火墙
清除所有规则时需注意:以下命令需按顺序执行,直接执行最后一条据说会产生很严重的后果,我也没有尝试过。
sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -F
到此,iptables的配置基本完成,如果有什么不明白或者发现问题的,欢迎评论或者私信我,谢谢各位!