Linux实践工程师学习笔记

时间:2024.5.4

Linux实践工程师学习笔记一:用户环境

用户环境

#locale 显示系统语言环境    语言环境参数保存在/etc/sysconfig/i18n文件里

LANG最主要

#locale –a    查看系统对语言的支持情况

#LANG=zh_CN.GB2312    使系统支持以中文形式显示

kudzu    用来检测硬件

services kudzu start    重新检测硬件,让系统自动识别新硬件

硬件信息保存在/etc/sysconfig/hwconf文件

由kudzu产生

修改系统服务启动脚本

chkconfig kudzu –list     检查某个服务状态(包括各个级别0~6的状态)

setup    配置系统服务,一个综合配置工具

chkconfig –list | more 检查系统所有服务的状态

所有服务通过init启动

有些是通过xinetd服务启动的,如rsync

启动rsync

chkconfig rsync on

当执行service xinetd restart时,其实是执行/etc/init.d/xinetd这个脚本

而这个脚本会去检查自己的配置目录/etc/xinetd.d

/etc/rc0.d~/etc/rc6.d     里面的文件连接到../init.d/具体的服务,如/etc/init.d/kudzu

S开头为启动,K为不启动

/etc/rc0.d~/etc/rc6.d ---àrc.d/rc0.d~rc6.d

设置系统服务ntsysv命令(同setup)

如何关闭selinux

/usr/sbin/setenforce 0 关闭

/usr/sbin/setenforce 1 开启

或在/etc/selinux/config中改

SELINUXTYPE=permissive        关闭,disabled也可以

Linux下使用U盘

#ls /dev 确认设备已识别

#mount -o iocharset=gb2312 /dev/sda1

more后ctrl+F向下翻页(或空格)ctrl+b(上滚)

ls -a        显示隐藏文件(以.开头的文件)

文件权限rws        s表示执行这个程序的使用者,临时拥有和所有者一样的权力身份来执行该程序

cp -r 源   目的    -r参数表示连子目录一起拷贝

rm -i          确认删除

   -r          删除子目录

   -f          强制删除

du 磁盘或目录使用了多少空间

df 磁盘或目录剩余可用空间

cat >file1        等价你输入文字,输完后ctrl+C或ctrl+D结束

>>符号表示在文件尾附加,>符号表示创建新文件

less 可上下滚动文件内容

which     在$PATH设置的目录查找文件

Linux实践工程师学习笔记二:系统管理常用命令

1.    useradd redhat

2.    passwd redhat

3.    su –

4.    exit

5.    df –h 分区情况

