Linux随笔-鸟哥Linux服务器篇学习总结(全)

时间:2023-03-09 01:24:51
Linux随笔-鸟哥Linux服务器篇学习总结(全)

作者:Danbo 时间:2015-7-17

在runlevel3启动级别下默认启动网络挂载(autofs)机制,我们可以通过命令将其关闭:chkconfig autofs off 或者 /etc/init.d/autofs stop将其关闭。

查询启动在网络监听的服务:netstat -lntup
[root@baidu ~]# netstat -lnutp
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:22                  0.0.0.0:*                   LISTEN      1750/sshd           
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1545/cupsd          
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1854/master         
tcp        0      0 0.0.0.0:49347               0.0.0.0:*                   LISTEN      1506/rpc.statd      
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN        1354/rpcbind

现在我们假设关闭rpc.statd这个服务启动的监听端口,我们可以使用/etc/init.d/xxx stop这个命令,然后再使用chkconfig去设置开机不启动的行为。
[root@baidu ~]# /etc/init.d/rpc.statd stop
[root@baidu ~]# chkconfig rpc.statd off

yum -y update更新系统,这个是更新整个系统文件,包括系统内核。

rpm包的常用用法:

-ivh:安装显示安装进度--install--verbose--hash
-Uvh:升级软件包--Update;
-qpl:列出RPM软件包内的文件信息[Query Package list];
-qpi:列出RPM软件包的描述信息[Query Package install package(s)];
-qf:查找指定文件属于哪个RPM软件包[Query File];
-Va:校验所有的RPM软件包,查找丢失的文件[View Lost];
-e:删除包

比较/etc/rc.d 与 /etc/init.d的区别:
[root@lb1 ~]# ls -ld /etc/init.d /etc/rc.d/
lrwxrwxrwx  1 root root   11 Jul 13 18:03 /etc/init.d -> rc.d/init.d
drwxr-xr-x 10 root root 4096 Jul 13 18:07 /etc/rc.d/

我们可以看出init.d文件夹是rc.d的一个软连接。/etc/rc.d/init.d里面包含的都是一些脚本文件,,这些脚本供INIT进程(也就是1号进程)在系统从初始化的时候按照该进程获取的开机运行等级,有选择的运行init.d里的脚本。这些一般是系统安装好的软件运行级别,决定了系统启动之后运行于什么级别。这个级别从0到6 ,具有不同的功能。停机的级别为0,重新启动的级别为6。它的值由init进程上来去读取/etc/目录下inittab文件中initdefault id值获得。一般的linux系统X11图形界面的运行级别是5。通常所说的rc就是 run control的意思。

当我们安装硬件到Linux系统中,并且安装了驱动,我们如何判断硬件被系统核心捕捉到呢? 通过dmesg
dmesg | grep -in eth
我们也可以通过lspci | grep -i ethernet
通过lsmod来查看核心是否顺利载入:lsmod:用来显示文件、proc/modules的信息,也就是显示当前内核装在的模块。

其它常见信息查看方法:
查看CPU信息: cat /proc/cpuinfo
查看板卡信息:cat /proc/pci
查看PCI信息: lspci
例子: lspci |grep Ethernet 查看网卡型号
查看内存信息:cat /proc/meminfo
查看USB设备: cat /proc/bus/usb/devices
查看键盘和鼠标:cat /proc/bus/input/devices
查看系统硬盘信息和使用情况:fdisk & disk - l & df
查看各设备的中断请求(IRQ): cat /proc/interrupts
查看系统体系结构:uname -a

dmesg:查看硬件信息,包括BIOS、CPU、内存等信息。

/etc/init.d/network restart   重启整个网络的参数。
ifup eth0 / ifdown eth0   启动或关闭某个网络接口,其实他们是透过/etc/sysconfig/network-scripts/目录下的相应脚本处理的。

修改IP相关参数,我们可以修改/etc/sysconfig/network-scripts/ifcfg-eth0,然后/etc/init.d/network restart
我们可以通过:ifconfig、route -n来查看。

修改DNS相关参数,我们可以修改/etc/resolv.conf,可以通过dig命令查看接口

修改主机名,我们可以修改/etc/sysconfig/network或者/etc/hosts文件,然后通过hostname或者ping$(hostname)来查看

