Linux:网络安全与主机基本防护:限制端口, 网络升级与 SELinux

来源:互联网 发布:邮箱数据购买 编辑:程序博客网 时间:2024/04/30 07:13

http://blog.csdn.net/pipisorry/article/details/72123815

系统基本设置

网络设置 (手动设置与DHCP自动取得)

目前的主流网卡为使用以太网络协定所开发出来的以太网卡 (Ethernet),因此我们 Linux 就称呼这种网络接口为 ethN (N 为数字)。 举例来说,机上面有一张以太网卡,因此主机的网络接口就是 eth0 (第一张为 0 号开始)。

新的 CentOS 7 开始对于网卡的编号则有另一套规则,网卡的界面代号现在与网卡的来源有关

  • eno1 :代表由主板 BIOS 内置的网卡
  • ens1 :代表由主板 BIOS 内置的 PCI-E 界面的网卡
  • enp2s0 :代表 PCI-E 界面的独立网卡,可能有多个插孔,因此会有 s0, s1... 的编号~
  • eth0 :如果上述的名称都不适用,就回到原本的默认网卡编号
想要知道你有多少网卡,“ ifconfig -a ”全部列出来即可!此外,CentOS 7 也希望我们不要手动修改配置文件, 直接使用所谓的 nmcli 这个指令来设置网络参数即可。

防火墙简易设置

防火墙其实是一种网络数据的过滤方式,它可以依据你服务器启动的服务来设置是否放行,也能够针对你信任的用户来放行!

由于目前 CentOS 7 的默认防火墙机制为 firewalld, 他的管理界面主要是通过命令行 firewall-cmd 这个详细的指令~

[鸟哥的Linux私房菜:基础学习篇]

皮皮blog



网络安全与主机基本防护

限制联机端口/埠口 (port)

设定了一部 WWW 主机后,当有来自 Internet 的 WWW 要求时,我们的主机就会予以回应,这是因为我们的主机有启用了 WWW 的监听埠口啊!所以,当我们启用了一个 daemon 时,就可能会造成主机的端口在进行监听的动作,此时该 daemon 就是已经对网络上面提供服务了!万一这个 daemon 程序有漏洞,因为他提供了 Internet 的服务,所以就容易被 Internet 上面的 cracker 所攻击了!

什么是 port

  • 服务器端启动的监听埠口所对应的服务是固定的:例如 WWW 服务开启在 port 80 ,FTP 服务开启在 port 21,email 传送开启在 port 25 等等,都是通讯协议上面的规范!

  • 客户端启动程序时,随机启动一个大于 1024以上的埠口:客户端启动的 port 是随机产生的,主要是开启在大于 1024 以上的埠口。这个 port 也是由某些软件所产生的, 例如浏览器、Filezilla 这个 FTP 客户端程序等等。

  • 一部服务器可以同时提供多种服务:所谓的『监听』是某个服务程序会一直常驻在内存当中,所以该程序启动的 port 就会一直存在。 只要服务器软件激活的埠口不同,那就不会造成冲突。当客户端连接到此服务器时,透过不同的埠口,就可以取得不同的服务数据啰。 所以,一部主机上面当然可以同时启动很多不同的服务啊!

  • 共 65536 个 port:由第二章的 TCP/UDP 表头数据中,就知道 port 占用 16 个位,因此一般主机会有 65536 个 port,而这些 port 又分成两个部分,以 port 1024 作区隔:

    • 只有 root 才能启动的保留的 port:在小于 1024 的埠口,都是需要以 root 的身份才能启动的,这些 port 主要是用于一些常见的通讯服务,在 Linux 系统下,常见的协议与 port 的对应是记录在 /etc/services 里面的。

    • 大于 1024 用于 client 端的 port:在大于 1024 以上的 port 主要是作为 client 端的软件激活的 port 。

  • 是否需要三向交握:建立可靠的联机服务需要使用到 TCP 协议,也就需要所谓的三向交握了,如果是非面向连接的服务,例如 DNS 与视讯系统, 那只要使用 UDP 协议即可。

  • 通讯协议可以启用在非正规的 port:我们知道浏览器默认会连接到 WWW 主机的 port 80,那么你的 WWW 是否可以启动在非 80 的其他埠口? 当然可以啊!你可以透过 WWW 软件的设定功能将该软件使用的 port 启动在非正规的埠口, 只是如此一来,您的客户端要连接到你的主机时,就得要在浏览器的地方额外指定你所启用的非正规的埠口才行。 这个启动在非正规的端口功能,常常被用在一些所谓的地下网站啦!^_^。另外, 某些软件默认就启动在大于 1024 以上的端口,如 MySQL 数据库软件就启动在 3306。

  • 所谓的 port 的安全性:事实上,没有所谓的 port 的安全性!因为『Port 的启用是由服务软件所造成的』, 也就是说,真正影响网络安全的并不是 port ,而是启动 port 的那个软件 (程序)! 或许你偶而会听到:『没有修补过漏洞的 bind 8.x 版,很容易被黑客所入侵,请尽快升级到 bind 9.x 以后版本』,所以啰,对安全真正有危害的是『某些不安全的服务』 而不是『开了哪些 port 』才是!因此,没有必要的服务就将他关闭吧! 尤其某些网络服务还会启动一些 port 哩!另外,那些已启动的软件也需要持续的保持更新喔!

