面由于Linux的开源,使得Linux强大功能的背后,总是有些不尽人意的地方,为了使Linux达到一个最安全的程度,还要不断的来对Linux配置要下一番功夫。
所以一般要注意主机的包漏洞修补,放火墙的设置,关闭危险服务(端口)以及每日的日志分析.
再这里我们以端口来讲述一下安全方面的问题
什么是端口
一台主机的端口可以分为监听端口与随机取用的高级端口.所谓监听端口就是主机开启了哪些服务,那么这个服务会在Linux系统里启用一个端口来监听客户端的请求.例如FTP服务器,就会开放21号端口,这个端口会一直启用,直到FTP服务关闭为止.所谓随机取用的高级端口就是Linux要向某个主机请求服务时,Linux主机需要启用一个端口来对外连接,那么端口号是多少?Linux会随机取用一个未被使用且端口号大于1024的端口进行连接.
所以server/Client之间的数据传送其实就是端口与端口之间的传送.
总共有多少端口,哪些是保留端口
端口编号是由1-65535组成,所以会有65535个端口.一般而言,只有root才可以开启1-1023一内的端口,这些端口就是特殊抟口,用于保留给系统使用.至于大于1024的端口,除了给系统随机取用作为连接需求之外,也可以用来服务的监听之用.
如果1-1023的端口的程序被入侵,那将表示入侵者拥有root的权限,是因为只有root才可以开启1-1023一内的端口.这个时候就要注意主机的安全了.
在Linux中保留端口与它所对应的服务其实已经有了一个对照表,那就是/etc/services文件,可以使用netstat -n以数值方式显示连接状态,使用netatst -tl可以显示当前正在监听的服务名称. /etc/services文件也是某些端口启动时设置端口的重要依据.
要了解所谓的端口与服务对于安全的关系:真正影响面安全的并不是端口,而是启动端口的服务.
所以真正的危害是某些不安全的服务而不是开放的端口.基本上,如果没有必要,就关掉一些用不到的端口,而且服务的版本要持续更新.
如何查看端口
1.需要知道主机当前开了多少端口?
2.了解服务跟端口对应的文件是那一个?/etc/services
介绍查看主机端口最常用的命令:
netstat:在本机上检查自己的程序检测端口,没有危险
nmap:在本机上以特殊的检测程序检测自己,可能会违法
关闭或启动一个端口
要开或关闭一个端口,只需要开启或关闭一个服务即可.所以,当检测完端口后,接下来就是要找出端口所对应的服务,将该服务关掉,就会把端口关掉.
设置开机时启动服务的方法
如果以文字方式登录,文字界面的run-level为3,所以就在/etc/rc.d/rc3.d里可以找到服务的启动参数,就是以S开头的文件.如果不要启动一些服务,就将服务对应的文件(以S开头的文件)删除即可.
一般情况下不需要手工删除文件,Linux一般为我们提供了程序可以完成:
ntsysv
setup
是不是要将所有的Linux默认的服务关闭?因为系统有很多服务是一定要启动的,否则反而变的不安全.
以下列出一些完全没有对外开放端口,但却是系统必须的服务,这些服务不要关闭.
atd:在例行命令里提到的,只执行一次的预约执行任务,务必启动
cron:在例行命令里提到的,循环执行的命令,务必启动
iptables:防火墙,无论如何,先启动它
keytables:设置键盘上的字母格式,当然需要读入,否则如何控制
network:网络功能
random:快速使系统在随即时间内保存到映象文件,对系统相当重要,因为在开机之后,系统回迅速回复到关 机之前的状态
syslog:在系统日志文件提过,是相当重要的文件,务必启动
xinetd:服务器面理器super deamon,是必须启动的服务之一
xfs:如果使用run-level的图形界面,这个必须启动
关闭所有对外开放的端口
在装完Linux后,就要将不必要的程序或服务关闭,最重要的是将对外开放的端口先关闭,需要的时候在开启.如果要假设服务器,可以逐个开启这些端口.
1.使用ntsysv设置开机时启动哪些服务
一般只选择:atd,cron,iptables,keytables,network,random,syslog,xinetd,xfs(如有图形界面)
2.重新启动
reboot
3.查看当前开启了多少端口
netstat -an