标签归档:iptables

设置Linux端口封闭

设置端口封闭是为了尽可能保证服务器安全,以免不必要的麻烦。另外,设置mysql端口对外封闭可以大大减小被爆破的风险。

对于一个普通的网站服务器来说,只要留下几个端口即可,如果还有其它的服务需求,也可以再多留几个。

设置端口封闭需要用到iptables,用它实际上可以设置很多通讯相关的东西这里仅写一下开放部分端口的方法(因为我刚刚这么做了。。

iptables -t filter -A INPUT -i lo -j ACCEPT			#回环,允许本地请求访问本地端口
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  #允许本地发起的连接接收数据,这一行很重要,没有它会造成服务器对外发出的请求无法接受到数据
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT     #留下ssh端口
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT     #留下http端口
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT     #留下https端口
iptables -t filter -A INPUT -p udp --dport 500 -j ACCEPT     #不知是啥,反正无害
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT     #不是DNS服务器的话可以去点这行以及下一行
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 1701 -j ACCEPT     #不知是啥

# 允许PING
iptables -t filter -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

#其他请求(没有和上面匹配的请求)全部丢弃,也就是封闭其他端口
iptables -t filter -P INPUT DROP

此时也就已经实现了我本来需要的目的:阻止外部连接到我的数据库。

由于iptables的设置是即时生效的,所以千万不要一开始在终端就输入上面的最后一句,一旦输入了。。。你就连不上了(所以我才把它放在最后一行)
然后把它们放进一个shell文件里运行它,或者直接加进开机启动项。

要是你要问我为啥不用iptables自带的保存呢,我只能说:好麻烦。。。。