关闭不必要的端口和服务-CentOS
时间:2014-10-07 16:43 来源:linux.it.net.cn 作者:it
为了保证服务器的安全,严格限制开放的端口是非常必要的,一般来讲,非必要的端口/服务都应该关闭。
首先要检测一下哪些端口是开放的:
运行: netstat -tunlp
在我的CentOS 6主机上的结果如下:
1
Active Internet connections (only servers)
2
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
3
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1760/mysqld
4
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 907/sshd
5
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 983/master
6
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 2280/vsftpd
7
tcp 0 0 :::80 :::* LISTEN 28671/httpd
8
tcp 0 0 :::22 :::* LISTEN 907/sshd
9
tcp 0 0 ::1:25 :::* LISTEN 983/master
10
tcp 0 0 :::21 :::* LISTEN 2280/vsftpd
可以看到这个linux服务器上4个端口是开放的。– 前4条是IPv4的表示, 后面4条是给IPv6用的。
其中25号端口只有本地(127.0.0.1)才可以连接。
sshd 当然不能关闭,否则无法ssh登录了。
mysqld也不可一关闭,否则数据库就无法连接了。
但FTP(vsftp)应该是不需要的, 几乎在所有的情况下,都可以用SFTP (SSH FTP)来代替传统的FTP。因此我们需要把ftp服务关闭。
1
chkconfig vsftp off
2
3
/etc/init.d/vsftp stop
如果你的列表中有服务是你不希望开放的,你可以通过service xxx stop 以及 chkconfig来关闭这些服务
但有个问题,我希望mysql只接收localhost的连接,拒绝任何外部连接。如何设置呢?
最简单的方法: 通过设置/etc/my.cnf来实现:
在my.cnf配置文件中[mysqld]部分加上
1
bind-address=127.0.0.1
然后 重新启动mysqld 的服务。
1
sudo /etc/init.d/mysqld restart
我们再次运行 netstat -tunlp ,结果如下
1
Active Internet connections (only servers)
2
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
3
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1760/mysqld
4
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 907/sshd
5
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 983/master
6
tcp 0 0 :::80 :::* LISTEN 28671/httpd
7
tcp 0 0 :::22 :::* LISTEN 907/sshd
8
tcp 0 0 ::1:25 :::* LISTEN 983/master
这表明Mysql目前确实只监听 来自localhost(127.0.0.1)的请求了。
是不是这样可以了呢? 那防火墙还有没有必要设置了呢?
事实上,这样设置并没有彻底向外界关闭3306端口, 一些端口探测工具仍然会检测到你的服务器上的3306端口是OPEN的,并可以向这个端口发包,只是这些试图连接和攻击的数据包会被mysql服务拒绝而已。 因此我们还是需要配置相应的防火墙来彻底阻断外界的攻击。
(责任编辑:IT)
为了保证服务器的安全,严格限制开放的端口是非常必要的,一般来讲,非必要的端口/服务都应该关闭。 首先要检测一下哪些端口是开放的: 运行: netstat -tunlp 在我的CentOS 6主机上的结果如下:
可以看到这个linux服务器上4个端口是开放的。– 前4条是IPv4的表示, 后面4条是给IPv6用的。 但FTP(vsftp)应该是不需要的, 几乎在所有的情况下,都可以用SFTP (SSH FTP)来代替传统的FTP。因此我们需要把ftp服务关闭。
如果你的列表中有服务是你不希望开放的,你可以通过service xxx stop 以及 chkconfig来关闭这些服务
但有个问题,我希望mysql只接收localhost的连接,拒绝任何外部连接。如何设置呢?
然后 重新启动mysqld 的服务。
我们再次运行 netstat -tunlp ,结果如下
这表明Mysql目前确实只监听 来自localhost(127.0.0.1)的请求了。
是不是这样可以了呢? 那防火墙还有没有必要设置了呢? |