标签归档:linux

设置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自带的保存呢,我只能说:好麻烦。。。。

Linux定时检查程序运行状态

当初偶那么一不小心,不知怎么给PHP配了个和MySQL版本不匹配的so文件,于是我的数据库就经常因为某些兼容问题挂吖挂吖挂吖。。。动不动MySQL服务就会挂掉,但我又不知道该怎么搞出正确的库,所以只好搞这么一个时刻检查服务是否正确运行的办法来折中一下…

要让检查脚本自动定时执行,我们需要cron,linux里应该都自带了。然后我们需要一个检查脚本,来检查程序是否正在执行,如果不在执行,则启动它。

这里我已经写好了一个

#! /bin/sh
c=`ps -ef | grep 'mysql' |grep -v grep |wc -l`
if [ $c -eq 0 ]
then
	echo "MySQL is not running,starting it."
	echo `service mysql start`
	echo ""
else
	echo "MySQL running!"
fi

c=`ps -ef | grep 'apache2' |grep -v grep |wc -l`
if [ $c -eq 0 ]
then
	echo "Apache2 is not running,starting it."
	echo `service apache2 start`
	echo ""
else
	echo "Apache2 running!"
fi

c=`ps -ef | grep 'sshd' |grep -v grep |wc -l`
if [ $c -eq 0 ]
then
	echo "SSH is not running,starting it."
	echo `service sshd start`
	echo ""
else
	echo "SSH running!"
fi

echo "Service checked done!"

这是一个检查apache2,mysql和ssh三个重要服务的脚本,当发现程序不在运行,脚本就会启动服务。
继续阅读Linux定时检查程序运行状态