`

Linux服务器——网络篇

阅读更多

前言:这篇文章是明明白白你的Linux服务器-硬件篇的续篇,希望大家看完此文后,能很清楚明白你的服务器的网络情况,能很轻松的配置其网络环境。毕竟,Linux服务器在装完系统,配置其网络环境是每一个system administrator的职能。

一、服务器的网络配置

在服务器的网络配置时,喜欢图形的朋友可用setup或system-config-network来配置。

网卡配置文件为/etc/sysconfig/network-scripts/ifcfg-eth0,设置完毕后直接用service network restart生效

  1. [root@linpcl root]#cat /etc/sysconfig/networking/devices/ifcfg-rth0  
  2. DEVICE=eth0 
  3. ONBOOT=yes 
  4. BOOTPROTO=static 
  5. IPADDR=192.168.0.2  
  6. NETMASK=255.255.255.0  
  7. GATEWAY=192.168.0.1 

GATEWAY选项可以设置网关参数,这里注意下ONBOOT选项,它表示网卡是否随系统启动而启动,此项一定要设置成on

这里介绍二个不是太常用的参数

USERCTL=no,即不允许普通用户修改网卡
PEERDNS=yes,它表示允许从DHCP获得的DNS覆盖本地的DNS

查看本机所有的网卡情况 ifconfig –a,更高级的网卡路由命令用ip addr,特别是你的服务器由keepalived绑定了虚拟VIP后用其查看很方便查看本机路由 netstat –rn或route
增加一条本机网络路由用命令route add -net 172.16.6.0 netmask 255.255.255.0 gw 172.16.2.25,即增加一条网络172.16.6.0/24 经过172.16.2.254 ,这个地址也可以理解为你的下一跳的地址

删除路由用命令route del –net 172.16.86.0/24

如果要永久的生效可用文件编辑的办法

vim /etc/sysconfig/network-scripts/route-eth0
172.16.6.0/24 via 172.16.2.25
查看本机的DNS服务器 cat /etc/resolv.conf
查看主机名hostname
查看主机名对应的IP地址 /etc/hosts

它的执行顺序是优于DNS的,现在多用于集群环境,比如Heartbeat;还有一个妙用,在没用DNS的环境中做测试时,直接改服务器的此文件,达到优先解析的目的查看与本机直连的网络设备用命令arp

这里跟大家介绍一个很有用的工具,mii-tool,判断哪块网卡连接了网线,同事们靠抽插网线来判断哪个网卡连接了网线的办法比较没有效率

  1. [root@mail~]#mii-tool  
  2. eth0: negotiated 100baseTx-FD flow-control, link ok  
  3. SIOCGMIIPHY on 'eth1' failed: Resource temporarily unavailable 

大家看这段文字可能没什么感觉,但到了机房就非常有用了,特别是那些网卡多的服务器,我见得最多的某台Linux服务器上绑定了六块网卡。

二、查看你的服务器网络连接状态

  1. netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'  
  2. LAST_ACK 14  
  3. SYN_RECV 348  
  4. ESTABLISHED 70  
  5. FIN_WAIT1 229  
  6. FIN_WAIT2 30  
  7. CLOSING 33  
  8. TIME_WAIT 18122 

状态:描述

  1. CLOSED:无连接是活动的或正在进行  
  2. LISTEN:服务器在等待进入呼叫  
  3. SYN_RECV:一个连接请求已经到达,等待确认  
  4. SYN_SENT:应用已经开始,打开一个连接  
  5. ESTABLISHED:正常数据传输状态  
  6. FIN_WAIT1:应用说它已经完成  
  7. FIN_WAIT2:另一边已同意释放  
  8. ITMED_WAIT:等待所有分组死掉  
  9. CLOSING:两边同时尝试关闭  
  10. TIME_WAIT:另一边已初始化一个释放  
  11. LAST_ACK:等待所有分组死掉  
  12. ESTABLISHED的值其实也是当前的并发数,这个可重点关注下 

三、寻找恶意练级IP并且杀掉

找出恶意连接你的服务器80端口的IP,直接用iptables来drop掉它;这里建议写脚本来运行,有兴趣的请参考bitsCN.com里发表的自动分析黑名单及白名单的iptables脚本一文

netstat -an| grep :80 | grep -v 127.0.0.1 |awk '{ print $5 }' | sort|awk -F: '{print $1,$4}' | uniq -c | awk '$1 >50 {print $1,$2}'

iptables脚本执行完毕后,用iptables –nv –L 可查看其规则,下面的iptables语法比较详细,推荐记忆

iptables [-t表名] <-A| I |D |R > 链名[规则编号] [-i | o 网卡名称] [-p 协议类型] [-s 源IP地址 | 源子网][--sport 源端口号] [-d 目标IP地址 | 目标子网][--dport 目标端口号] <-j 动作>

四、SMTP会话处理方式

捕获一个SMTP会话,以下命令很管用,推荐下 ;不喜欢用命令的同学我推荐用wireshark

  1. tcpdump -vv –x –X –s 1500 `port 25` 

五、打印自动运行服务

打印出自动运行的服务,3、5级别的即可;当然喜欢图形的同学可用ntsysv工具。

  1. [root@ltos test]# chkconfig --list | grep 3:on | awk '{print $1,$5}'  
  2. [root@ltos test]# chkconfig –list | grep 5:on | awk '{print $1,$7}' 

六、使用Netstat查看协议数据

Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

  1. NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-v] [interval]  
  2. -a 显示所有连接和监听端口。  
  3. -b 显示包含于创建每个连接或监听端口的可执行组件。  
  4. -e 显示以太网统计信息。此选项可以与-s选项组合使用。  
  5. -n 以数字形式显示地址和端口号。  
  6. -o 显示与每个连接相关的所属进程 ID。  
  7. -p proto 显示 proto 指定的协议的连接。  
  8. -r 显示路由表。  
  9. -s 显示按协议统计信息。 

一般用得比较多的就是netstat -an与netstat –rn

七、使用lsof查看文件信息

在unix里面,一切皆文件;而Linux秉承了这一特性,将unix下的工具lsof移植过来得很成功。lsof可以列出被进程所打开的文件的信息。

被打开的文件可以是

1.普通的文件

2.目录  

3.网络文件系统的文件

4.字符设备文件  

5.(函数)共享库  

6.管道,命名管道 

7.符号链接

8.底层的socket字流。网络socket,unix域名socket,用得比较多的用法是lsof -i:端口号,列出谁在使用某个端口,例如:lsof -i :3306,我喜欢用此用法来判断服务到底有没有正常启用。

八、使用fuser查看和杀死相关进程

与lsof –i的用法相法,如果我想查找占用3306端口的程序,则用fuser –n tcp -v 8080,另外,fuser的其它功能也是很强大的,我常用的它的两个功能:查看我需要的进程和我要杀死我查到的进程(抚琴煮酒是一般用来解决 device is busy的问题)

比如当你想umount光驱的时候,结果系统提示你设备正在使用或者正忙,可是你又找不到到底谁使用了他。这个时候fuser可派上用场了。

  1. [root@lancy sbin]# eject  
  2. umount: /media/cdrom: device is busy  
  3. umount: /media/cdrom: device is busy  
  4. eject: unmount of `/media/cdrom' failed  
  5.  
  6. [root@lancy sbin]# fuser /mnt/cdrom  
  7. /mnt/cdrom: 4561c 5382c  
  8.  
  9. [root@lancy sbin]# ps -ef |egrep '(4561|5382)' |grep -v grep  
  10. root 4561 4227 0 20:13 pts/1 00:00:00 bash  
  11. root 5382 4561 0 21:42 pts/1 00:00:00 vim Autorun.inf 

