Linux默认安装好之后,很多端口默认是开启状态,当我们已经在linux上搭建好服务之后,
需要按照自己需求,把不需要的端口关闭 ,这样既节省了系统资源,也保证了系统的安全性。
使用netstat命令,来查看系统开启的端口:
参数解释:
-n, --numeric don't resolve names
--numeric-hosts don't resolve host names
--numeric-ports don't resolve port names
--numeric-users don't resolve user names
-t 只显示tcp连接.(不知道man文件为什么没有-t,算了.)
-l, --listening display listening server sockets
-p, --programs display PID/Program name for sockets
[root@Web-2 ~]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:38412 0.0.0.0:* LISTEN 1472/rpc.statd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1662/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1552/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1738/master
tcp 0 0 0.0.0.0:5672 0.0.0.0:* LISTEN 1807/qpidd
tcp 0 0 :::80 :::* LISTEN 3537/httpd
tcp 0 0 :::22 :::* LISTEN 1662/sshd
tcp 0 0 ::1:631 :::* LISTEN 1552/cupsd
tcp 0 0 :::39928 :::* LISTEN 1472/rpc.statd
tcp 0 0 ::1:25 :::* LISTEN 1738/master
好了,上面就是我们本机系统所开启的端口.还有运行的程序,PID什么的...
现在我处理一下 这段文本, 看起来更好看一点,直观一点..
我们只需要开启的端口,还有程序等信息....
下面是经过处理过 格式化的信息./.
[root@Web-2 ~]# netstat -ntlp | awk -vOFS=":" '/^tcp/ {print $4,$NF}'|awk -F: 'BEGIN{printf "PORT""\t""PID/PROGRAMS""\n"}{printf $(NF - 1)"\t---"$NF"\n"}'|sort -n|uniq
PORT PID/PROGRAMS
22 ---1662/sshd
25 ---1738/master
80 ---3537/httpd
631 ---1552/cupsd
5672 ---1807/qpidd
38412 ---1472/rpc.statd
39928 ---1472/rpc.statd
额 ,这样是不是清楚点....左边是端口,右面是开启这个端口的程序 ,还有PID.
首先你必须知道,端口不是独立存在的,它是依附于进程的。某个进程开启,那么它对应的端口就开启了,进程关闭,则该端口也就关闭了。下次若某个进程再次开启,则相应的端口也再次开启。而不要纯粹的理解为关闭掉某个端口,不过可以禁用某个端口。
ok?
好,现在开始,关闭端口.... ..
改怎么做呢 ? 方法很多...一种一种说 ....
方法一:
使用kill命令,直接干掉这个程序进程,进程关闭了, 当然它对应的端口也就关闭了,ok?
kill -9 [PID] -9 是强制kill,后面加上改进程的PID。
方法二:
额 ,比如我想关闭80端口,也就是这个程序httpd.
[root@Web-2 ~]# ls -l /etc/init.d/httpd
-rwxr-xr-x. 1 root root 3371 Dec 9 2011 /etc/init.d/httpd
[root@Web-2 ~]# /etc/init.d/httpd stop
Stopping httpd: [ OK ]
或者
[root@Web-2 ~]# service httpd stop
Stopping httpd: [ OK ]
ok了,到此结束吧/