6.    du –sh   /*    统计文件或目录使用空间的大小

7.    fdisk –l   /dev/sda

8.    netconfig       配置网络参数

9.    ifconfig           显示网络配置信息

10. service network restart

11. route –n       查看路由信息(默认路由)

12. ping –b 192.168.0.255 扫描整个网段(检查活动主机)

13. ifconfig eth0 10.0.0.254 netmask 255.255.255.0 修改IP地址

14. ifconfig eth0显示指定网卡参数

15. 修改IP信息后会删除默认路由,需手工添加

route add default gw 192.168.0.1

16. ifconfig route 修改过的参数不会保存,重启后会消失

要用service network restart命令把参数保存到文件ifcfg-eth0

/etc/sysconfig/network-scripts/ifcfg-eth0

可以vi直接修改该文件,然后service network restart 重新启用网络服务

17. redhat-config-network-tui是redhat独有的配置工具,当用这个命令配置网络参数后,会写入到/etc/sysconfig/networking/profiles/目录里,并且比network-scripts/ifcfg-eth0优先,所以用过这个工具配置就不要再使用netconfig,或者先将profiles目录清空

Linux实践工程师学习笔记三:文件系统维护

ext2/ext3通过数据块储存文件

格式化文件系统:

mkfs.ext3 –b 4096 –i 8192 –m 5 /dev/sdb4

-b    数据块大小

-i inode节点表示的字节数(或数据块大小)

-m 5    为管理员保留的磁盘管理空间5%

ls –lh /mnt/u

du –sh /mnt/u

df –lh

#tune2fs –l /dev/sdb1       打印文件系统属性

#df

tune2fs 调整ext2/ext3文件系统特性的工具

-l 查看文件系统信息

-m    保留块百分比

-c <count> 设置强制自检的挂载次数

-i <n day> 设置强制自检的间隔时间

-j           ext2转成ext3

tune2fs –c -1 /dev/sdb1 不管挂载多小次都不自检

tune2fs –c -1 –i 0 /dev/sdb1 让分区永远不自检

#mkfs.ext2 /dev/sdb4 格式化成ext2

#tune2fs –j /dev/sdb4 转换为ext3

#df –T              查看分区信息

判断间ext2还是ext3:

tune2fs –l /dev/sdb1 | grep features

看Filesystem features: has_journal

是否有has_journal,有则是ext3文件系统

grep –i “name” 不区分大小写

df –T 分区类型

fsck    检查文件系统数据完整性的工具

用法一、fsck –t ext2 /dev/sdb1

二、fsck.ext3 /dev/sdb1

#more /etc/fstab

如发现挂载选项有1或2,那么应该进行自检了

#fsck.ext3 –y /dev/sdb1       自动修复错误

Linux实践工程师学习笔记四:管理磁盘文件系统

mount 设备名 挂载点

mount /dev/fd0 /mnt/floppy

光驱(IDE) /dev/cdrom (/dev/hdx)

光驱(SCSI)/dev/scdN     (N=0,1…)

硬盘(IDE) /dev/hdX    (X=a,b,c…)

硬盘(SCSI)/dev/sdX    (X=a,b,c…)

U盘        /dev/sdX    (X=a,b,c…)

弹出光盘#eject

收回#eject –t

因为USB设备内置USB-SCSI转换接口,所以被认为是SCSI硬盘

#mkdir /mnt/u

#mount /dev/sda1 /mnt/u

默认内核已支持SCSI和USB接口

#modprobe usb-storage       检查usb-storage模块是否已加载,否则无法自动识别USB设备

#mount –t vfat /dev/hda2 /mnt/c

#mount –t ntfs /dev/hda3 /mnt/d 需重新编译内核才能支持NTFS

#mount –t iso9660 /dev/cdrom /mnt/cdrom

#mount –t vfat –o iocharset=gb2312 /dev/sdb1 /mnt/u

常用字符编码有gb2312和utf8

#mount /dev/sdb2 /mmt/d –o iocharset=utf8,ro,uid=redhat,umask=0077 

Linux下使用U盘

#ls /dev       确认设备已识别

#mount -o iocharset=gb2312 /dev/sda1

more后ctrl+F向下翻页(或空格)ctrl+b(上滚)

ls -a          显示隐藏文件(以.开头的文件)

文件权限rws        s表示执行这个程序的使用者,临时拥有和所有者一样的权力身份来执行该程序

cp -r 源   目的     -r参数表示连子目录一起拷贝

rm -i          确认删除

-r          删除子目录

-f          强制删除

du             磁盘或目录使用了多少空间

df             磁盘或目录剩余可用空间

cat >file1        等价你输入文字,输完后ctrl+C或ctrl+D结束

>>符号表示在文件尾附加,>符号表示创建新文件

less   可上下滚动文件内容

which     在$PATH设置的目录查找文件

Linux实践工程师学习笔记五:使用磁盘配额

默认系统内核已支持quota

mount –o usrquota,grpquota /dev/sdb1 /mnt/d1 或

mount –o remount,usrquota,grpquota /

也可以修改 /etc/fstab文件来启用每个文件系统的配额 ---- 添加选项usrquota,grpquota

例:

将LABEL=/home /home ext3 defaults   1 2

改为

LABEL=/home /home ext3 defaults,usrquota   1 2

#init 1    (进入单用户环境)

#quotacheck –cvuga 或 quotacheck –cvag   /dev/sdb1 (a代表all)(g代表用户组)

#quotaon –a 激活

#edquota –u redhat       进VI编缉用户配额

编缉用户可用的字节数,软性的,硬性的,文件数,软件性的,硬性的

quota –u redhat    查看用户磁盘配额

edquota –t           配置过期时间

edquota命令能为一系列用户设置同一配额。假设已为用户ez设立了配额,以下命令将为随后的用户(即mj、jm和tp)复制完全相同的配额限制:

$ sudo /usr/sbin/edquota -up ez mj jm tp

quotaoff /mnt/sdb1 关闭磁盘配额

quotaon /mnt/sdb1 开启

repquota命令按用户(-u)或组(-g)报告配额使用情况。用repquota -a命令可以得到所有文件系统的报告。

如果想检查单个用户(-u)或组(-g),可以使用quota命令。单个用户可以用此命令检查他们自己的配额使用情况。

关于putty 0.58的简单设置

1.    修改语言环境 LANG=zh_CN.utf8

2.    修改传输数据的字符集translationàUTF8

3.    修改外观appearance字体font为新宋体

   ls –ld    显示文件属主,详细信息

Linux实践工程师学习笔记六:Samba

samba软件包使用

Fedora core/Redhat Linux提供的软件包

samba    samba服务器软件包

samba-client samba客户端工具

samba-common 通用工具和库

安装rpmdb-fedora/rpmdb-redhat软件包(一般在第三张光盘)

但在FC5已找不到这个软件包

安装了rpmdb可以解决依赖性问题

#rpm –ivh rpmdb-fedora*.rpm

#rpm –ivh --aid samba*.rpm 装了rpmdb才有效

1.#rpm –ivh cups-libs*.rpm     第一张光盘

2.#rpm –ivh samba*.rpm 第一张光盘(client,common)

3.#rpm –ivh samba*.rpm 第二张光盘

#rpm –qa |grep samba 查看所有软件包列表

#rpm –ql samba | more    查讯某个软件列表

samba客户端工具

smbtree

作用:显示局域网中的所有共享主机和目录列表(默认使用当前用户登录)

用法:smbtree [-b] [-D] [-U username%password]

-D    表示只显示工作组名,不显示主机

-b 使用广播查询列表,不用WINS服务器

-D和-U 不能共用,因为不可能用同一个用户登录域上所有主机

nmblookup

作用:显示一台主机的nethios主机名

nmblookup my-server 查询服务器的IP

nmblookup \*           查询所有活动的主机的IP

smbclient

作用:显示/登录局域网中的共享文件夹

用法:smbclient –L host

    smbclient //host/share

    smbclient –L 192.168.0.22 –U redhat%redhat    以redhat用户登录并显示共享目录

    smbclient //192.168.0.22/linux –U redhat%redhat   

登入目录,查看目录内容,通过put,get上下载文件

smbtar(先要修改/usr/bin/smbtar命令,把最后一行的参数-N匿名登陆删掉)

远程备份网上邻居中的文件

smbtar –s win2000 –u redhat –p redhat –x chinalab –t itlab.tar

将共享目录挂载到本地目录,然后再访问

mount.cifs //192.168.0.22/linux /mnt –o username=redhat%redhat

tar tvf   lab.tar     显示备份包里的文件

samba服务器配置

1.修改配置文件/etc/samba/smb.conf

workgroup = WORKGROUP

security = share

[docs]

path = /usr/share/doc

comment = share documents   #说明共享目录

public = yes

2.重启smb服务器

#service smb restart

#chkconfig smb on       让smb每次自动启动

3.测试

#smbclient –L localhost

chkconfig smb –list       查看服务的启动状态

SMB 提供名称解释服务

NMB 提供数据传输服务

两个总是一起工作的

samba文件服务器

(WINS)在网上邻居看不到主机列表,可以在地址栏直接输入IP如\\192.168.0.1查看共享目录

网上邻居看到的主机列表,主要有三个来源,一是配置文件lmhosts,主机名与IP的对应关系

二是通过浏览服务器 三是通过广播方式获取主机列表

linux访问网上邻居

1.挂载方法

   #mount –t smbfs //192.168.0.1/linux /mnt

或 #mount.cifs //192.168.0.1/linux /mnt

2.#smbclient //192.168.0.1/linux –U redhat%123

访问控制

public = yes           允许所有人访问

       = no          不允许匿名访问

1.共享目录设置有效用户

[redhat]

   path = /var/redhat

   comment = redhat’s files

   valid users = <username> <@groupname>

2.创建samba用户

   #useradd username        新建一个系统用户

   #smbpasswd –a username     将用户加入到samba中

3.用户账号映射

[global]

   username map = /etc/samba/smbusers

4.修改上面指定的smbusers文件,添加虚拟用户名

   redhat = tom jack

   也可以直接用以下命令:

   #smbuseradd unixname:mapname

5.需重启smb服务读取映射文件

HOME目录(用于用户访问用户自己的主目录)

[global]

[homes]

   comment = Home Directories

   validusers = %S          %S目录属主

   browseable = no           默认不允许浏览home目录

   writable = yes             允许写

   valid users = 有效用户列表

   write list = 可写用户列表

   create mask = 0660              定义创建文件的默认权限

   directory mask = 0770 定义创建目录的默认权限

chown redhat /var/redhat 改变目录属主

ls –lh    显示目录里各个文件的详细信息

ls –ld /usr/redhat 只显示目录本身的详细信息

#testparm              测试配置默认文件smb.conf的正确性

#testparm /etc/samba/smb.conf my-server 192.168.0.1

测试客户机能访问服务器的哪些目录

[redhat]

   path = /var/redhat

   comment = redhat’s files

   public = no

   valid users = <username> <@groupname>

   write list   = <username> <@groupname>

   create mask = 0660

   directory mask = 0770

注意:客户端所有请求访问身份在服务器端都会映射成登录账号的身份

samba配置文件

/etc/samba/smb.conf

[global]

   workgroup = WORKGROUP             组或域名

   server string = samba server             服务器描述

   netbios name = redhat                      指定samba服务器名

   security = share/user/server                 share不需验证用户,user要验证

   ;password server = <server>

   需与security=server配合使用

   log file = /var/log/samba/log.%m       %m指客户机的netbios名,日志按客户机名分类

   encrypt passwords = yes                        

加密密码,windows客户机一般使用加密密码,所以为yes.如果不加密直接用明文密码,可改为no,但windows客户机需修改注册表指定不加密

   smb passwd file = /etc/samba/smbpasswd

上面两句要一起使用!

   include = /etc/samba/smb.conf.%m    包含外部配置文件,如根据不同的客户机名称,定义不同的共享资源

   ;interfaces = 192.168.0.0/24             samba应用在哪个接口上,默认是在所有网卡,所有接口上

   ;name resolve order =   wins lmhosts bcaast              名称解释顺序

   ;wins support = yes                                   自己作为WINS服务器,并提供给客户机查询

   ;wins server = w.x..y.z                       与WINS配合使用,作为WINS服务器,请求会发送到w.x.y.z

/etc/samba/lmhosts文件(保存客户机IP与名称的对应关系)

左边IP       右边名称

127.0.0.1        localhost

wins support,wins server          不能同时使用

wins server 说明本身作为客户机,而指定一台wins服务器的IP

samba的安全级别

[global]

   security = <level>

1.share

   windows用户不需要认证就能访问共享列表

2.user

   windows客户机需输入用户才能访问共享名列表,服务器上需建立用户账号

3.server

   客户端需输入合法用户帮能访问,但认证过程在另一服务器进行,用户账号保存在认证的那台服务器上。

share,user只对windows客户机有效,linux客户机在user级别不用密码也能访问共享名列表。security只保护主机的共享名列表,具体到目录的访问则由目录的规则决定。

#hostname    查看主机名

#nmblookup my-server    查询主机IP(与samba netbios name有关)

#man smb.conf    查看相关帮助

vi搜索技巧:

   /%m              先输入”/”再输入要查找的字符串

   /redhat 如查找”redhat”字符串

   shift+G 跳到文件尾

默认服务器名与机器DNS的第一部分相同

如Fedora.cyrich.com则这台samba服务器的名称就是Fedora

访问控制

一、全局控制

[global]

   hosts deny = ALL

   hosts allow = 192.168.0.

二、局部访问控制

[docs]

   hosts deny = 192.168.0.

   hosts allow = 192.168.0.1

[redhat]

   hosts allow = 192.168.0.

   host deny = 192.168.0.1    (失效)

允许优先!!

hosts 后面的格式语法,可以通过man 5 host.access查看帮助

1.点开头 .edu.cn

2.点结尾 192.168.0.

3.192.168.0.0/255.255.255.0

   192.168.0.0/24

4.ALL   LOCAL UNKNOWN    DNS不能解析的

5./开头 指定一个文件

6.hosts allow = 192.168.0.0 EXCEPT   192.168.0.1

允许192.168.0网段主机访问,但192.168.0.1除外

技巧:

#tail /etc/samba/smb.conf

显示文件最后的十行

应用案例

要求:

1.所有员工都能够在公司内流动办公,但不管在哪台电脑上工作,都要把自己的文件数据保存在samba文件服务器上。

2.市场部,技术部都各有自己的目录,同一个部门的人共同拥有一个共享目录,其他部门的人都只能访问在服务器上自己个人的home目录

3.所有用户都不允许使用服务器上的shell

分析:

1.需要samba作为文件服务器,为所有用户创建账号和目录,用户默认都 在服务器上有一个home目录,只有认证通过才能看到。

2.需为市场部和技术部创建不同的组sales和tech,并且分配目录,把所有市场部员工加入sales组,技术部员工加入tech组,通过samba共享sales和tect

3.建立用户账号时,不分配shell

案例实施:

1.为所有用户创建账号和目录,不分配shell,假设市场部有tom,jack,技术部有red,blue,总经理ceo,财务finance

2.建组sales和tech,把所有市场部员工加入sales组,技术部员工加入tect组

3.创建两个目录/home/sales和/home/tech,并修改两个目录的权限,分别属于sales组和tect组

4.通过samba共享/home/sales和/home/tect

5.测试

如有错误,检查

/etc/samba/smbpasswd       确定账户

/etc/samba/smbusers          查看映射文件

tail /var/log/samba/redhat.log        查看/var/log/samba/目录下的日志

具体操作:

#vi /etc/samba/smb.conf              安全级别为user

#groupadd sales

#groupadd tech

#useradd –g sales –s /bin/false tom

#useradd –g sales –s /bin/false jack

#smbpasswd –a tom

#smbpasswd –a jack

#for user in red blue             批量添加用户red,blue

>do

> useradd –g tech –s /bin/false   $user

>     smbpasswd –a $user

>     done

#useradd ceo

#useradd finance

#smbpasswd –a ceo

#smbpasswd –a finance

#mkdir /home/sales /home/tech

#chgrp sales /home/sales

#chgrp tech /home/tech

#chmod 770 /home/sales

#chmod 770 /home/tech

#chmod g+s /home/sales              防止权限发生混乱

#chmod g+s /home/tech

#vi /etc/samba/smb.conf

[sales]

   path = /home/sales

   comment = sales

   public = no

   valid users = @sales

   write list = @sales

   create mask = 0770          其实效果就是0760,因为samba服务器会自动把可执行权限拿掉

   directory mask = 0770

[tech]

   path = /home/tech

   comment = tech

   public = no

   valid users = @tech

   write list = @tech

   create mask = 0770

   directory mask = 0770

linux测试

1.smbclient –L 192.168.0.22 –U tom%tom

2.mount.cifs //192.168.0.22/ceo –o username=ceo%ceo

windows客户机映射网络驱动器,再设定“我的文档”位置,就可随时随地将文件保存在samba服务器

Linux实践工程师学习笔记七:Raid

安全的动态磁盘策略

linux内核可以模拟RAID控制器,用来管理硬盘,但只支持级别0,1,4,5

RAID0 又称striping

把连续的数据访问分散到多个磁盘上来提高存储性能,速度最快,但最危险。

RAID1 又称Mirror或Mirroring

最大限度的保证用户数据的可用性和可修复性,用户数据100%自动复制到另外一个硬盘上,速度稍慢,因为要同时写多个硬盘。

RAID5 最少需三个硬盘

不对存储的数据时行备份,而把数据和对应的奇偶校验信息分别存储在不同的磁盘上,当一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。

RAID0+1    也称RAID10

结合RAID0和RAID1的优点,很多公司在应用

Linux中的软件RAID

1.默认内核已支持软件RAID控制器

2.需安装raidtools工具来创建管理RAID设备,raidtools包含有RAID创建管理工具和默认的示范性配置文件,安装完后编辑/etc/raidtab这配置文件,它可以从raidtools中的示范配置文件里(在/usr/share/doc/raid-~/目录下)复制。最后用以下命令创建RAID设备:

#mkraid /dev/md0

#mkraid -f /dev/md0

#mkraid -R /dev/md0

   后两个命令是强制创建,覆盖以前建的超级块。

   但Fedora Core5不使用这个,而用mdadm工具。

3.软件RAID设备文件名:/dev/mdN        (N=0,1,2…)

4.软件RAID设备可以当分区看待,需格式化后挂载

#mkfs.ext3     /dev/md1

#mount /dev/md1 /opt

5.停止RAID设备

#umount /opt

#raidstop /dev/md0

   要永久删除RAID设备,还需删除raidtab文件,否则重启后RAID仍起作用。

6.显示RAID设备信息

#lsraid -A -a /dev/md1

7.RAID1故障模拟

   假设sdb1与sdc1两个磁盘做RAID1,sdb1磁盘坏了,加入新一块磁盘sdd1。

#raidsetfaulty /dev/md1 /dev/sdb1

#raidhotadd /dev/md1 /dev/sdd1      

#more /proc/mdstat                   查看磁盘修复过程

#raidhotremove /dev/sdb1

   最后还要修改raidtab文件。

使用mdadm来创建和管理RAID

RAID0

   添加硬盘

   RAID设备的成员是硬盘分区,需先对硬盘分区,分区不能在同一物理硬盘上

   #fdisk /dev/sdb

   n创建主分区,t分区类型fd,w写保存

   #fdisk /dev/sdc

   #mdadm –Cv /dev/md0 –l0 –n2 /dev/sdb1 /dev/sdc1

             -C,--create          创建一个新的阵列

             -v,verbose          显示细节

             /dev/md0             阵列设备的名称

             -l,--level=              阵列级别,如0,1,4,5,6

             -n,--raid-devices= 阵列活动数目

             /dev/sd[bc]1       阵列包含的设备列表

   #more /proc/mdstat              查看阵列状态

   #mkfs.ext3 /dev/md0     创建文件系统

   #mount /dev/md0 /mnt/raid

   让系统自动挂载,修改/etc/fstab,添加

   /dev/md0    /mnt/raid        ext3 defaults 0 0

RAID5 故障模拟

   前面已创建了一个RAID5设备md0

   #mdadm –Cv /dev/md0 –l5 –n3 –x1 –c128 /dev/sd[b,c,d,e]1

   1.将/dev/sdb1标记为已损坏的设备

   #mdadm /dev/md0 –f   /dev/sdb1

   这时阵列开始重构和恢复数据

   2.移除损坏的设备

   #mdadm /dev/md0 –r /dev/sdb1

   3.将新设备添加到阵列

   注意,一:对硬盘正确分区,二:添加设备名要与被移除的一致,如sdb1

   #mdadm /dev/md0 –a /dev/sdb1

  

生成配置文件/etc/mdadm.conf

格式如下:

DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 ARRAY /dev/md10 level=raid10 num-devices=4 UUID=12334343dkfj

其中UUID信息通过#mdadm –D /dev/md10得到

#mdadm –Ds 扫描该文件信息

常用阵列维护命令

1.启用阵列

   #mdadm –As /dev/md0

   -A 启用已存在的阵列

   -s 以/etc/mdadm.conf为依据

   没有创建mdadm.conf文件,则采用如下方法启用

   #mdadm –A /dev/md0 /dev/sd[bc]1

2.停止阵列

   #mdadm –S /dev/md0

3.显示阵列详细信息

   #mdadm –D /dev/md0

Linux实践工程师学习笔记八:Lvm逻辑卷管理器

PV (physical volume)物理卷

VG (Volume Group)卷组

LV (Logical Volume)逻辑卷

1.fdisk /dev/sdb

   分区sdb1,sdb2,sdb3

   分区类型8e(Linux LVM)

   如果系统在使用sdb,需要重启,以便系统重新读取sdb的分区表信息

2.#pvcreate /dev/sdb[1-3]                初始化物理卷

3.#vgscan                               扫描物理卷,创建卷组数据库,第一次创建lvm必须运行此命令

4.#vgcreate vg0 /dev/sdb1 /dev/sdb2        用sdb1,sdb2创建卷组vg0

   #vgdisplay vg0                         查看卷组vg0的信息

5.#lvcreate –n data –L 10M vg0           从vg0中创建一个新的名为data,大小10M的逻辑卷

6.#mkfs.ext3 /dev/vg0/data                 格式化

7.#mount /dev/vg0/data /mnt

   #lvdisplay /dev/vg0/data                 查看逻辑卷data的分区情况

   #lvcreate –n test –l 5 vg0          创建逻辑卷用-l指定块数,默认块大小4MB,即分配逻辑卷20MB大小,这个默认的物理扩展块的大小可以通过命令vgdispaly vg0查看PE SIZE的值而知道。

创建完逻辑卷一定要mkfs.ext3格式化才能使用

   #lvscan                               扫描逻辑卷,看它们的活动情况

#umount /mnt

#lvextend –L +20M /dev/vg0/data           扩大逻辑卷20M,要先umount分区,再扩大

#e2fsck –f /dev/vg0/data                强行检查data逻辑卷

#resize2fs /dev/vg0/data                重新定义分区大小

以上三步要按顺序进行,用以下一条命令可以达到上面三条命令相同的效果:

#e2fsadm –L +20M /dev/vg0/data

#pvscan                                  查看系统目前的物理卷情况

#vgextend vg0 /dev/sdb3                    扩大卷组vg0,将分区sdb3加入卷组

#pvmove /dev/sdb1                          移除物理卷

#vgreduce vg0 /dev/sdb1                    从卷组中删除sdb1

pvmove将数据移走,但sdb1还在vg0内,还是属于卷组分区,vgreduce将sdb1从vg0中删除

创建卷组时,默认的PE大小4MB,允许的LV最大256G

#vgcreate –s 8M vg1 /dev/sdb1

-s 指定PE块大小

通过改变PE块大小,从而改变卷组允许支持的逻辑卷最大容量

技巧:

#clear    清屏

#df –lh 显示系统现在的分区挂载情况

建立快照(备份数据)

#lvcreate –s –L 52M –n snap /dev/vg0/data

-s 表示快照

-L 快照大小要大于或等于被创建的逻辑卷data

-n 快照名称

快照不用格式化即可使用

删除逻辑卷步骤

1.umount所有LV

2.lvremove /dev/vg0/data    (通过lvscan查看)如有快照,先移除快照再移除逻辑卷。

3.#vgchange -an /dev/vg0    休眠vg以便删除,vgchange -ay /dev/vg0此命令可以激活vg。

4.#vgremove vg0

使用过程中,如有错误,可查看系统日志

#tail /var/log/message

如果要使根分区使用LVM设备,需先创建好LVM设备,再用lvmcreate-initrd命令在boot分区创建支持lvm功能的虚拟磁盘镜像文件,最后修改grub.conf加载此镜像文件即可。

Linux实践工程师学习笔记九:RaidLvm的综合应用实例

要求:使用三个硬盘存储数据,保证数据安全性的同时还能让磁盘根据需要动态的缩放

设备sdb sdc sdd

1.将三个硬盘组成RAID5,实现安全性

2.在阵列md0上创建物理卷,卷组,逻辑卷

3.将数据转移到逻辑卷

具体操作:

1.fdisk 三个硬盘,分区类型fd,最后得到sdb1,sdc1,sdd1

2.创建raid设备

#mdadm –Cv /dev/md0 –l5 –n3 /dev/sd[b,c,d]1

3.#pvcreate /dev/md0           在阵列上初始化物理卷

4.#vgcreate vg /dev/md0

5.#lvcreate –n home –L 100M vg

#lvcreate –n var –L 100M vg

#mkfs.ext3 /dev/vg/home

#mkfs.ext3 /dev/vg/var

#mkdir /mnt/home

#mkdir /mnt/var

#mount /dev/vg/home /mnt/home

#mount /dev/vg/var /mnt/var

#cp –a /home/* /mnt/home

#cp –a /var/*   /mnt/var

#df –lh

6.#vi /etc/fstab 添加

/dev/vg/home       /home     ext3 defaults 0 0

/dev/vg/var          /var       ext3 defaults 0 0

7.#vi /etc/mdadm.conf 创建文件,以便系统启动时能够自动识别raid设备,内容如下:

DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 ARRAY /dev/md0 level=raid5 num-devices=3 UUID=123545:erdfj3:dkf3jd

(UUID具体通过mdadm –D /dev/md0获取)

或者#vi /etc/rc.sysinit 修改此文件,搜索raid,在它下面添加条命令:raidstart /dev/md0

8.reboot

上面已正确地将数据移植到LVM上,下面将/分区移植到LVM上

#lvcreate –n root –L 200M vg

#mkfs.ext3 /dev/vg/root

#mount /dev/vg/root /mnt

#cd /mnt

#mkdir proc tmp var home opt cdrom media mnt srv selinux

#cd /

#cp –a bin dev etc lib sbin root usr sys /mnt &

当操作的过程时间太长,可按ctrl+z,再输入bg,让它后台运行

技巧:

#rm –rf /mnt/bin 强行删除目录

#\ls       不高亮显示

RAID5的磁盘容量利用率为2/3

利用mkinitrd创建一个虚拟的磁盘映像文件

#mkdir /boot/test

#mkinitrd –v –preload raid5 –preload lvm-m0d /boot/test/initrd-lvm-$(uname-r)img $(uname –r)

在里面添加加载根分区所需的raid设备文件,驱动程序,命令mdadm等

#cd /boot/test

#mv initrd-lvm-2.6.15-1.2054_FC.img initrd-lvm-2.6.15-1.2054_FC.img.gz

#gunzip init-lvm-2.6.15-1.2054_FC.img.gz

#cpio –idv < init-lvm-2.6.15-1.2054_FC.img

#rm initrd-lvm-2.6.15-1.2054_FC.img

添加设备文件,复制文件时要注意-a参数

#cp –a /dev/vg dev

#cp –a /dev/mapper dev

#cp –a /dev/md0 dev

#cp –a /dev/sd[abcd] dev

#cp –a /dev/sd[abcd]1 dev

#vi init 添加,一定要在mkblkders后面添加,系统启动后执行的第一个脚本,自动激活磁盘阵列

   mdadm –As               

   vgscan

   vgchange –a y

   修改加载的root分区

   mount –o defaults --ro -t ext3 /dev/vg/root /sysroot

#cp /sbin/vgscan bin

#cp /sbin/vgchange bin

#cp /sbin/mdadm bin

#ldd bin/mdadm     查看该命令所需的库文件

#cp /lib/libc.so.6 lib              (字母o)添加命令所需库文件

#cp /lib/ld-linux.so.1 lib

上面的mdadm -As会根据配置文件mdadm.conf激活阵列,所以将/etc/mdadm.conf拷过来

#cp /etc/mdadm.conf etc          (之前已经手工创建了mdadm.conf),添加配置文件

最后确认/boot/test目录里的文件准备打包

#cd /boot/test

#find -print | cpio -oc > /boot/initrd-lvm-$(uname -r).img

#cd /boot

#gzip initrd-lvm-2.6.15-1.2054_FC.img -c > init-lvm-2.6.15-1.2054_FC.img.gz

这样将文件恢复成一个虚拟磁盘映像文件

修改引导配置

#vi /boot/grub/grub.conf

修改defaults=1

添加

title Fedora LVM

   root (hd0,0)

   kernel /boot/vmlinuxz-2.6.15-1.2054_FC ro root=/dev/vg/root

   和/boot目录里的vmlinuxz对应,注意root=/dev/vg/root的修改

   initrd /boot/initrd-lvm-2.6.15-1.2054_FC.img.gz

保存退出

#mount /dev/vg/root /mnt

#cd /mnt

#vi etc/fstab 修改

/dev/vg/root /    ext3 defaults 1 1

这样系统启动就会将/dev/vg/root 作为主分区使用

完成所有修改

#reboot

从启后ls /boot应该没有东西,因为物理boot在sda1分区里

可以#mount /dev/sda1 /mnt 再看看里面的boot内容

证明已经成功的转移了根分区,完成了案例提出的要求。在进行这个实验时,主要是对磁盘映像文件的修改,修改init文件时,要注意加载模块的顺序,先创建块设备,才能使用块文件。

使用mkinitrd创建文件后,要注意用file命令查看文件类型,从而进一步对映像文件进行解压,提取等操作。当修改完磁盘映像文件initrd后,要知道如何打包、压缩。注意如何使用cpio命令。

Linux实践工程师学习笔记十:FTP服务器

FTP使用TCP协议

21端口传输控制信息

20端口传输数据

验证信息采用明文传输

匿名用户anonymous

binary模式传输程序、图片等二进制文件

ascii模式舆文本文件

安装vsftpd

1.下载源代码vsftpd-2.0.5.tar.gz

2.编译源程序,可参考帮助文件INSTALL

   #tar zxvf vsftpd-2.0.5.tar.gz

   #cd vsftpd-2.0.5

   #make

   #make install

3.安装配置文件

   #cp vsftpd.conf /etc

   #cp RedHat/vsftpd.pam /etc/pam.d/ftp

4.编缉配置文件/etc/vsftpd.conf

5.启动服务器

   #/usr/local/sbin/vsftpd &

配置文件

listen=YES                       服务器独立运行

服务器默认配置文件,不允许其他用户登录,只能匿名登录,匿名登录需要先建/var/ftp目录

finger                         用户信息查看工具

finger ftp                       确认是否有ftp这个用户

为匿名用户可登录,要创建ftp用户和/var/ftp目录

#mkdir /var/ftp

#chown root.root /var/ftp

#chmod og-w /var/ftp

为使vsftpd开机自动进行,在/etc/rc.local添加/usr/local/sbin/vsftpd &

#netstat -tnl                    查看本地已启动的服务

vsftpd可以以两种方式运行

让vsftpd独立运行,关闭xinetd的方式

#chkconfig vsftpd off

vsftpd的配置文件

anonymous_enabled=YES          #允许匿名登录

local_enable=YES                 #允许本地用户登录

write_enable=YES                 #允许客户端写

local_umask=022                #本地用户新建文件的umask值

anon_upload_enable=YES           #允许匿名用户上传文件

anon_mkdir_write_enable=YES    #允许匿名用户创建目录

dirmessage_enable=YES          #允许使用目录的消息

ftpd_banner=Welcome to redhat #登录欢迎词

ls_recure_enable=YES          #允许客户端使用ls -R命令

listen=YES                       #监听模式

修改配置文件后,重新启动vsftpd服务

#killall -9 vsftpd             强行终止

#/usr/local/sbin/vsftpd &        启动

#id redhat                       查看redhat用户信息(组id,所属组)

#mkdir /var/ftp/incoming       #为匿名用户开放上传incoming目录

#chgrp ftp incoming

#chmod g+w incoming

chroot环境 (用户不能改变主目录,不能查看主目录外的其他目录,可以隐藏主目录的位置)

/etc/vsftpd.conf:

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

如果把chroot_local_user=YES,则本地所有的用户都变成chroot环境,它的默认值为NO。

/etc/vsftpd.chroot_list: (锁定主目录的用户列表)

redhat

chiaitlab

#killall -HUP vsftpd

用户控制

#vi /etc/vsftpd.conf添加

userlist_enable=YES              启用用户列表

userlist_file=/etc/ftpusers    定义用户列表文件位置

userlist_deny =YES          拒绝列表的用户

            =NO              只允许列表的用户登录

要达到上面同样的效果,还可以修改/etc/pam.d/vsftpd文件。默认为拒绝列表的用户:

auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers   onerr=succeed 

只要把上面的deny改成allow就可以允许列表的用户。

#vi /etc/ftpusers

编缉用户列表,将要进行控制的用户添加进去,一行一个用户

#ldd vsftpd     显示依赖的共享库

默认编译安装没有支持PAM模块,通过ldd /usr/sbin/vsftpd看是否在依赖于libpam.so.0,如果有证明服务支持PAM。

通过光盘RPM安装(第二张)

#rpm -ivh vsftpd-2.0.4-1.2.i386.rpm

配置文件及用户列表在/etc/vsftpd目录下

pam服务名 /etc/pam.d/vsftpd

vsftpd在/usr/sbin/vsftpd

ftp默认拒绝id 500以下的用户登录

虚拟账号

对于用DB库存储用户及密码,先看系统是否有相应软件包

#rpm -qa | grep db4

db4-devel              第三张盘

db4                    第一张盘

db4-utils              第4张盘

1.建虚拟账号users.txt

tom

123

jack

123

用户密码各占一行

#db_load -T -t hash -f users.txt /etc/vsftpd/vsftpd_login.db

#chmod 600 /etc/vsftpd/vsftpd_login.db

2.修改/etc/pam.d/vsftpd 增加(将其他注释掉,否则有可能会出现虚拟用户无法登陆的错误)

auth        required pam_userdb.so    db=/etc/vsftpd/vsftpd_login

account     required pam_userdb.so    db=/etc/vsftpd/vsftpd_login

3.建虚拟账号目录

#useradd vuser

!!注意,编译安装vsftpd时,首先检查是否安装了pam-devel(FC5在第4张盘),否则编译选项定义了pam,但依然无法使用pam服务,最好用ldd确定一下

4.编缉/etc/vsftpd/vsftpd.conf

anonymous_enable = NO

local_enable =YES

write_enable=YES

anon_upload_enable=NO

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

guest_enable=YES

guest_username=vuser

anon_world_readable_only=NO (用于获得目录列表,安全起见不推荐)

如果登录时出现

500 OOPS: priv_sock_get_result

Connection closed by remote host.

这样的错误。需要升级pam

运行

#yum update pam

Proftpd

#tar jxvf proftpd-1.2.9.tar.gz2

#cd proftpd-1.2.9

#./configure                生成与系统有关的配置文件

#make                      编译把源程序编译成二进制文件

#make install

#/usr/local/sbin/proftpd

配置文件:/etc/local/etc/proftpd.conf

vi使用技巧:

yy 复制当前行

p     粘贴

/    查找

n     查找下一个

查找与查找下一个配合使用

shift+D                               在当前行删除光标后的所有字符

#netstat -tnlp                          显示进程及ID

为Grub设置密码,防止用户修改或编缉Grub的引导菜单

#grub-md5-crypt           产生一个md5加密的字符串

#grub-md5-crypt >> /etc/grub.conf

#vi /etc/grub.conf

password --md5 $1#123abckdfj343k        $1#123abckdfj343k为上面生成的加密字符串

这样在启动时,要编缉引导菜单必须输入密码,在引导菜单最后加上 s ,可进入单用户模式。

find / -perm -002        查找文件权限中其他人具有写权限的文件,0表示用户,组不管

find / -perm +6000    查找文件,不管用户,组其他,只要权限中含有6(读写)即满足要求。

-                      表示权限位必须具有的

+                      表示权限位可能有或无

Linux实践工程师学习笔记十五:DNS服务器

安装BIND

1.去http://www.isc.org/下载最新版本,如bind-9.3.2.tar.gz

2.编译安装

#tar zxvf bind-9.3.2.tar.gz

#cd bind-9.3.2

#./configure --sysconfdir=/etc          配置文件放在/etc

#make

#make install

rpm包安装,程序放在/usr/sbin目录下,默认编译安装程序放在/usr/local目录下,编译安装需手工创建主配置文件

#vi /etc/named.conf

编译时,注意大括号前后需有空格,光盘有一个叫caching-nameserver的软件包,装完后会自动复制一份默认的一些配置文件。这里我们都是手工创建

option {

             directory “/var/named”;       指定服务器工作目录

};

zone “.” {                                        根区,服务器必须知道如何查找根,因为这里没有根服务器的数据库。                type hint;                             所以定义为hint,链接到根的数据库,并指定链拉文件

             file “name.ca”;

};

#mkdir /var/named

named.ca用来保存根域服务器的地址,但现在不知道根域服务器地址到底是多少。下面演示如何查找根服务器地址产生named.ca文件:

首先我们找一个可用的DNS IP,利用此DNS查找根地址。

#echo “nameserver 192.58.128.30” > /etc/resolv.conf

#dig -t NS .           (dig是一个挖掘DNS记录的工具)

   -t 指定类型为NS,即查找根DNS记录,查找后的结果:左边是根的域,右边是根服务器的主机名

#dig -t NS . > /var/named/named.ca

有了根服务器后,这台DNS服务器就可启动了。

用RNDC控制服务器

1.产生rndc控制文件

#rndc-confgen >/etc/rndc.conf

#tail +13 /etc/rndc.conf >>/etc/named.conf

将配置文件13行起到结尾的内容追加到named.conf

2.启动named服务器,监视/var/log/messages

#named

#tail /var/log/messages

如有错误,根据提示解决,例如RPM包安装可能会提示无法打开/var/run/named/named.pid

可以用root用户删除/var/run/named目录,再重建一个。

3.测试rndc和解析效果

#rndc status

#echo “nameserver 127.0.0.1” > /etc/resolv.conf

#host

第一次解析主机后将信息存入缓存,以后再解析时就很快,只要有了根区就可以查到整个互联网。

host,dig都是通过DNS查询,对于一台服务器来说,我们自己的应用环境总有一台叫localhost的主机,默认情况下localhost的主机总是在hosts文件定义,为取代hosts文件,需要把localhost加进DNS服务器,任何一台有网络的主机都 会有一个回环设备地址,回环设备地址没有相应的主机名,很多服务都 会起不来。

添加localhost域

#vi /etc/named.conf 添加

zone “localhost” {                            区名叫localhost

                  type master;                表示这是主域服务器,数据库是自己维护的,不需要其他人管理

                  file “named.local”;       数据库文件(区文件)位置

};

编缉/var/named/named.local

@ 1D IN SOA          localhost. root (

       2006081201编号更新一次自己加1,当发生改变时,会通知其他域名服务器更新数据库

        1H                 多少时间刷新其他DNS的数据库记录

        15M             主向从DNS服务器发送信息出现错误,会隔15分钟再重试

        1W             如果重试还有错,一星期后过期

        1D )             缓存保存时间,默认为1天

       IN NS       @                      指定这个域的DNS服务器

       IN A          127.0.0.1             指定DNS服务器的IP地址

在这个文件里必须指定这个文件所服务的域的范围,到底为哪个域服务,第一个字段,一般是域名或主机名,@表示当前的域名,就是前面zone后面的那句”localhost”,localhost将作为一个变量传递给named.local文件

第二个字段,表示域类型,IN为互联网类型

第三个字段,记录类型,任何区文件里都有一条SOA记录。还有其他记录类型,如NS域名服务器,A地址,接着后面是当前域的域名和管理者信息,管理者信息是一个邮箱地址,上面使用了缩写,全写应该是root.localhost.

注意不能用@,因为前面说过了,这是表示当前域名,并且最后是以点结束。

小括号前后要有空格,小括号包括的是整个域的管理信息。

localhost. IN NS localhost.           表示localhost. 域的DNS服务器为localhost

localhost. IN A 127.0.0.1              表示localhost主机IP地址为127.0.0.1

主机名,域名要以点结尾,表示结束。相同记录可省略某个字段

增加一个正向区

/etc/named.conf 添加

zone “chinaitlab.com” {

                  type master;

                  file “chinaitlab.com.zone”;

};

/var/named/chinaitlab.com.zone:

@ 1D IN SOA    chinaitlab.com.    root (

                        2006081201

                        1H

                        15M

                        1W

                        1D )

             IN NS ns

             IN MX 10 mail

ns           IN A     192.168.0.22

www    IN A     10.0.0.1

news    IN CNAME   www

FQDN:完整的域名

A表示地址记录

SOA后跟当前域名,如果全写用点号结束,缩写则不用

root默认跟当前域名后缀,上面的root全写应为root.chinaitlab.com.

NS后必须跟主机名,不能跟IP地址

MX邮件交换机,指出当前域的邮件服务器

10为优先级

当指定了NS,MX记录,必须为他们指定一个IP地址

news是www的别名

#rndc reload 重新加载配置文件named.conf

#dig chinaitlab.com        测试,查询chinaitlab.com这个域的信息

#host http://www.chinaitlab.com/ 查询http://www.chinaitlab.com/主机的IP(默认查询的是A记录)

有时候NS记录会这样写

….       IN NS @

             IN A     192.168.0.22

前面省略的表示当前的域名,后面@表示当前域,这台主机虽然前后都可以用@,但@在NS表示的意思是主机而不是域。

#host -t NS chinaitlab.com

查询chinaitlab.com的DNS服务器是谁

#host -t A chinaitlab.com

查询chinaitlab.com这个域的A记录,即这个域的DNS服务器的IP

   -t 表示记录类型,可以跟SOA,NS,A等

dig 查询比较详细,host查询信息比较简洁。

为了可以使用缩写的主机名,可以

#echo “search chinaitlab.com” >>/etc/resolv.conf

这样#host www时,会自动在www后面补全要搜索的域名,相当于#host http://www.chinaitlab.com/

小括号里的管理信息主要应用在主域服务器和辅助服务器之间。

可以在第一行加上一个全局变量$TTL 1D 表示生存周期,这样关于生存周期的字段就可省略。

(正向)一个区文件必须有一条SOA记录,NS记录和这条NS记录对应指出NS IP地址的记录

(反向)一个反向文件,必须有一条SOA,一条NS,一条PTR记录

127.0.0的反向区

反向区的区名由其IP反过来写加上.in-addr.arpa后缀,如127.0.0的反向区名:0.0.127.in-addr.arpa

vi /etc/named.conf 追加

zone “0.0.127.in-addr.arpa” {

                  type master;

                  file “127.0.0.zone”;

};

编缉/var/named/127.0.0.zone:

$TTL 1D

@ IN SOA    @ root.localhost. (

                        2006081201

                        1H

                        15M

                        1W

                        1D )

   IN NS localhost.

1     IN PTR localhost.

在这个反向区文件里@表示0.0.127.in-addr.arpa区名,所以root不能简写,SOA后跟当前的服务范围,@表示服务范围是当前区,最后一条表示把127.0.0.1指向localhost.。1是简写,它表示1.0.0.127.in-addr.arpa

如果是rpm包安装可以使用

#service named restart       重启服务器

#service named reload           重新加载配置文件

但编译安装只能使用rndc

#rndc reload

测试

#host 127.0.0.1    查询地址指向的名称

#dig -x 127.0.0.1

技巧:如在putty中运行vi,在vi里无法使用小键盘,设置putty的TeminalàFeatures,打勾Disable application keypad mode

vi中删除行首字符

:.,$-1s/^#\ //

.当前行 s 替换 // 删除

,到       ^# 行首#

$-1 倒数第二行 \     转义空格字符

增加一个真实的反向区

反向区为192.168.0

/etc/named.conf

zone “0.168.192.in-addr.arpa” {

                        type master;

                        file “192.168.0.zone”;

};

/var/named/192.168.0.zone:

@ IN SOA    chinaitlab.com        root.chinaitlab.com.    (

                                       2006091201

                                       36000

                                       7200

                                       3600000

                                       86400 )

   IN NS       chinaitlab.com.

1     IN PTR       http://www.chinaitlab.com./

2     IN PTR        ftp.chinaitlab.com.

3.0.168.192.in-addr.arpa.    IN PTR        mail.chinaitlab.com.

NS记录指出当前区的DNS服务器,DNS必须能找到,必须有NS的正向解析,由于前面曾在chinaitlab.com域中解析了chinaitlab.com,所以这里的名为chinaitlab.com的DNS主机是能找到的。如果前面解析了ns.chinaitlab.com为DNS服务器,则这里就应该改成ns.chinaitlab.com.

能不能缩写一定要区分,在反向区文件中,主机名是不能缩写的,但地址可以。只要弄清@字符所代表的含义就行,它就是缩写了的内容。

测试:

#rndc reload

#host 192.168.0.2

技巧:

#history       显示历史记录(执行过的命令)

#history 20     显示最近20条操作记录

#history -c    清空历史记录

vi中查找“-c”字符,使用“:/\-c          /代表查找    \代表转义

子域授权

主服务器的/etc/named/chinaitlab.com.zone

domain IN NS ns.domain

ns.domain    IN A     192.168.0.2

在父域chinaitlab.com的区文件中,指定子域domain的DNS服务器为ns.domain,并添加A记录。当查询domain.chinaitlab.com域的主机时,将会通过ns.domain.chinaitlab.com这台子域服务器来查询,但无法子域服务中查找父域中的主机,说明父域和子域之间是单向的。

当使用#host ns.domina.chinaitlab.com查询时,仍无法查询成功,虽然区文件中定义了ns.domain的A记录,但我们查询的是domain子域的主机,它将去192.168.0.2的子域服务器中查找主机记录,但现在子域服务器还没有配置。

上面的ns.domain也可改成:

domain IN NS domain

domain IN A     192.168.0.2

用父域的domain主机名指向domain子域,不管子域DNS主机名怎 么改,只要能指向子域的DNS服务器就行。

登录子域服务器192.168.0.2

按照以前的设置编译安装或rpm安装,然后

#named -u named       启动

在/etc/named.conf添加

zone “domain.chinaitlab.com” {

                        type master;

                        file “domain.chinaitlab.com.zone”;

};

编缉/var/named/domain.chinaitlab.com.zone

$TTL 1D

@ IN SOA    @ root (

                  2006091201

                  1H

                  15M

                  1W

                  1D )

   IN NS ns.

ns IN A     192.168.0.2

www    IN A     192.168.0.3

#rndc reload

#echo “nameserver 127.0.0.1” > /etc/resolv.conf

#host ns.domain.chinaitlab.com

#host http://www.domain.chinaitlab.com/

现在如果resolv.conf文件的nameserver是子域的192.168.0.2,那么只能解析到子域的主机,不能找到父域的主机。但是如果nameserver是主域的DNS192.168.0.22,可以查询到父域和子域中的主机,所以我们使用时,客户机只要将DNS指向主的DNS服务器,这里也就是那台192.168.0.22,这样就可以解析到整个域中的主机。

辅助域名服务器

辅助域名服务器的作用就是备份主域服务器的数据,当主服务器崩溃或暂时离线时,可代替主服务器来工作,一般机可以设置两个DNS服务器,一个主的,一个备份的。

首先要保证主服务器能正常工作,这样辅助服务器才能同步主服务器的数据。我们主要是在辅助域名服务器上做配置。

登录辅助服务器192.168.0.2

主配置文件/etc/named.conf添加

zone “chinaitlab.com” {

                  type   slave;

                  file “chinaitlab.com.zone”;

                  masters { 192.168.0.22; };

};

辅助域名配置很简单,只需在主配置文件增加一个区即可,也不用配置区文件,它由服务器同步自动产生。

slave表示辅助服务器

chinaitlab.com.zone不用创建会自动产生。

等同步完以后,我们可以看看它的内容,应该和主服务器的区文件是一致的。masters指定主域服务器,注意其中的格式,大括号前后的空格,分号。

#rndc reload

#tail /var/log/messages       发现同步时出现错误,这是由于/var/named目录权限不允许named用户写,而named服务是由named用户启动的,所以我们要修改一下/var/named目录权限

#ls -ld /var/named/

   -d表示目录信息

#chmod g+w /var/named

rndc reload

测试,在辅助服务器中,nameserver是自己。

#host http://www.chinaitlab.com/           成功解析

主从服务器的同步和更新主要是通过区文件中的SOA记录来实现 的。以前面为例,第一次同步,从主服务器下载数据库文件(区文件),每隔1小时更新管理信息,如发现编号发生变化,则同步数据库文件,同步时向主服务器发送请求失败,每隔15分钟重试,当重试了1周后仍无法成功,则过期不再送请求,缓存保存时间为1天。

以普通用户身份执行

首先修改named.conf,设置pid.file选项值

option {

   ….

   pid-file “/var/run/named/named.pid”;

};

#useradd -s /bin/false -d /dev/null named    (不允许登录,没有home目录)

#mkdir /var/run/named

#chown named.named /var/run/named

#chmod 700 /var/run/named

#named -u named

#echo “/usr/local/sbin/named -u named” >>/etc/rc.local

根据需要修改/var/named目录的属性。使用named用户运行,确保服务器的安全性,防止服务器受到攻击后得到root权限。

#ps aux | grep named

   aux   打印进程的用户身份

如果是rpm安装,则

#echo “/usr/sbin/named -u named” >>/etc/rc.local

如果是rpm安装,创建用户、目录、目录权限等已经自动完成了。如果是辅助服务器,同步时需要写/var/named,但named用户是无权写入的,所以应该修改/var/named目录权限,允许named组写。

常用配置选项

options {

   directory “/var/named”;             默认工作目录,数据库文件存放的位置

   forwarders { 192.168.2.1; };        当服务器无法解析请求时,转发给192.168.2.1来解析,再无法解析就请求根

   allow-transfer { 192.168.1.1; }; 允许哪台服务器同步数据库文件,一般来用控制辅助服务器,这里为全局设置

   allow-query { 192.168.0/24; };     允许某台主机或某个网段访问这台DNS服务器

};

zone “chinaitlab.com” {                  

   type master;

   file “chinaitlab.com.zone”;

   allow-transfer { 192.168.1.1; };

};

1.编缉/etc/named.conf

   设置options选项

   一个根区

   自己需要解析的区

   及相应的反向区

2.rndc-confgen产生rndc.conf

   并把最后几行追加到named.conf

3.根区数据库文件,可使用dig工具产生,其它区文件手工编辑。

Linux实践工程师学习笔记十六:DHCP服务器

rpm包在第4张光盘dhcp-3.0.3-26.i386.rpm

编译安装方法

#tar zxvf dhcp-latest.tar.gz

#cd dhcp-3.0.3

#./configure

#make

#make install

#vi /etc/dhcpd.conf

#touch /var/state/dhcp/dhcpd.leases     rpm安装不用touch,文件默认安装在/var/lib/dhcpd/dhcpd.leases

#dhcpd

主要配置选项

1.默认网关

2.IP地址

3.子网掩码

4.DNS服务器地址

5.租用时间

/etc/dhcpd.conf:

ddns-update-style none;             必须有的一句

subnet 192,168.0.0 netmask 255.255.255.0 {                    指定服务范围

   option     routers 192.168.0.22

   option     subnet-mask 255.255.255.0

   option     domain-name   “chinaitlab.com”;

   option     domain-name-servers     192.168.0.22;

   range    192.168.0.128 192.168.0.254;

   default-lease-time 21600; 6小时

   max-lease-time    43200; 12小时

   host mail {                                                    根据网卡地址分配一个固定的IP

                  hardware Ethernet 12:34:56:78:ab:cd;

                  fixed-address   192.168.0.5;

   }

}

服务器默认UDP67端口。

Linux客户机的配置

修改/etc/sysconfig/network-scripts/ifcfg-eth0:

DEVICE=eth0

ONBOOT=yes

BOOTPROTO=dhcp

或使用netconfig配置动态地址,然后运行#service network restart

设定1分钟后执行指定操作:

#at now+1minutes

at> service network restart

ctrl+D结束

调试服务器:

#tail /var/log/messages 查看日志信息

#more /var/lib/dhcpd/dhcpd.leases        查看IP分配情况

调试客户机:

Under unix:

#dhclient eth0        DHCP客户端工具,刷新网卡eh0,发送一个广播,重新请求一个IP

Under windows:

C:\>ipconfig /renew

应用案例

要求:

配置一台DHCP服务器,为100台主机分配地址,使用192.168.0.0/24网段,静态主机地址如下:

默认网关:192.168.0.254

DNS服务器:192.168.0.1

邮件服务器:192.168.0.2

DHCP服务器:192.168.0.254

解决方法:

option routers 192.168.0.254;

option domain-name-server 192.168.0.1;

range 192.168.0.3 192.168.0.102;

host ns {

   hardware Ethernet 12:24:34:34:as:de;

   fixed-address 192.168.0.1;

}

host mail {

   hardware Ethernet 12:34:56:78:ab:cd;

   fixed-address 192.168.0.2;

利用DNS实现负载均衡

现在网络的规模越来越大,网络中服务器的负载也变得越来越重。例如:在公司的网络中安装了一台WEB服务器,用于向企业内部网中的用户提供服务,假如网络中有几千甚至上万个用户需要同时访问这台WEB服务器,那么这台服务器的性能将变得极差。
如何来解决这个问题呢?在Windows 20## Advanced Server中提供有Load Banlance负载均衡服务可以解决这个问题,但该服务的设置较复杂。另外我们还可以通过DNS来实现负载均衡的功能。

Enable round robin 启用循环
为了减轻某台服务器的负载,我们可以在网络中安装多台服务器。例如,原来网络中只有一台X235 的WEB服务器,其主机名为,IP地址为192.168.1.100。为了减轻这台WEB服务器的负载,我们可以在网络中安装多台X235来提供WEB服务,并保证每台WEB服务器的内容都是一致的。如果可以实现让客户端分别访问不同的WEB服务器,这样就达到了分担负载的目的。那么如何让客户端分别向不同的WEB服务器访问呢?这就要用到DNS服务所提供的round robin功能。

我们可以按如下步骤操作:

在Windows200中打开管理工具中的DNS管理器。

在DNS管理其中,用鼠标右键点击该DNS服务器图标,在弹出的菜单中选择Property属性菜单。

在弹出的窗口中,选择Advanced选项卡。确保Enable round robin选项是处于被选中的状态。

点击OK关闭该窗口。

当设定好Round roubin后,接下来需要在DNS的区域(Zone)中添加主机记录:

打开管理工具中的DNS管理器。

用鼠标右键点击将要创建记录的区域,在弹出的菜单中选择New host新建主机记录。然后依照向导提示输入必要的信息。

1.     
当输入完所有主机的主机名与IP的对应关系后,你将看到类似于下图的窗口。

在这里我们注意到,添加的三条主机记录是同一个主机名对应着不同的IP。这些不同的IP即为网络中安装的多台WEB服务器的实际IP,他们对应着同一个主机名。
这样当客户端们在浏览器的地址栏中输入:去访问WEB服务器时,就会向DNS服务器发出名称解析请求。当DNS服务器收到第一个客户端的请求时,会把第一个IP 192.168.1.200响应给客户端,当第二个客户端要求解析时,服务器把第二个IP192.168.1.201响应给客户端,以此类推。通过这样的循环分配IP地址,就可以让不同的客户器访问不同的服务器,从而达到分担服务器的负载的功能。

Enable netmask ordering 启用子网优先
如果公司的网络是由多个子网构成的,为了使用户能够更有效地访问服务器中的资源,例如WEB服务器上的资源,我们可以在每个子网中都安装一台WEB服务器,这些WEB服务器保存的数据是完全一样的并且都使用同一个主机名,例如:。那么如何让用户在其浏览器的地址栏中输入主机名时,访问的是本子网的WEB服务器,而不是其他子网的web服务器呢?我们可以通过设置Enable netmask ordering 启用子网优先来实现这一功能。
想实现Enable netmask ordering 启用子网优先,我们可以按以下步骤操作:

打开管理工具中的DNS管理器。

在DNS管理其中,用鼠标右键点击该DNS服务器图标,在弹出的菜单中选择Properties属性菜单。

在弹出的窗口中,选择Advanced选项卡。确保Enable subnet ordering选项是处于被选中的状态。

点击OK关闭该窗口。

当设定好subnet ordering后,接下来需要在区域中添加主机记录:

打开管理工具中的DNS管理器。

用鼠标右键单击将要创建记录的区域,在弹出的菜单中选择New host新建主机记录。然后依照向导提示输入必要的信息。
例如:

1.     
当输入完所有主机的主机名与IP的对应关系后,你将看到类似于下图的窗口。

这样我们在DNS服务器中添加了三条主机记录:同一个主机名对应着不同的IP。这些不同的IP即为不同子网中安装的WEB服务器的实际IP地址,他们对应着同一个主机名。
这样当用户在其浏览器的地址栏中输入:去访问该WEB服务器时,该客户端就会向DNS服务器发出名称解析请求。作为DNS服务器收到客户端的查询请求后,将比较客户端的IP地址,与它所请求的主机名所对应的IP地址中的哪一个在同一子网中,然后将这个IP (与客户端在同一子网中的IP地址) 响应给客户端。这样就可以实现客户端访问的总是本子网中的服务器, 把服务器的访问负载分摊到了各个子网的服务器中,并且减少了跨子网的网络流量。

Linux之邮件服务器配置指南

目前网络上常见的邮件服务协议主要为SMTP(发送协议)和POP3(接收协议)。

一、启动SMTP:
在安装并启动了sendmail服务后,SMTP应已打开。若发信时信件发不出去,则可能是DNS的问题,请在linux机器上执行如下操作:
(1) cd /var/named
mv named.ca named.ca.bak
touch named.ca
killall -HUP named

(2) 在X窗口中执行netconf->Server tasks->Domain Name Server(DNS)->config->domains->add一个新的(或者直接点击已存在的Domain以便修改)->Name servers(NS)填写如:gblinux.126.com,Mail servers(MX)第一行写gblinux.126.com,第二行就写126.com(我的虚拟邮件域)。Default IPs可填可不填。退出并激活之。

现在DNS服务应已正确启动。
二、启动POP3:
(1)修改/etc/inetd.conf,将其中关于pop3的一行反注销并修改为:
pop-3 stream tcp nowait root /usr/sbin/tcpd /usr/lib/linuxconf/lib/vpop3d /usr/sbin/ipop3d
(2)配置“虚拟E-mail域名”(virtual email domain):运行linuxconf或直接运行mailconf,选择virtual email domain,再add一个域名(如上文所提及的126.com)就可以了。
(3)添加E-mail用户:运行userconf再依次点击Special accounts------->virtual POP accounts(mail only)----->刚才在第二步add的域名,好了,现在可以点add按钮来添加新的用户了。

附:一些小技巧:
(1)使RedHat6.0直接进入KDE桌面的方法:在主目录下建一个内容为kde的.xinitrc文件。
(2)在RedHat6.0中为samba建立的用户请选择xfs组。
(3)修改启动时的项目:运行ntsysv即可。

Linux实践工程师学习笔记十一:PAM认证模块

Pluggable Authentication Modules for Linux 可插拨认证模块

当用户访问服务器,服务程序将请求发送到PAM模块,PAM模块根据服务名称在/etc/pam.d目录下选择一个对应的服务文件,最后根据服务文件的内容选择具体的PAM模块进行处理。

通过ldd查看服务程序在编译时是否使用了libpam.so,决定服务程序是否支持PAM认证。

具体的pam文件放在/lib/security目录下,服务文件放在/etc/pam.d目录下

PAM服务文件格式

eg:

auth        required pam_security.so

auth        required pam_stack.so service=system-auth

service表示调用子服务文件

Module-type:

   auth              检查用户和密码,分配权限

   account           检查账号是否过期,是否有权登录

   session           从用户登录成功到退出的会话控制

   password       控制用户改密码的过程

control-flag:

   required       要求矣须通过,否则结束退出

   requisite       如果不通过还可继续向下认证,后面有一通过即可。

   sufficient        通过则不需要向下认证

   optional       可选项

常用PAM服务文件

login    -------/etc/pam.d/login

ipop3d    -------/etc/pam.d/pop

vsftpd    -------/etc/pam.d/ftp(编译安装)或/etc/pam.d/vsftpd(rpm安装)

sshd        -------/etc/pam.d/sshd

su       -------/etc/pam.d/su

imap        -------/etc/pam.d/imap

/lib/security目录下,各个pam模块的作用,可参考/usr/share/doc/pam-0.99.3.0下的帮助文件。

相同类型Module-type组成一个堆栈。

常用PAM模块

pam_access.so          控制访问者地址与账号名称

pam_listfile.so       控制访问者的账号名称或登录位置

pam_limits.so          控制为用户分配的资源

pam_rootok.so          对管理员(uid=0)无条件允许通过

pam_userdb.so          设定独立用户账号数据库认证

pam_access.so模块的使用―――控制访问sshd服务的主机和用户

1.修改需使用这个模块的服务文件,如sshd: /etc/pam.d/sshd添加

account required pam_access.so

2.修改模块的配置文件

/etc/security/access.conf

- : redhat : ALL EXCEPT 192.168.0.          (格式)

3.测试

ssh  redhat@192.168.0.22

ssh  redhat@127.0.0.1

pam_access.so根据主机、IP、用户、拒绝或允许访问。

pam_listfile.so的应用 (比pam_access.so更加详细控制)

1.首先查看它的帮助文件,看它的具体格式,参数如何

#less /usr/share/doc/pam-0.99.3.0/txts/README.pam_listfile

item        user,tty,group       说明列表文件中的内容

sense    allow,deny          拒绝或允许文件中的用户

file                            指定一个文件,内容根据item项来添加

onerr    succeed,fail           当模块本身产生错误时,返回的值,如无法打开file指定的文件,一般设为succeed

2.将模块应用到sshd服务

将上面添加的pam_access.so清掉,然后在/etc/pam.d/sshd中添加(第一行)

auth   required pam_listfile.so item=user sense=deny     file=/etc/denyuser onerr=succeed

注意添加的位置顺序,否则看不到效果

3.创建编缉列表文件

#echo “redhat” >/etc/denyuser

4.测试

#ssh -l redhat 192.168.0.22 失败

#ssh -l chinaitlab 192.168.0.22 成功

#w 显示已登录的用户及最近的一次操作

pam_limits.so的应用

1.查看帮助文件,确认它的配置文件位置,参数模式

#less /usr/share/doc/pam-0.99.3.0/txt/README.pam_limits

<domain>    <type> <item> <value>

<domain>       用户名或组名

<type>           soft软限制

                hard硬限制(不能达到的)

<item>           限制的内容,fsize文件大小,nproc最大进程数,maxlogins用户登录次数

2.将模块应用到sshd服务,修改服务文件

#vi /etc/pam.d/sshd 添加:

session required pam_limits.so

session       控制用户进程的登录次数,文件大小,通过控制用户的会话进程来限制用户使用的资源

3.编缉pam_limits.so的配置文件/etc/security/limits.conf

redhat   hard     maxlogins 2

限制redhat登录到sshd服务的次数,不能达到2。

4.测试

#ssh -l redhat 192.168.0.22 第1个

#ssh -l redhat 192.168.0.22 第2个

表示同时最多可以有1个redhat用户登录

pam_rootok.so的应用

#chfn          改变用户的finger信息

普通用户使用这个命令修改信息时,需要输入密码才能使用,而root用户则不需要。

分析:

#more /etc/pam.d/chfn

第一行为auth sufficient pam_rootok.so

因为chfn的pam服务文件的第一行应用了pam_rootok.so模块,所以当root用户使用chfn时不需验证,不需要再往下,直接通过。

pam_userdb.so模块需要一个db数据库储存用户信息,具体如何使用可参考前面的vsftpd虚拟用户。

在使用PAM模块时,注意参考README.pam帮助。

Linux实践工程师学习笔记十三:常用系统安全分析工具

扫描器nmap(FC5默认没有安装),rpm包在第5张盘

#nmap 192.168.0.22    默认扫描TCP端口

#nmap -sU -sR -sS 192.168.0.22

   -sU   UDP扫描

   -sR   RPC扫描

   -sS   TCP SYN扫描

可扫描单个主机或IP段192.168.0.0/24

#grep syslog /etc/services     搜索文件中含有syslog字符串的行,搜索文件中的字符串。

嗅探器tcpdump

#tcpdump -i eth0 -X dst 192.168.0.22

          -i eth0 指定监听的接口

          -X       以十六进制显示包头信息

          dst        指定目标主机地址或端口

#tcpdump -I eth0 -X dst 192.168.0.22 and dst port 21

监听数据包目标为192.168.0.22并且端口为21的数据

日志服务器syslog

配置文件/etc/syslog.conf

左边指定消息类型    右边指定消息记录位置

*.info;mail.none;authpriv.none;cron.none     /var/log/messages

任何程序的信息,只要是info级别以上都记录在/var/log/messages,但不记录mail,authpriv,cron的消息

mail.*                                                    /var/log/maillog

邮件的所有消息都记录在/var/log/maillog文件中

如修改了配置文件需从新启动服务

#service syslog restart

#vi /etc/syslog.conf

*.*                 @192.168.0.22

将所有程序的所有消息发送给192.168.0.22主机处理,但同时192.168.0.22要开启允许远程消息

#vi /etc/sysconfig/syslog 修改

SYSLOGD_OPTIONS=”-m 0 -r -x”

#service syslog restart

日志服务端口默认514/udp

#netstat -unl | grep :514       显示日志服务是否运行

      -u UDP协议

      -t TCP协议

      -n 用数值表示主机地址、端口号

      -l 仅显示正在监听的进程

      -p 显示进程名及PID

日志系统

1.编缉/etc/syslog.conf

2.重启日志服务器

#service syslog restart

3.检查日志/var/log/*

安全信息放在/var/log/secure里

邮件信息放在/var/log/maillog

计划任务信息/var/log/cron

大部分信息放在/var/log/messages

#tail -f messages                 监视系统信息的变化

推荐日志分析软件SWATCH

Linux实践工程师学习笔记十四:网络安全

防火墙的作用:过虑两个网络之间的数据包
Linux内核的Netfilter
<!--[if !vml]--><!--[endif]-->
进出数据包,以及发送到本机的数据包都要经过内核的处理
INPUT链用来过滤进入本机的数据包
OUTPUT链用来过滤从本机发送出去的数据包
FORWARD链用来过滤从本机路由出去的数据包
一个数据包的头部包括源地址、源端口、目的地址、目的端口、协议类型
包过滤正是根据这些特征来过滤数据包
Linux 下通过在三个链中设置规则来过滤
包的处理方式
#iptables -A INPUT -p icmp -j DROP 将进入本机,协议类型为icmp的数据包丢弃。
   -A 添加规则
   INPUT 对INPUT链进行操作
   -p 协议类型
   -j     指定动作,可以是ACCEPT(接收),LOG(日志),REJECT(弹回)
#iptables -L -n        显示三条链的过滤规则
   -L 显示所有链的所有规则
   -n 以数字形式显示
#iptables -F     清空所有链的所有规则
每个包进入本机时都被INPUT链检查
出去时经过OUTPUT链检查
转发时经过FORWARD检查
TCP/IP是双向通信的,所以添加规则时必须注意使INPUT链和OUTPUT链的规则对应。

   -D rulenum 删除第几条规则
   -I     rulenum 在第几条前插入规则
   -P 修改链的默认策略,如默认状态ACCEPT,默认情况下数据包的处理方式
   -s 源地址 -m     匹配扩展条件
   -d 目的地址    -t     维护的表,默认为filter,另外还有一个nat表
   --line-numbers              规则中显示编号
#iptables -L -n --line-numbers    这样方便删除指定行编号的规则或在指定编号前插入

拒绝所有连接到本机21端口的所有连接
#iptables -A INPUT -P tcp -d 192.168.0.22 --dport 22 -j DROP
   --dport 目的端口
   --sport 源端口

在实际使用过程中服务器还不够严密,还存在被利用的弱点。如22端口,为防止没有请求过的包,在本机主动发送出去,需要检查包的状态。看包是否是人家请求过我,而我回应别人的。Linux的防火墙支持状态匹配检查。
#iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
   -m 匹配状态,上面表示跟本机连接过的包才能从22端口出去
如果正在使用ssh远程管理服务器,不要将第一条的22端口规则删掉,等添加完上面这条规则,才能把存在弱点的第一条删除,否则远程管理会立刻断掉。

80端口也同样设置
#iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
防止服务器在80端口主动发送请求,防止病毒利用。添加完后,删除OUTPUT中以前添加的那条80端口规则。

假设自己是ssh客户机,访问别人的ssh服务器,先经过OUTPUT链出去
#iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
当包回就,从对方22端口,如果对方有病毒,可能会使用22端口发送请求,所以只接受已建立连接的数据包。
#iptables -A INPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
#service iptables save     保存劳动成果
现在防火墙算配好了,不仅非常严密,还非常有效,有效防止别人攻击你的服务器的各种服务,可防止主动型的病毒或木马攻击。

LOG目标
过滤包的检查机制,可以指定某种要求的包写入日志中。
#iptables -A INPUT -p tcp --dport 22 -j LOG --log-level 5 --log-prefix “IPTABLES:”
   -j LOG 记录日志
   --log-level 5 写入日志时需指定级别,与日志服务器配合使用
   --log-prefix “IPTABLES:”    指定写入日志时,记录的前缀字符,主要方便用户分析日志。
添加LOG目标规则时,保证规则前同样的包没有被丢弃或接受,即要注意添加规则的次序。
编缉日志配置文件/etc/syslog.conf 添加:
kern.=notice       /var/log/firewall.log
(消息来源内核kern,级别notice),将内核这个级别消息,记录到firewall.log文件中,等号表示刚好等于这个级别的消息。为什么是notice?因为我们曾经用man syslog知道消息的默认级别notice为5,与LOG目标一致。
注意:日志级别5要跟syslog.conf中的级别一致,级别可通过syslog的manual帮助获得。
#service syslog restart
#tail /var/log/firewall.log
注意将前面在/etc/syslog.conf文件添加过的
*.*       @192.168.0.22
那行删除,还要将/etc/sysconfig/syslog文件中,那行还原为:
SYSLOGD_OPTIONS=”-m 0”
不管哪个服务,修改过配置文件,要立刻生效,必须重启服务。
这样会将进入本机22端口的包记录在firewall.log文件,当使用ssh持续登录使用时,由于不停记录包信息,firewall.log文件会持续增大!

实际配置防火墙时,首先将所有门都关闭,如将三条链的默认策略都改为DROP,再根据服务器需要一个端口一个端口地打开。首先需要分析这台服务器是干什么用的,假设只是一台提供http服务的Web服务器。
首先把服务器所有端口关闭,为了方便远程管理开一个22的端口,端口可以在/etc/services文件中查看。添加规则时分析一下数据包的格式,再确定规则参数。
#iptables -A INPUT -p tcp -d 192.168.0.22 --dport 22 -j ACCEPT
#iptables -A OUTPUT -p tcp -s 192.168.0.22 --sport 22 -j ACCEPT
注意通信的双向性,在INPUT添加一条规则,一般要在OUTPUT添加一条与之对应,所谓有出必有入。
#iptables -P INPUT DROP
#iptables -P OUTPUT DROP
#iptables -p FORWARD DROP
上面首先打开22端口,防止正在使用的远程管理断掉,再改变三条链的默认策略。
#iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
打开一个80端口,本机地址可省略
#service iptables save     保存劳动成果(保存规则)
将刚才添加的规则保存到/etc/sysconfig/iptables文件
或使用#iptables-save > /etc/sysconfig/iptables
系统启动时会加载这个文件中的规则。
现在服务器挡住所有服务,只开了两个端口80,22,对一台网络服务器来说,绝不能缺少DNS服务,任何联网的主机都需要做DNS请求,目前这台服务器还无法发送DNS请求。增加一条DNS通道,首先作为一台客户机出现:
#iptables -A OUTPUT -p udp --dpott 53 -j ACCEPT 首先经过OUTPUT链
#iptables -A INPUT -p udp --sport 53 -j ACCEPT    请求后得到回复数据雹,允许进入
测试#host fedora.cyrich.com
如出现无法解析,或很慢,则#more /etc/resolv.conf查看域名解析配置文件,看是否本机为DNS服务器,如果是还需添加一条规则,在规则时,应该分析这个数据包如何进出哪条链,以及这人数据包的格式,如上面#host fedora.cyrich.com因为本身作为DNS服务器,所以会发送一个包到自己,
192.168.0.22:*――>102.168.0.22:53 (允许)
但当时入INPUT链时,没有一条跟它匹配,所以会拒绝。所以如果同时作为DNS服务器和客户机,还需添加下面规则:
#iptables -A INPUT -p udp --dport 53 -j ACCEPT
#iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
当同时作为某种服务的服务端和客户端时,需在规则中添加两条规则,即源端口和目标端口。
当前的规则设置忽略了本机的内部服务,在本机上有很多端口守护在127.0.0.1上,当本机的客户端访问回环设备时会拒绝。
127.0.0.1上的服务如不打开,会影响本机内部服务的正常运行,打开了也不会造成服务器什么危害,所以还是最好打开:
#iptables -A INPUT -s 127.0.0.1 -j ACCEPT
#iptables -A INPUT -d 127.0.0.1 -j ACCEPT
#service iptables save     (保存劳动成果)

经过FORWARD链的数据包不是发送给本机,而是发送给别人的,当作为路由器使用时才需配置FORWARD链。现配置一台路由器,如允许局域网用户浏览网页配置方法与INPUT.OUTPUT一样。
#iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT     允许局域网发送数据包
#iptables -A FORWARD -d 10.0.0.0/24 -j ACCEPT     允许局域网接收数据包
这样相当于把局域网和互联网打通了,任何包都可通过,在实际使用中可以加上端口,做些限制,过滤某些数据包,也可以使用LOG目标加进日志。其实光打开FORWARD链还不行,还需要打开内核的转发文件。
#echo 1 >/proc/sys/net/ipv4/ip_forward              (默认为0)
0表示关闭转发,1为启用,要永久启用,可修改配置文件/etc/sysctl.conf:
net.ipv4.ip_forward =1
如需访问互联网,这样的配置还不行,因为私有地址是无法直接访问互联网的,这里我们做NAT网络地址转换,这时网需两个地址,一个局域网的,一个互联网的,当收到访问互联网的包时,将源地址替换为互联网地址。
#iptables -t nat -L -n    查看nat表内容

Netfilter的NAT表:
三条链用来做包过滤
用来翻译地址的也有三条链,常用的有PREROUTING,POSTROUTING


SNAT(源地址翻译)

数据包进入内核前,首先进入PREROUTING这个点,然后进入内核进行处理,就是ROUTING那个点,如果数据包不是发送给本机,而内核启用了转发功能,则内核将把数据包从FORWARD,再到POSTROUTING。如果FORWARD允许数据包通过,这个包可以在POSTROUTING这个点上做源地址替换,而且只能在这个点上做,这是内核的一种机制,所以数据包的源地址是在经过POSTROUTING这个点后改变的。

DNAT(目标地址翻译)
数据包进入时,首先进入PREROUTING。然后内核ROUTING会根据包的目标地址决定是从INPUT链走还是FORWARD链走。所以数据包的目标地址非常重要。在PREROUTING上可以做目标地址替换。

SNAT应用


网关有两块网卡分别连接两台主机或两个网络。
#iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source 192.168.0.254
将源地址为10.0.0.0/24的包的源地址替换为192.168.0.254,如果这是一台ADSL拨号网关,可以将整个局域网带进互联网
#iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE
有人会想数据包怎么回来?其实将数据包翻译成192.168.0.254源地址时,192.168.0.1回应一个数据包到服务器会被服务器认出来,那服务器会自动将翻译地址还原,然后退还给10.0.0.241。所以做网关时,只要加SNAT,然后配合前面的过滤规则就可配一个安全且强大的防火墙,同时具有路由器的功能。


DNAT应用



DNAT应用一般用来做DMZ,保护局域网内部
如192.168.0.1作为一台Web服务器,主机10.0.0.241访问10.0.0.254网关,网关将请求发送到192.168.0.1,这样就起到保护Web服务器的作用
#iptables -t nat -A PREROUTING -d 10.0.0.254 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1
将访问网关80端口的数据包目标地址翻译或192.168.0.1,这样本来发送给本机的数据包就会从FORWARD链转发出去。
Web服务器在内部,它收到请求后回应数据包给网关,然后返回到10.0.0.241。这样就把内部主机保护起来,外面的人只能看见那台网关服务器,所以NAT应用非常广,而且非常强大,更多帮助和介绍可参考
为软件打补丁,首先用gpg导入公钥文件,再校验patch文件的正确性。
#bzcat 9.3.0-patch | patch -p0
一般需查文件里面的目录,然后再将软件目录改名。

更多相关推荐:
教师学习笔记

时间:地点:内容:浅谈历史教学中学生自主学习能力的培养新课改背景下,在历史教学中,如何发挥教师的主导作用,启发诱导学生的学习主动性和积极性,把蕴藏在学生身上的巨大学习潜能开发出来,是不断提高历史教学质量的关键所…

教师学习笔记心得体会范文

师而言,要学的东西实在太多,而我们知道的东西又太少了。有人说,教给学生一杯水,教师应该有一桶水。这话固然有道理,但一桶水如不添加,也有用尽的时候。“问渠哪得清如苏联当代著名教育家苏霍姆林斯基是一位具有30多年教…

教师业务学习笔记范文

教师业务学习笔记范文文字大小大中小打印收藏到QQ百度雅虎在线字典1什么是德育专家一般来说好的老师就是那些能摆平班级纪律控制住差生并能促使班级学业成绩提高的教师但那些真正伟大的知识分子一定是由坚硬的骨头和极大的勇...

教师读书笔记范文

教师读书笔记范文教师读书笔记gt范文一读了苏霍姆林斯基的着作给教师的建议我受到了深深感触的确这些建议使作为教师的我们有了更明确的方向给了我们极大的帮助它就象一盏指路明灯一样尽管今天的教育形势比之苏霍姆林斯基所写...

教师读书笔记范文

教师读书笔记范文寒假中我读了教师专业化的理论和实践这本书这本书是国内第一本系统论述教师专业化的论著它对当前我国教师的改革将产生重大而深远的影响作者不仅仅从教师专业化事实的角度来理解教师群体的专业化问题而且还高屋...

20xx教师读书笔记范文

20xx教师读书笔记范文第1篇教师读书笔记范文自从走上岗位后深感责任重大不仅要教好书还要在各方面以身作则率先垂范在开展师德师风的学习活动中我更深深的感到一个具有良好师德师风的教师会对受教育者产生多么大的春雨润无...

教师读书笔记16篇

一读教师人文读本有感我们是教师都是些普通人但我们从事着神圣的事业我们每天面对的是人我们的学生他们天真可爱充满生命的活力和幻想他们对我们无限的信任和敬慕我们付出了爱得到的是更多的爱读过教师人文读本这本书感受最深的...

小学教师读书笔记摘抄

小学教师读书笔记摘抄当然感情并不能代替教育但是我们的教育必须充满感情这就是要有一颗爱学生的心而教师对学生真挚的爱是我们感染学生的情感魅力师生在人格上是平等的教师不应该自视比学生高人一等因此我们对学生的爱不应是居...

小学教师读书笔记摘抄

小学教师读书笔记摘抄感情并不能代替教育但是我们的教育必须充满感情这就是要有一颗爱学生的心而教师对学生真挚的爱是我们感染学生的情感魅力师生在人格上是平等的教师不应该自视比学生高人一等因此我们对学生的爱不应是居高临...

最新教师读书笔记30篇_2

教师读书笔记30篇一读教师人文读本有感我们是教师都是些普通人但我们从事着神圣的事业我们每天面对的是人我们的学生他们天真可爱充满生命的活力和幻想他们对我们无限的信任和敬慕我们付出了爱得到的是更多的爱读过教师人文读...

精选学习最美教师心得体会范文

精选学习最美教师心得体会范文利用暑假我认真学习了最美乡村教师的感人事迹看着那一个个平凡的名字殊不知名字的背后却书写着一个又一个感人至深的真实故事这些乡村教师在不同的环境中却发扬着最伟大的民族精神无私奉献他们的精...

教师党员学习心得范文两篇

教师党员学习心得范文两篇教师党员学习心得范文两篇篇一通过学习我对中国共 产 党有了比较全面系统地认识并在内心树立了共产主义信念同时我也发现自己身上尚有许多缺点不足之外距一个优秀的共 产 党员还有一定的差距但我相信通过自...

教师学习笔记(28篇)