示例中,我想弹出光驱,系统告诉我设备忙着,于是采用fuser命令,参数是你文件或scoket,fuser将查出那些使用了他。4561c,5382c表示目前用两个进程在占用着/mnt/cdrom,分别是4561,5382,进程ID后的字母表示占用资源的方式。

九、TCP_wrappers防火墙

linux上一种特殊的防火墙TCP_wrappers防火墙,TCP 封包会先经过所谓的 IP 过滤机制( IP Filtering ),这是 Linux 提供的第一层保护,他可以将你不想要的来源 IP (经由 TCP 封包的 Head 资料)先当掉再说!如果可以通过的话,在就是要通过TCP_wrappers过滤。如果上面两个都通过了,再就根据每个服务访问控制的设定决定客户机能得到不同的权限和信息.TCP_wrappers防火墙主要涉及到两个文件/etc/hosts.allow和/etc/hosts.deny,可作 iptables的补充来保护你的Linux安全,比如只允许内网IP访问你的NFS服务器。

这里说下Linux是怎么识别其顺序的,这里好多朋友容易混淆了;当某个ip想访问你的Linux下的特定服务时,系统首先会检查/etc /hosts.alllow文件,如是有的话就放行,没有的话继续检查/etc/hosts.deny文件,有的话拒绝,没有的就放行,不过一般的做法就直接在/etc/hosts.allow里放允许通行的ip,/etc/hosts.deny里放不允许通行的ip。另外,这里跟大家分享一个经验心得吧: Linux下的服务众多,samba,nfs,rsync,tcp_wrapper,xinetd等,而每个又都有各自支持的写法,这样对于考试学习及工作记忆很不方便,其实它们都支持192.168.0.1/255.255.255.0这样的点分十进制写法;另,iptables是不支持的,它只支持 192.168.0.1/24比特建网制。