埠口的观察: netstat, nmap

netstat [Linux:Linux常用网络指令 ]

# nmap [扫瞄类型] [扫瞄参数] [hosts 地址与范围]选项与参数:[扫瞄类型]:主要的扫瞄类型有底下几种:    -sT:扫瞄 TCP 封包已建立的联机 connect() !    -sS:扫瞄 TCP 封包带有 SYN 卷标的数据    -sP:以 ping 的方式进行扫瞄    -sU:以 UDP 的封包格式进行扫瞄    -sO:以 IP 的协议 (protocol) 进行主机的扫瞄[扫瞄参数]:主要的扫瞄参数有几种:    -PT:使用 TCP 里头的 ping 的方式来进行扫瞄,可以获知目前有几部计算机存活(较常用)    -PI:使用实际的 ping (带有 ICMP 封包的) 来进行扫瞄    -p :这个是 port range ,例如 1024-, 80-1023, 30000-60000 等等的使用方式[Hosts 地址与范围]:这个有趣多了,有几种类似的类型    192.168.1.100  :直接写入 HOST IP 而已,仅检查一部;    192.168.1.0/24 :为 C Class 的型态,    192.168.*.*    +   :嘿嘿!则变为 B Class 的型态了!扫瞄的范围变广了!    192.168.1.0-50,60-100,103,200 :这种是变形的主机范围啦!很好用吧!

埠口与服务的启动/关闭及开机时状态设定

从第二章的数据我们就知道,其实 port 是由执行某些软件之后被软件激活的。所以要关闭某些 port 时,那就直接将某个程序给他关闭就是了!关闭的方法你当然可以使用 kill,不过这毕竟不是正统的解决之道,因为 kill 这个指令通常具有强制关闭某些程序的功能,但我们想要正常的关闭该程序啊! 所以,就利用系统给我们的 script 来关闭就好了啊。

一般传统的服务有哪几种类型?stand alone 与 super daemon

在一般正常的 Linux 系统环境下,服务的启动与管理主要有两种方式:

  • Stand alone顾名思义,stand alone 就是直接执行该服务的执行档,让该执行文件直接加载到内存当中运作, 用这种方式来启动可以让该服务具有较快速响应的优点。一般来说,这种服务的启动 script 都会放置到 /etc/init.d/ 这个目录底下,所以你通常可以使用:『 /etc/init.d/sshd restart 』之类的方式来重新启动这种服务;

  • Super daemon用一个超级服务作为总管,来统一管理某些特殊的服务。在 CentOS 6.x 里面使用的则是 xinetd 这个 super daemon 啊!这种方式启动的网络服务虽然在响应上速度会比较慢, 不过,可以透过 super daemon 额外提供一些控管,例如控制何时启动、何时可以进行联机、 那个 IP 可以连进来、是否允许同时联机等等。通常个别服务的配置文件放置在 /etc/xinetd.d/ 当中,但设定完毕后需要重新以『 /etc/init.d/xinetd restart 』重新来启动才行!

[基础学习篇]

如何关闭系统上面的 port 111呢?最简单的作法就是先找出那个 port 111 的启动程序喔!

[root@www ~]# netstat -tnlp | grep 111tcp        0      0 0.0.0.0:111    0.0.0.0:*       LISTEN  990/rpcbindtcp        0      0 :::111         :::*            LISTEN  990/rpcbind# 原来用的是 rpcbind 这个服务程序![root@www ~]# which rpcbind/sbin/rpcbind# 找到档案后,再以 rpm 处理处理[root@www ~]# rpm -qf /sbin/rpcbindrpcbind-0.2.0-8.el6.x86_64# 找到了!就是这个软件!所以将他关闭的方法可能就是:[root@www ~]# rpm -qc rpcbind | grep init/etc/rc.d/init.d/rpcbind[root@www ~]# /etc/init.d/rpcbind stop

安全性考虑-关闭网络服务端口

1> 找出目前系统上面正在运作中的服务,并且找到相对应的启动脚本 (在 /etc/init.d 内的档名之意)。利用 netstat -tunlp 即可找到!

写个脚本关闭

2>

1. 可以通过"netstat -anp" 来查看哪些端口被打开。
2. 然后可以通过"lsof -i:$PORT"查看应用该端口的程序($PORT指对应的端口号)。或者你也可以查看文件/etc/services,从里面可以找出端口所对应的服务。
(注:有些端口通过netstat查不出来,更可靠的方法是"sudo nmap -sT -O localhost")
3. 若要关闭某个端口,则可以:
1)通过iptables工具将该端口禁掉,如:
"sudo iptables -A INPUT -p tcp --dport $PORT -j DROP"
"sudo iptables -A OUTPUT -p tcp --dport $PORT -j DROP"   
2)或者关掉对应的应用程序,则端口就自然关闭了,如:
"kill -9 PID" (PID:进程号)
如:    通过"netstat -anp | grep ssh"
有显示:    tcp 0 127.0.0.1:2121 0.0.0.0:* LISTEN 7546/ssh
则:    "kill -9 7546"
(可通过"chkconfig"查看系统服务的开启状态)

from: http://blog.csdn.net/pipisorry/article/details/72123815

ref: [鸟哥的Linux私房菜:服务器架设篇]


0 0