[root@baidu ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:2D:23:49
TYPE=Ethernet
UUID=2fbc1034-6e57-4448-8f4b-bef1127867cc
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
手工临时设定IP:ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up

如果我们采用静态IP的话,可以添加一下命令:
BOOTPROTO=none
IPADDR=192.168.1.1
NETWORK=255.255.255.0
GATEWAY=192.168.1.254

[root@baidu ~]# route -n  查看路由设置
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.229.0   0.0.0.0         255.255.255.0   U     1      0        0 eth0
0.0.0.0         192.168.229.2   0.0.0.0         UG    0      0        0 eth0

[root@baidu ~]# cat /etc/resolv.conf    DNS服务器的IP设定与观察
# Generated by NetworkManager
domain localdomain
search localdomain sys
nameserver 192.168.229.2

注意修改主机名我们必须同时修改/etc/sysconfig/network与/etc/hosts两个文件。

常用命令:
ifconfig
ifdown
ifup
route:route add|del [-net|-host] [网域或主机] netmask [mask] [gw|dev]
例如:route del -net 192.168.0.0 netmask 255.255.0.0 dev eth0
设置静态路由:route add -net 192.168.200.0 netmask 255.255.255.0 gw 192.168.200.254
设置默认网关:route add default gw 192.168.1.254
注意做完试验后记得重新网络:/etc/init.d/network restart恢复系统默认设置
如果我们想永久修改则编辑文件:/etc/sysconfig/static-routes(没有的话创建一个)添加一下内容:
any net 192.168.1.2 gw 192.168.1.254 netmask 255.255.255.255

ip
ip link:关于装置接口的相关设定:
[root@baidu ~]# ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:2d:23:49 brd ff:ff:ff:ff:ff:ff
我们可以看到ip link show可以显示出整个装置接口的硬件相关信息,包括mac地址,MTU等。
还可以修改网络名称:ip link set eth0 name danbo
设定mac地址:ip link set eth0 address aa:aa:aa:aa:aa:aa

如果说ip link 是设定二层数据链路层的话,ip address就是设定三层网络层相关参数。
ip address [add|del] [ip] [dev 装置名] [相关参数]
相关参数:
broadcast:设定广播地址,如果设定值是+表示让系统自动计算
label:设置装置别名,例如:eth0:0
[root@baidu ~]# ip address show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:2d:23:49 brd ff:ff:ff:ff:ff:ff
    inet 192.168.229.128/24 brd 192.168.229.255 scope global eth0
    inet6 fe80::20c:29ff:fe2d:2349/64 scope link
       valid_lft forever preferred_lft forever
例如:新增一个借口,名称设定为:eth0:danbo
ip address add 192.168.10.10/24 broadcast + dev eth0 label eth0:danbo
删除:ip address del 192.168.10.10/24 dev eth0

ip route路由相关
增加路由,主要是本机直接可沟通的网域:ip route add 192.168.5.0/24 dev eth0,不需要透过外部路由器。
增加可以通过外部的路由,需要通过router:ip route add 192.168.10.0/24 via 192..168.5.100 dev eth0
增加默认路由:ip route add default via 192.168.1.254 dev eth0
删除路由:ip route dell 192.168.10.0/24

无线网络:iwlist、iwconfig
iwlist:利用无线网卡进行无线AP的侦测与取得相关的数据;
iwconfig:设定无线网卡的相关参数。

手动使用DHCP自动获取IP:dhclient
[root@baidu ~]# dhclient eth0
很简单吧,这样就可以立即让网卡以dhcp协议去尝试获取IP地址。

踢掉远程连接的用户:[root@lb1 ~]# fuser -k /dev/pts/x

ping用法:
[root@localhost ~]# ping -h
Usage: ping [-aAbBdDfhLnOqrRUvV] [-c count] [-i interval] [-I interface]
            [-m mark] [-M pmtudisc_option] [-l preload] [-p pattern] [-Q tos]
            [-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp_option]
            [-w deadline] [-W timeout] [hop1 ...] destination

我们知道适当的增大MTU值可以提高网速:封包打包的次数减少了。我们可以通过ping命令去测试网络的MTU
ping -c 2 -s 1000 -M do 192168.1.1254
当有相应代表可以接受这个封包,返回错误信息时会返回MTU值
[root@lb1 ~]# ping -c2 www.baidu.com -s 9000 -M do
PING www.a.shifen.com (111.13.100.92) 9000(9028) bytes of data.
From 192.168.229.129 icmp_seq=1 Frag needed and DF set (mtu = 1500)
From 192.168.229.129 icmp_seq=1 Frag needed and DF set (mtu = 1500)

traceroute -w 1 -n -T www.baidu.com
采用TCP方式来侦测路由器,防止路由器因安全问题禁止相应UPD/ICMP

查看网络服务监听端口的状态:netstat
-r :列出路由表(route table),功能如同 route 这个指令;
-n :不使用主机名与服务名称,使用 IP 与 port number ,如同 route -n 与网络接口有关的参数:
-a :列出所有的联机状态,包括 tcp/udp/unix socket 等;
-t :仅列出 TCP 封包的联机;
-u :仅列出 UDP 封包的联机;
-l :仅列出有在 Listen (监听) 的服务之网络状态;
-p :列出 PID 与 Program 的檔名;
-c :可以设定几秒钟后自动更新一次,例如 -c 5 每五秒更新一次网络状态的显示;

查看域名对应的IP:host、nslookup
实例如下:

[root@lb1 ~]# host www.baidu.com 8.8.8.8
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases:

www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 111.13.100.92
www.a.shifen.com has address 111.13.100.91

[root@lb1 ~]# nslookup www.baidu.com
Server: 192.168.229.2
Address: 192.168.229.2#53

Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 111.13.100.91
Name: www.a.shifen.com
Address: 111.13.100.92
我们可以看出host与nslookup差不多,只不过nslookup支持以ip地址查找主机名
还有一个dig命令,这个我们到DNS服务器那一章节再仔细讲解。

Telnet:这个是早期我们在个人计算机上面要链接到服务器工作时使用的一个软件。Telnet本身的数据传输使用的明码。
telnet [host|IP] [port]

FTP:使用ftp从ftp服务器上下载数据:
ftp ftp.uestc.edu.cn
这个命令我们到FTP服务器章节再仔细讲解。注意退出ftp使用的是:bye而不是exit。

单纯使用ftp很麻烦,我们可以使用lftp以雷系网址列的方式来登入到FTP服务器,默认是以anonymous方式登入。
lftp常见参数:

-p:后面可以直接接上远程 FTP 主机提供的 port
-u:后面则是接上账号与密码,就能够连接上远程主机了 如果没有加账号密码, lftp 默认会使用 anonymous 尝试匿名登录 -f:可以将指令写入脚本中,这样可以帮助进行 shell script 的自动处理喔!
-c:后面直接加上所需要的指令。
例如:lftp -f filename ; lftp -c "commands"

Linux上查看html文本的命令为:links
例如:links https://www.baidu.com
Linux随笔-鸟哥Linux服务器篇学习总结(全)

一些常见功能按键:
o h:history ,曾经浏览过的 URL 就显示到画面中
o g:Goto URL,按 g 后输入网页地址(URL) 如 :http://www.abc.edu/等
o d:download,将该链接数据下载到本机成为档案;
o q:Quit,离开 links 这个软件;
o o:Option,进入功能参数的设定值修改中,最终可写入 ~/.elinks/elinks.conf 中
o Ctrl+C :强迫切断 links 的执行。
o 箭头键:
上 :移动光标至本页中 "上一个可连结点" .
下 :移动光标至本页中 "下一个可连结点" .
左 :back. 跳回上一页.
右 :进入反白光标所链接之网页.
ENTER 同鼠标 "右" 键.
这个命令同时也可以浏览本机上得html文件

我们通知也可以透过links将www.baidu.com的网页内容整个抓取下来:
[root@lb1 ~]# links -dump https://www.baidu.com > /uestc/baidu.html

文字接口下载器:wget

我们可以使用nc(netcat)指令来对某台服务进行检测
常用参数:
-l:作为监听只用,亦即开启一个 port 来监听用户的联;
-u :不使用 TCP 而是使用 UDP 作为联机的封包状态

范例:
1.与telnet类似,连接本地端的port 25端口:nc lb1 25
2.激活一个port 20000来监听使用者的联机要求
nc -l lb1 20000 &
nc lb1 20000
此时当我们在客户端打入一些字,就会发现服务器端也会出现相同的字。

在一个局域网中不能上网,我们的排查方式如下:
一、网卡工作确认
1.确定网卡驱动问题。
2.确定可以手动直接简历IP参数:
ifconfig eth0 192.168.1.100
ping 192.168.1.100
如果有回应的话则没有问题。

二、局域网络内各项连接设备检测
1.IP参数是否设定正确。比如掩码,网段等。
2.联机的线材问题。
3.网卡或者Hub/Switch本身的问题。

三、取得正确的IP参数
1.查看BOOTPROTO这个参数设定是否正确
2.重启网络服务:/etc/sysconfig/network restart
3.硬件设备过热。

四、确认路由表的规则
1.default route的设定
2.route -n进行检查

五、主机名与IP查询的DNS错误
如果发现可以ping同外网,但是却不能访问其网址,这个99%就是DNS解析的问题。
每一部主机都会有主机名(hostname),预设的主机名为localhost,这个主机名会有一个127.0.0.1的IP对应在/etc/hosts当中。如果你曾更改/etc/hosts中的主机名,而没更改/etc/sysconfig/network中的主机名,此时开机会他妈的延迟好久。

六、Linux的NAT服务器或IP分享器出现问题
NAT服务器最简单的功能就是IP分享器,NAT主机一定是一部路由器。IP分享器上面是否设定抵挡的机制。

七、Internet问题
使用Traceroute进行检测

八、服务器的问题

SELinux简介
Security Enhanced Linux(安全强化Linux)可以针对网络服务的权限来设定一定规则(Policy),让程序能够进行的功能有限,因此即使使用者的档案权限设定错误,以及程序有问题时,以及程序有问题时该程序能够进行的动作还是被限制的,即使该程序使用的是root权限也一样。

DDoS(分布式拒绝攻击)
常用的攻击方式是:分布在全球的肉鸡在发送SYN的封包后,却将来自Server端的ACK包丢弃,那么Server端就会傻傻等着直到超时,而肉鸡可以透过软件功能,在短时间内持续发送大量的SYN包,那么Server端就会持续不断的发送确认包,并且开启大量的port在等,知道port用完,此时Server就挂了。

主机防护措施:
1.建立完善的登入密码规则限制;
2.完善的主机权限设定;
3.设定自动升级与修补软件漏洞、及移除危险软件;
4.在每项系统服务的设定当中,强化安全设定的项目;
5.利用 iptables, TCP_Wrappers 强化网络防火墙;
6.利用主机监控软件如 MRTG 与 logwatch 来分析主机状况与登录文件。

防火墙类型
1.Netfilter(封包过滤机制)
分析进入主机的网络包,分析数据包报头,以决定放行或阻挡的机制。分析报文头部包括:MAC地址、IP、TCP、UDP、ICMP等主要是2、3、4层。

2.TCP Wrappers(程序控管)
这种机制主要是分析谁对某个程序进行存取,然后透过规则去分析该服务器程序谁能够联机、谁不能联机。由于主要是透过分析服务器程序来控管,因此与启动的端口无关,只与程序的名称有关。例如,我们知道FTP可以气动在21端口进行监听,当你透过Linux内建的TCP Wrappers限制FTP时,那么只需要知道FTP软件名(vsftpd),然后对他作限制,则不管FTP启动在哪个端口,都会被规则管理的。说穿了TCP Wrappers就是透过/etc/hosts.allow,/etc/hosts.deny这两个文件来管理的一个类似防火墙的机。不过只有由xinetd所管理的程序或者支持libwrap.so模块的服务才能用这种方式管理。

3.Proxy
即客户端访问互联网时,必须向proxy服务器请求数据,然后经过proxy服务器分析后,再帮助中转数据流量。

Linux随笔-鸟哥Linux服务器篇学习总结(全)
单一网域,仅有一个路由器的环境示意图,这种配置的优点:
1.因为内外网域已经分开,所以安全维护在内部可以开放的权限较大。
2.安全机制的设定可以针对Linux防火墙主机来维护即可
3.对外只看到Linux防火墙主机,所以对于内部可以达到有效的安全防护。

Linux随笔-鸟哥Linux服务器篇学习总结(全)
内部网络包含需要更安全的子网防火墙

Linux随笔-鸟哥Linux服务器篇学习总结(全)
假设在防火墙后端的网络服务器环境示意图
我们可以看到主机放置在两部防火墙中间,内部网络如果放生状况(如内部某台主机中毒,被社交工程攻陷etc.)是不会影响到整个服务器的正常运行的。不过这种设定比较复杂。向上图的环境,将网络服务器独立防止在两个防火墙中间的网络,我们称之为非军事区(DMZ)。设立DMZ的目的是为了保护服务器本身。

Iptable
当一个网络封包要进入到主机之前,会先经由NetFilter进行检查,那就是iptables的规则了,检查通过则接收(Accept)进入本机取得资源,不通过则丢弃(Drop)。并且规则是由顺序的,会从上往下进行匹配,如果所有规则都不匹配那么就会采取预设策略。

iptable的表格(table)与链(chain)
预设情况下Linux的iptables至少有三个表格:
1.管理本机进出的filter;
2.管理后端主机(防火墙内部的其他计算机)的nat;
3.管理特殊旗标使用的额mangle(这个很少使用)

Filter表示iptables的默认表,因此如果你没有自定义表,那么就默认使用filter表,它具有以下三种内建链:
INPUT链
 – 处理来自外部的数据。
OUTPUT链 – 处理向外发送的数据。
FORWARD链 – 将数据转发到本机的其他网卡设备上。

NAT(地址转换):这个表格主要在进行来源目IP和端口的转换,与Linux主机后的局域网内的计算机有关。 PREROUTING链 – 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。
POSTROUTING链 – 处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。
OUTPUT链 – 处理本机产生的数据包。

Mangle(破坏者):这个表格主要是与特殊的封包的路由旗标有关,早期仅有PREROUTING及OUTPUT链,由于这个表格与特殊旗标相关性较高,一般环境下很少使用mangle这个表格。
Mangle表用于指定如何处理数据包。它能改变TCP头中的QoS位。Mangle表具有5个内建链:
PREROUTING
OUTPUT
FORWARD
INPUT
POSTROUTING

Raw表用于处理异常,它具有2个内建链:
PREROUTING chain
OUTPUT chain

Iptables规则(Rules)
-Rules包含一个条件和一个目标(target)。
-如果满足条件,就执行目标(target)。
-如果不满足条件,就判断下一条Rules。

目标值(Target Values)
-ACCEPT:允许防火墙接收数据包
-DROP:防火墙丢弃包
-QUEUE:防火墙将数据包移交到用户空间
-RETURN:防火墙停止执行当前链中的后续Rules,并返回到调用链(the calling chain)中。

iptables --list可以查看防火墙的可用规则。
iptables -t filter --list等同于iptables --list
iptables -t mangle --list
iptables -t nat --list
iptables -t raw --list

[root@lb1 ~]# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination        
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination        
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination        
ACCEPT     all  --  anywhere             anywhere           
ACCEPT     icmp --  anywhere             anywhere            icmp any
ACCEPT     esp  --  anywhere             anywhere           
ACCEPT     ah   --  anywhere             anywhere           
ACCEPT     udp  --  anywhere             224.0.0.251         udp dpt:mdns
ACCEPT     udp  --  anywhere             anywhere            udp dpt:ipp
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ipp
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ftp
*             *           *           *

清空所有iptables规则
iptables --flush 或者 iptables -F 但是这些命令不会清除掉NAT表中的规则,此时我们需要手动清理:
iptables -t NAT -F

永久生效
当我们修改规则后,下次重启又恢复原样了,我们可以通过以下方式保存iptables规则
1.保存iptables规则:service iptables save
2.重启iptables服务:service iptables stop ; service iptables start
3.查看当前规则:cat /etc/sysconfig/iptables

iptables的规则

可以使用iptables -A命令追加新规则,其中-A表示Append。因此,新的规则将追加到链尾。
一般而言,最后一条规则用于丢弃(DROP)所有数据包。如果你已经有这样的规则了,并且使用-A参数添加新规则,那么就是无用功。

1.语法
iptables -A chain firewall-rule
-A chain 指定要追加规则的链
firewall-rule 具体的规则参数

2.描述规则的基本参数
-p协议(protocol)
-指定规则的协议,如tcp、udp、icmp等,可以使用all来指定所有协议。
-如果不指定-p参数,默认是all。
-可以使用协议名(如tcp),或者协议值(比如6代表tcp)来指定协议,具体可查看/etc/protocols

-s源地址(source)
-指定数据包的源地址
-参数可以使用IP地址、网络地址、主机名
-例如:-s 192.168.1.101指定IP地址。
-例如:-s 192.168.1.101/24指定网络地址
-如果不指定则代表所有all

-d目的地址(destination)
同-s一样

-j执行目标(jump to target)
-j指定了当与规则匹配时如何处理数据包
-包括ACCEPT、DROP、QUEUE、RETURN
-还可以指定其他链(Chain)作为目标

-i输入接口(input interface)
-i指定了要处理来自哪个接口的数据包

定义预设策略(Policy)
iptables -P [INPUT、OUTPUT、FORWARD] [ACCEPT、DROP]

针对IP、网域、端口的IPTABLES
iptables [-AI 链名] [-io 网络接口] [-p 协议] [-s 来源IP/网域] [-d 目标IP/网域] [-j ACCETP|DROP|REJECT|LOG]

注意:iptables -A INPUT -s 192.168.2.200 -j LOG
那么有关该数据包的相关信息会被计入log日志即/var/log/messages,然后该数据包会继续后续的规则匹配。

针对端口设定
iptables [-AI 链] [-io 网络接口] [-p tcp,udp] [-s 来源IP/网域] [--sport 端口范围] [-d 目标IP/网域] [--dport 端口范围] -j [ACCEP|DROP|REJECT]   //s/dport后面可以接端口号对应的服务名称如ssh、telnet

针对MAC与STATE
iptables -A INPUT [-m state] [--state 状态]
-m:一些iptables的外挂模式
state:状态模块
INVALID:无效的数据包,例如CRC校验失败
ESTABLISHED:已经联机成功的联机状态;
NEW:想要新建立联机的封包状态;
RELATED:这个最常用,表示这个数据包是与主机发出去的包有关。
例如:只要已建立或相关的包就通过,只要是不合法的就丢弃:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCETP
iptables -A INPUT -m state --state INVALID -j DROP
例如:针对局域网内的aa:bb:cc:dd:ee:ff主机开放其联机
iptables -A INPUT -m mac --mac-source aa:bb:cc:dd:ee:ff -j ACCEPT

针对是否响应ping来设计
iptables -A INPUT [-p icmp] [--icmp-type 类型] -j ACCEPT
此时我们可以通过脚本定义要屏蔽的icmp类型

#!/bin/bash
icmp_type="0 3 4 11 12 14 16 18"
for typeicmp in $icmp_type
do
iptables -A INPUT -i eth0 -p icmp --icmp-type $typeicmp -j ACCEPT
done

我们如何防范SYNFlooding的DoS攻击呢?我们可以启用核心的SYN Cookie模块。
当我们启用SYN Cookie时,主机在发送SYN/ACK确认封包前,会要求Client端在短时间内回复一个序号,这个序号包含许多原本SYN数据包内的信息,若Client端可以回复正确的序号,那么主机就确定该封包为可信的,因此才会发送SYN/ACK封包,否则就不理会。

启动SYN Cookie方式:echo "1" > /proc/sys/net/ipv4/tcp_syncookies
但是这个设定值由于违反了TCP的三次握手(Server在发送SYN/ACK之前必须等待Client端回应序号),所以可能会造成某些服务的延迟现象,例如SMTP。但是并不适合用在负载已经很高的服务器内,因为负载太高的话有可能被内核误判遭受SYN Flooding攻击。

我们如何防范PingFlooding攻击呢?取消ICMP类型8的ICMP封包回应2  
我们可以通过防火墙来抵挡,当然也可以让核心自动取消ping的响应。不过某些局域网内常见的服务(比如DHCP协议发送ping包来检测IP地址是否冲突),所以最好不要取消所有的ping相应。
内核取消ping回应的设定值有两个,分别是:/proc/sys/net/ipv4内核icmp_echo_ignore_broadcasts(仅有ping broadcast地址时才取消ping的回应)及icmp_echo_ignore_all(全部的ping都不回应)。因此我们建议启动icmp_echo_ignore_broadcasts就好了。
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

Linux随笔-鸟哥Linux服务器篇学习总结(全)

如上图所示当LAN有任何一部主机想要传送数据包出去时,那么这个数据包要经过以下步骤:
1.先经过NAT table的PREROUTING链;
2.经由路由判断确定这个数据包是要进入本机与否,若不进入本机,则下一步;
3.再经过Filter table的FORWARD链;
4.经过NAT table的POSTROUTING链,最后传送出去。
注意PREROUTING链修改的是目的IP,而POSTROUTING修改的源IP。

SNAT(源地址转换)主要是应付内部LAN连接到Internet的使用方式,置于DNAT(目标地址转换)则主要用在内部主机想要架设可以让Internet存取的服务器。有点类似DMZ内的服务器。

Linux随笔-鸟哥Linux服务器篇学习总结(全)

DHCP过程:
1.客户端广播DHCP Disconvery包,去搜寻DHCP服务器
2.服务器端单播会用DHCP Offer包
-首先服务器端会根据客户端的MAC地址在登录文件中寻找用户之前是否曾经用过某个IP,若有则再次提供此IP。
-若配置文件针对该MAC提供额外的固定IP,那么则提供固定IP给客户端。
-若不符合以上两个条件,则随机在地址池中取没有被使用的IP给客户端。
3.客户端广播DHCP Request包
4.服务器端单播DHCP Ack包
主要告知客户端这个网络参数租约的期限。一般如果租约期限是1h,那么客户端会在0.5h的时候,主动向DHCP服务器发出重新要求网络参数的封包。如果没有成功,那么会在3/4的时间再次发送请求包,因此服务器会启动67端口来监听用户的要求,而用户会启动68端口向服务器要求。

DNS服务器

Linux随笔-鸟哥Linux服务器篇学习总结(全)

DNS查询www.ksu.edu.tw的过程如下图所示:
Linux随笔-鸟哥Linux服务器篇学习总结(全)

我们可以使用dig命令来看一下查询www.ksu.edu.tw的过程

[root@lb1 ~]# dig +trace www.ksu.edu.tw

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-25.P1.el5_11.2 <<>> +trace www.ksu.edu.tw
;; global options: printcmd
. 5 IN NS b.root-servers.net.
. 5 IN NS c.root-servers.net.
. 5 IN NS d.root-servers.net.
. 5 IN NS i.root-servers.net.
. 5 IN NS g.root-servers.net.
. 5 IN NS f.root-servers.net.
. 5 IN NS m.root-servers.net.
. 5 IN NS j.root-servers.net.
. 5 IN NS l.root-servers.net.
. 5 IN NS a.root-servers.net.
. 5 IN NS e.root-servers.net.
. 5 IN NS k.root-servers.net.
. 5 IN NS h.root-servers.net.
;; Received 228 bytes from 192.168.229.2#53(192.168.229.2) in 4014 ms

tw. 172800 IN NS b.dns.tw.
tw. 172800 IN NS h.dns.tw.
tw. 172800 IN NS g.dns.tw.
tw. 172800 IN NS d.dns.tw.
tw. 172800 IN NS c.dns.tw.
tw. 172800 IN NS ns.twnic.net.
tw. 172800 IN NS sec4.apnic.net.
tw. 172800 IN NS e.dns.tw.
tw. 172800 IN NS a.dns.tw.
tw. 172800 IN NS i.dns.tw.
tw. 172800 IN NS f.dns.tw.
;; Received 511 bytes from 192.33.4.12#53(c.root-servers.net) in 301 ms

edu.tw. 86400 IN NS b.twnic.net.tw.
edu.tw. 86400 IN NS moevax.edu.tw.
edu.tw. 86400 IN NS a.twnic.net.tw.
edu.tw. 86400 IN NS moestar.edu.tw.
edu.tw. 86400 IN NS d.twnic.net.tw.
edu.tw. 86400 IN NS moemoon.edu.tw.
edu.tw. 86400 IN NS c.twnic.net.tw.
;; Received 471 bytes from 210.201.138.58#53(b.dns.tw) in 513 ms

ksu.edu.tw. 300 IN NS dns2.ksu.edu.tw.
ksu.edu.tw. 300 IN NS dns1.ksu.edu.tw.
ksu.edu.tw. 300 IN NS dns3.twaren.net.
;; Received 131 bytes from 203.73.24.21#53(b.twnic.net.tw) in 71 ms

www.ksu.edu.tw. 3600 IN A 120.114.100.101
ksu.edu.tw. 3600 IN NS dns1.ksu.edu.tw.
ksu.edu.tw. 3600 IN NS dns2.ksu.edu.tw.
ksu.edu.tw. 3600 IN NS dns3.twaren.net.
;; Received 147 bytes from 120.114.150.1#53(dns2.ksu.edu.tw) in 85 ms

DNS使用的端口:

[root@lb1 ~]# cat /etc/services | grep domain
domain 53/tcp # name-domain server
domain 53/udp

DNS数据库的记录:正解、反解、Zone的意义
-从主机名查询到IP的流程称为:正解
-从IP反解析到主机名的流程称为:反解
-不管是正解还是反解,每个流域的记录就是一个区域(Zone)

正解zone通常具有底下几种标志:
-SOA:就是开始验证(Start of Authority)。
-NS:名称服务器(NameServer ),后面记录的数据是DNS服务器。
-A:地址(Address),后面记录的是IP的对应

反解zone:
除了SOA、NS、A,还有以下:
-PTR:指向(PointeR),后面记录的数据是反解到主机名。

当DNS服务器在自己的数据库找不到信息时,一定会去找“.”的zone的类型,我们称为hint。
一步简单的正解DNS服务器,基本上要有两个zone才行,一个是hint,另一个是关于自己领域的正解zone。

Master与Slave服务器同时提供域名解析服务,而域名的查询是先抢先赢,谁最快回应谁就会提供服务。MS之间的同步方式有两种,一种是Master主动告知,另一种是Slave主动提出要求。他们之间是以序列号来进行判断谁的更新的。

相关配置文件
-/etc/hosts:最早的hostname对应IP的档案;
-/etc/resolv.conf:是ISP的DNS服务器IP记录初;
-/etc/nsswitch.conf:这个档案则是在决定要使用上面还是面的设定

[root@lb1 ~]# cat /etc/nsswitch.conf | grep -v "^#"
hosts:      files dns
files指的是/etc/hosts;dns指的是/etc/resolv.conf

在/etc/resolv.conf里面可以加入多个nameserver地址,不过最好不要设定超过3个以上的DNS服务器IP在/etc/resolv.conf中,因为如果是你的网络出现问题,导致无法联机到DNS服务器,那么你的主机会向每一步DNS服务器都发送联机要求,每次联机都有timeout时间的等待,会导致浪费过多的时间。

注意:当我们的主机使用DHCP获取IP地址的时候,当我们修改过/etc/resolv.conf之后,一会儿其又恢复原来的样子,因为当我们使用DHCP时,系统会主动的使用DHCP服务器传来的数据进行系统配置文件的修订。因此,我们必须设定不要使用DHCP传来的服务器设定值,我们可以在:/etc/sysconfig/network-scripts/ifcfg-eth0内增加“PEERDNS=no”,然后重启网络即可。

介绍host、nslookup、dig命令

[root@lb1 ~]# host -a www.uestc.edu.cn   #列出该主机所有的相关信息。
Trying "www.uestc.edu.cn"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3442
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.uestc.edu.cn. IN ANY

;; ANSWER SECTION:
www.uestc.edu.cn. 5 IN AAAA 2001:da8:6000::ef
www.uestc.edu.cn. 5 IN A 202.112.14.178

;; AUTHORITY SECTION:
uestc.edu.cn. 5 IN NS dns.uestc.edu.cn.
uestc.edu.cn. 5 IN NS cdnet52.uestc.edu.cn.

;; ADDITIONAL SECTION:
dns.uestc.edu.cn. 5 IN A 202.112.14.151
cdnet52.uestc.edu.cn. 5 IN A 202.112.14.161

Received 150 bytes from 192.168.229.2#53 in 4 ms

[root@lb1 ~]# host www.uestc.edu.cn 8.8.8.8 #指定8.8.8.8这台DNS服务器查询。
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases:

www.uestc.edu.cn has address 202.112.14.178
www.uestc.edu.cn has IPv6 address 2001:da8:6000::ef

dig命令
dig [options] FQDN [@server]
options有:+trace:就是从“.”开始追踪。
-t type:查询的数据主要有mx,ns,soa等类型
-x:查询反解信息。

例如:

[root@lb1 ~]# dig www.uestc.edu.cn

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-25.P1.el5_11.2 <<>> www.uestc.edu.cn
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37224
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.uestc.edu.cn. IN A

;; ANSWER SECTION:
www.uestc.edu.cn. 5 IN A 202.112.14.178

;; AUTHORITY SECTION:
uestc.edu.cn. 5 IN NS cdnet52.uestc.edu.cn.
uestc.edu.cn. 5 IN NS dns.uestc.edu.cn.

;; ADDITIONAL SECTION:
dns.uestc.edu.cn. 5 IN A 202.112.14.151
cdnet52.uestc.edu.cn. 5 IN A 202.112.14.161

;; Query time: 2 msec
;; SERVER: 192.168.229.2#53(192.168.229.2)
;; WHEN: Sun Jul 19 12:43:46 2015
;; MSG SIZE rcvd: 122

查询域名管理者相关信息:whois

[root@lb1 ~]# whois baidu.com
[Querying whois.verisign-grs.com]
[Redirected to whois.markmonitor.com]
[Querying whois.markmonitor.com]
[whois.markmonitor.com]
Domain Name: baidu.com
Registry Domain ID: 11181110_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.markmonitor.com
Registrar URL: http://www.markmonitor.com
Updated Date: 2014-08-20T04:00:52-0700
Creation Date: 1999-10-11T04:05:17-0700
Registrar Registration Expiration Date: 2015-10-11T04:05:17-0700
Registrar: MarkMonitor, Inc.
Registrar IANA ID: 292
Registrar Abuse Contact Email: abusecomplaints@markmonitor.com
Registrar Abuse Contact Phone: +1.2083895740
Domain Status: clientUpdateProhibited (https://www.icann.org/epp#clientUpdateProhibited)
Domain Status: clientTransferProhibited (https://www.icann.org/epp#clientTransferProhibited)
Domain Status: clientDeleteProhibited (https://www.icann.org/epp#clientDeleteProhibited)
Registry Registrant ID:
Registrant Name: Zhiyong Duan
Registrant Organization: Beijing Baidu Netcom Science Technology Co., Ltd.
Registrant Street: 3F Baidu Campus No.10, Shangdi 10th Street Haidian District
Registrant City: Beijing
Registrant State/Province: Beijing
Registrant Postal Code: 100085
Registrant Country: CN
Registrant Phone: +86.1059924216
Registrant Phone Ext:
Registrant Fax: +86.1059927435
Registrant Fax Ext:
Registrant Email: domainmaster@baidu.com
Registry Admin ID:
Admin Name: Zhiyong Duan
Admin Organization: Beijing Baidu Netcom Science Technology Co., Ltd.
Admin Street: 3F Baidu Campus No.10, Shangdi 10th Street Haidian District
Admin City: Beijing
Admin State/Province: Beijing
Admin Postal Code: 100085
Admin Country: CN
Admin Phone: +86.1059924216
Admin Phone Ext:
Admin Fax: +86.1059927435
Admin Fax Ext:
Admin Email: domainmaster@baidu.com
Registry Tech ID:
Tech Name: Zhiyong Duan
Tech Organization: Beijing Baidu Netcom Science Technology Co., Ltd.
Tech Street: 3F Baidu Campus No.10, Shangdi 10th Street Haidian District
Tech City: Beijing
Tech State/Province: Beijing
Tech Postal Code: 100085
Tech Country: CN
Tech Phone: +86.1059924216
Tech Phone Ext:
Tech Fax: +86.1059927435
Tech Fax Ext:
Tech Email: domainmaster@baidu.com
Name Server: ns2.baidu.com
Name Server: ns3.baidu.com
Name Server: ns7.baidu.com
Name Server: dns.baidu.com
Name Server: ns4.baidu.com
DNSSEC: unsigned
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/
>>> Last update of WHOIS database: 2015-07-19T05:56:25-0700 <<<

The Data in MarkMonitor.com's WHOIS database is provided by MarkMonitor.com for
information purposes, and to assist persons in obtaining information about or
related to a domain name registration record. MarkMonitor.com does not guarantee
its accuracy. By submitting a WHOIS query, you agree that you will use this Data
only for lawful purposes and that, under no circumstances will you use this Data to:
(1) allow, enable, or otherwise support the transmission of mass unsolicited,
commercial advertising or solicitations via e-mail (spam); or
(2) enable high volume, automated, electronic processes that apply to
MarkMonitor.com (or its systems).
MarkMonitor.com reserves the right to modify these terms at any time.
By submitting this query, you agree to abide by this policy.

MarkMonitor is the Global Leader in Online Brand Protection.

MarkMonitor Domain Management(TM)
MarkMonitor Brand Protection(TM)
MarkMonitor AntiPiracy(TM)
MarkMonitor AntiFraud(TM)
Professional and Managed Services

Visit MarkMonitor at http://www.markmonitor.com
Contact us at +1.8007459229
In Europe, at +44.02032062220
--

具有Forwarding功能的DNS服务器查询方式
Linux随笔-鸟哥Linux服务器篇学习总结(全)

我们为什么要架设cache-only DNS?
为了防止员工利用公司的网络资源做自己的事儿,公司会把port53阻挡在防火墙之外,此时就需要在防火墙的那部机器上面加装一个cache-only的DNS服务。这样自己利用自己防火墙主机上main的DNS服务区帮助你的客户端解析hostname->IP了。因为防火墙主机可以设定放行自己DNS功能,而客户端就设定防火墙IP为DNS服务器IP即可。