十、推荐下Linux/unix中常用的扫描端口工具-Nmap

下面是Nmap支持的四种最基本的扫描方式:

  1. TCP connect()端口扫描(-sT参数,-sP是用于扫描整个局域网段)  
  2. TCP同步(SYN)端口扫描(-sS参数)  
  3. UDP端口扫描(-sU参数)  
  4. TCP ACK扫描(-sA参数) 

我这里以自己的线上邮件服务器为例说明下:

  1. [root@mail postfix]# nmap -P0 -sS 211.143.6.X  
  2. Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2009-03-29 16:21 CST  
  3. Interesting ports on 211.143.6.X:  
  4. Not shown: 1668 closed ports  
  5. PORT STATE SERVICE  
  6. 22/tcp open ssh  
  7. 25/tcp open smtp  
  8. 80/tcp open http  
  9. 110/tcp open pop3  
  10. 111/tcp open rpcbind  
  11. 143/tcp open imap  
  12. 443/tcp open https  
  13. 465/tcp open smtps  
  14. 587/tcp open submission  
  15. 993/tcp open imaps  
  16. 995/tcp open pop3s  
  17. 1014/tcp open unknown 

lsof -i:1014,发现又是rpc.statd,这东东,每次用的端口都不一样啊;它不能正确处理SIGPID信号,远程攻击者可利用这个漏洞关闭进程,进行拒绝服务攻击;发现rpc.statd是由服务nfslock开启,关闭它即可service nfslock stopchkconfig nfslock off

关于网站的安全,我这里也有一些自己的浅见,特与大家共享下:

1)iptables最好写成脚本形式,想开哪个端口开哪个,想关哪个关哪个,iptables服务都可关闭;可以用crontab每5分钟自动关闭一次iptables,注意别把自己SSH停掉了,毕竟公司离机房还是很远的!

2)不定期扫描,发现可疑端口就关闭,实在不太懂就cat /etc/services或google下查找端口。

3)多注意连接数和系统性能,有时能从上面发现问题,有条件的话就布置nagois监控服务器。

4)建议掌握netcat、hping、nmap、等安全工具及网络分析工具tcpdump或wireshark,配合监测iptables的安全策略。

5)多注意自己服务器的内核漏洞,毕竟现在的linux攻击都是内核级的;请至少保证内核为2.6.9以上(不含2.6.9)。

6)密切关注防火墙日志/var/log/messages。

分享到:
评论

相关推荐

    Mac 第三方连接Linux服务器——Shuttle

    标题 "Mac 第三方连接Linux服务器——Shuttle" 指的是在 macOS 系统中,通过第三方工具Shuttle来实现与Linux服务器的便捷连接。Shuttle是一款轻量级的应用程序,设计目的是简化开发者和系统管理员在Mac上访问远程...

    应用中型部门级Linux服务器——SGI推出Altix 350.pdf

    应用中型部门级Linux服务器——SGI推出Altix 350.pdf

    Linux课件——WWW服务器的配置

    【Linux课件——WWW服务器的配置】 在互联网技术中,WWW服务器扮演着至关重要的角色,它们负责提供网页内容,使得用户可以通过Web浏览器访问。Apache服务器是这个领域中的领头羊,尤其在Linux环境下,它是首选的WWW...

    linux实验——管理与维护DHCP服务器.doc

    在Linux环境中,DHCP服务器的管理和维护是网络管理员的重要职责之一,因为它能简化网络设备的配置,尤其在大规模网络中。 **一、DHCP服务器的安装和配置** 在Linux系统中,通常使用`dhcpd`服务来实现DHCP服务器的...

    Linux课件——组建Linux局域网与网络互连

    3. **网络浏览**:支持Windows客户机通过网上邻居浏览Linux服务器。 4. **访问Windows资源**:Linux用户可以访问Windows系统共享的文件和打印机。 【Samba组成】: Samba服务器由两个主要的服务器程序构成:smbd和...

    Linux服务器架设指南——第1章

    【Linux服务器架设指南——第1章】章节主要讲解了计算机网络基础知识,特别是关于局域网的硬件知识。首先,计算机网络是通过通信设备和线路将地理位置分散的计算机系统连接在一起,实现资源共享和信息传递的系统。...

    ARM嵌入式Linux开发——网络设置及开发.pdf

    NFS服务器允许远程程序通过网络访问文件系统,就如访问本地文件系统一样方便。 接下来,了解NFS的工作原理是非常重要的。NFS使用RPC(Remote Procedure Call)机制来协调客户端和服务端之间的通信。NFS服务端上运行...

    linux C语言 网络编程教程及源码

    10、Linux网络编程10——TCP编程之服务器 11、Linux网络编程11——tcp、udp迭代服务器 12、Linux网络编程12——tcp三次握手、四次挥手 13、Linux网络编程13——connect()、listen()和accept()三者之间的关系 14、...

    linux实验——管理与维护邮件服务器.doc

    在Linux环境中,管理和维护邮件服务器是一项关键的任务,尤其对于企业来说,这...通过这样的实验,不仅可以掌握邮件服务器的基本配置,还能提升对Linux系统管理和网络通信的理解,为企业的邮件服务提供坚实的技术基础。

    操作linux服务器的工具

    针对这一需求,有两个强大的工具——WinSCP和Xshell,它们能够极大地提升我们与Linux服务器交互的效率。本文将详细阐述这两个工具的功能、用法以及如何利用它们高效地进行远程操作。 首先,让我们来看看WinSCP。...

    网络服务器搭建、配置与管理——Linux(RHEL8CentOS8)(微课版)(第4版)_PPT课件.zip

    网络服务器搭建、配置与管理——Linux(RHEL8CentOS8)(微课版)(第4版)_PPT课件.zip

    无线宽带路由器打造家用网络海量存储 移动硬盘巧变媒体文件服务器——初级篇.pdf

    【无线宽带路由器作为NAS的原理】 无线宽带路由器之所以能够被用作网络附加存储(NAS),是因为它们在硬件上类似于简化版的个人...对于不熟悉网络技术的初级用户,遵循上述步骤也能成功搭建自己的家庭媒体服务器。

    Linux旅程——flybird

    - **Putty**: 一种SSH客户端,可通过它远程连接到Linux服务器,进行代码编写和调试。 ##### 二、嵌入式系统介绍 **2.1 嵌入式系统定义** - **定义**: 以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用...

    与Linux同行——Linux平台上网工具初探.pdf

    《与Linux同行——Linux平台上网工具初探》这篇文章主要探讨了在Linux操作系统中,如何有效地进行网络活动,包括浏览网页、聊天、电子邮件、文件下载等。Linux作为一款稳定且高效的服务器操作系统,近年来在桌面应用...

    linux实验——TCP/IP网络接口配置.doc

    在Linux环境中,TCP/IP网络接口配置是管理员必备的技能之一。本实验主要涵盖了以下几个关键知识点: 1. **网络接口配置**: - 使用`ifconfig`命令查看网络接口的状态,如IP地址、子网掩码、广播地址等信息。 - ...

    使用Putty管理Linux系统——显示图形界面.pdf

    使用Putty管理Linux系统的主要优势在于其便捷性与高效率,管理员可以不必离开熟悉的Windows环境就能对Linux服务器进行维护和配置。此外,由于SSH协议的加密特性,Putty通过SSH连接Linux服务器的方式相较于传统的...

    c#远程调用linux服务器的Python脚本(csdn)————程序.pdf

    标题中的"C#远程调用Linux服务器的Python脚本"指的是使用C#编程语言从Windows客户端远程执行在Linux服务器上托管的Python脚本。这通常涉及到跨平台通信和远程过程调用(RPC)技术。描述中提到的问题和解决方案集中在...

    linux编程——高级编程方法

    根据给定的文件信息,我们可以梳理出以下关于Linux编程——高级编程方法的知识点: 1. Linux编程的重要性: Linux是一个多用户、多任务的类Unix操作系统,它在服务器、桌面和嵌入式系统等领域得到了广泛的应用。...

    天报预警将使用Linux网格——刀片服务器与Linux.pdf

    这个项目的目的是利用Linux操作系统和刀片服务器来构建一个天报预警系统,从而极大地提升我们对风暴、龙卷风、洪水等灾害的预报能力。 项目的领头羊是马萨诸塞州大学的计算机科学教授Jim Kirrose,他们与CASA工程...

    Linux代理服务全攻略——Squid篇.pdf

    《Linux代理服务全攻略——Squid篇》深入解析 Squid是Linux操作系统中广泛使用的代理服务软件,它的主要作用在于提供网络访问控制和优化网络资源利用。代理服务能够帮助那些无法直接连接到Internet的用户进行访问,...

Global site tag (gtag.js) - Google Analytics