hello world!
分类: LINUX
2013-02-06 14:35:40
第四单元 标准I/O和管道
Linux给程序提供三种I/O频道
标准输入(STDIN)- 默认接受来自键盘的输入 /proc/self/fd/0
标准输出(STDOUT)- 默认输出到终端窗口 /proc/self/fd/1
标准错误(STDERR)- 默认输出到终端窗口 /proc/self/fd/2
支持的操作符号包括:
> 把STDOUT重导向到文件
2> 把STDERR重导向到文件
&> 把所有输出重导向到文件
可以使用操作符号来保存输出和错误
$find /etc -name passwd > find.out
$find /etc -name passwd 2> /dev/null
$find /etc -name passwd > find.out 2> find.err
#ls -C | tr ‘a-z’ ‘A-Z‘ 小写转为大写
某些操作符号使STDOUT和STDERR都受影响
&>:重导向所有输出:
$?find /etc -name passwd &> find.all
2>&1:把STDERR重导向给STDOUT 同时写入一个文件
$?find /etc -name passwd > find.two 2>&1
find /etc –name passwd > right 2> error
终止词 <<,可以终止一次输入而不必输入ctrl+d来结束,直到输入eof,则停止接收输入。
$mail
-s "Please Call" jane@example.com <
>Hi Jane,
>Please give me a call when you get in. We may need
>to do some maintenance on server1.
>Details when you're on-site,
>Boris
>END
head:显示文件的前10行,使用 -n 来改变要显示的行数
tail:显示文件的最后10行,使用 -n 来改变要显示的行数
按列抽取文本cut
显示文件或STDIN数据的指定列
$cut -d: -f1 /etc/passwd
$grep root /etc/passwd | cut -d: -f7
第六单元 管理简单分区和文件系统
swapon -s 查看现有的swap信息
swapon -a /dev/sdb7 -p -2 激活分区同时设置其丝袜优先级
创建swap分区:
1、用分区创建
使用fdisk分出一个1000M的swap类型的分区
#mkswap /dev/sdb7
2、用文件创建
#dd if=/dev/zero of=./swapfs-test bs=1M count=1000
#mkswap ./swapfs-test
#vim /etc/fstab
/root/test/swapfs-test swap swap defaults 0 0
#swapon -a
#swapon -s
3、用LVM创建
#partx -a /dev/sdb 将分区信息传递至kernel
#pvcreate /dev/sdb2
#vgcreate test /dev/sdb2
#lvcreate -n test01 -L +1G test
#mkswap /dev/test/test01
#swapon -s
#swapon -a 激活/etc/fstab中所有swap分区
#swapon -s
创建加密文件系统 cryptsetup
单元8 访问网络文件共享服务
一、NFS
service
1、#vim /etc/exports
/var/pub/ 192.168.0.*(ro)
2、#service nfs restart
3、#exportfs ;验证是否共享成功
client
1、确认远程NFS服务器的共享目录
#showmount -e 192.168.0.254
2、#mount -t nfs 192.168.0.254:/var/pub /nfs
二、autofs 自动挂载网络存储
配置autofs,实现ldapuser40登录成功后,自动挂载家目录/rhome/ldapuser40。家目录在172.24.50.10上被nfs共享为:/rhome/ldapuser40。并且要求,其它的ldap用户登录成功后也能正常使用宿主目录
# chkconfig autofs on(一般默认是开)
# vim /etc/auto.master
/rhome /etc/auto.ldap
(左边/rhome是自动挂载点,右边/etc/auto.ldap是该挂载点的配置文件,需要手工创建,见下一行)
# cp /etc/auto.misc /etc/auto.ldap(创建挂载选项,必须以auto.开头,这里借用了auto.misc)
# vim auto.ladp
ldapuser40 -rw,soft 172.24.50.10:/rhome/ldapuser40
* -rw,soft 172.16.40.10:/rhome/&
(注意目录的写法:IP之后加:/,而不是://;*表示域内任意用户;&表示用户名同名目录;soft指连接中断后[重复]告警,默认是hard即[持续]告警)
# service autofs stop
# service autofs start (autofs的一个bug,不能直接service autofs restart)
# showmount –e 172.24.50.10(验证,查看共享目录)
autofs注意:
1、ldapuser40不需要在客户端创建 /rhome/ldapuser40, automount会自动在/rhome下创建ldapuser40;
2、#cd /rhome ,看不到任何内容,需要 #cd ldapuser40 ,才能看到mount的内容;
3、client端的挂载点 /rhome/ldapuser40,最好与server端nfs共享的目录名/rhome/ldapuser40一致。
三、samba
查看samba配置:#testparm -v
server
1、#vim /etc/samba/smb.conf
security=share ;不要密码
[public]
comment=Public staff
path=/home
public=yes
writeable=yes
host allow=10.3.5.
2、如果需要密码访问
#vim /etc/samba/smb.conf security=user;
添加smb用户,必须要有同名的本地用户
#smbpasswd -a username
-d ;删除
3、设置linux安全上下文
#chcon -t samba_share_t -R /home
4、/etc/init.d/smb restart
client
1、#smbclient -L 192.168.0.10
2、#mount //192.168.0.10/public /mnt
如果是security=user,
#smbclient -L 192.168.0.10 -U harry
#mount -t cifs -o username=harry //192.168.0.10/home /mnt
有效用户
#vim /etc/samba/smb.conf
valid users=username1 username2
单元9 管理用户账户
#id username 显示用户的id
#usermod -g group1 user
#usermod -G group2 user "-g"主要组,"-G"次要组
改变文件拥有者
#chown user1 file 改变文件所有者
#chgrp group1 file 改变文件所属组
#chown user1:group1 file
单元10 使用LDAP管理网络用户
单元11 文件访问控制
一、访问控制列表(ACL)
为多用户或者组的文件和目录赋予访问权限rwx
getfacl file |directory
setfacl -m u:gandolf:rwx file|directory “-m”modify
setfacl -m g:nazgul:rw file| directory
setfacl -m d:u:frodo:rw directory
等价 setfacl -m -d u:frodo:rw directory “-d”default,文件夹继承
setfacl -x u:samwise file |directory “-x”remove
setfacl -b file |directory “-b”remove all
setfacl -m m::rw file |directory “m”mask,表示最大权
单元12 管理SELINUX
#getenforce
#setenforce 0 |1
#/etc/sysconfig/selinux
单元16 管理进程
#uptime
调度优先性 nice value
Crontab计划任务
#crontab -u user (只有root能建立,而且是帮其他用户建立)
#croontab -e
#crontab -l
#crontab –r
分钟(0~59)、小时(0~23)、日期、月份、星期
当周是0或者7时都表示的是星期天
如果要执行的工作是3点和6点:0 3,6 * * *
如果是在一段时间内,比如8到12点,每小时的20分都执行
20 8-12 * * *
每隔N个单位时间,如每五分钟一次:*/5 * * * *
#modprobe -l ;显示系统中所有模块
vi中, :%s/word1/word2/gc “%”表示全部
/etc/cron* 表示各类计划任务,每天执行的,忽略不执行的
#vim /etc/hosts 配置域名,比如将192.168.0.12设置为 test.com
#df -h 以1024为单位
#df -H 以1000位单位
单元7 高级网络配置
一、配置路由
#route add -net 192.168.2.0 netmask 255.255.255.0 gw 172.24.16.1
#route add -net 192.168.2.0/24 gw 172.24.16.1
意思是:多条路由时,所有需要发往192.168.2.0/24地址段的IP数据包,全部由172.24.16.1路径转发。
二、AIDE(Adevanced Intrusion Detection Environment)
高级入侵检测环境)是一个入侵检测工具,主要用途是检查文件的完整性。
Logrotate主要是针对日志文件来进行轮替的操作。
#yum install aide
#vi /etc/aide.conf (指定对哪些文件进行检测)
#aide --init (初始化一下并生成一个默认的AIDE的库,对生成的数据库做备份,存放到安全的地方。)
#aide --check (开始检测)
三、rsyslog接受远程日志:
服务器端( 192.168.0.12 ):
设置日志接受的端口和设置日志通过TDP还是UPD还收取
vi /etc/rsyslog.conf
$ModLoad imudp.so
$UDPServerRun 514
service rsyslog restart
客户端:
vi /etc/rsyslog.conf
*.info @instructor.example.com 或者
*.info @192.168.0.12
四、iscsi共享存储:
iSCSI = internet Small Computer System Interface
目标端:
1.用fdisk分出sdb1一个分区(10G)准备用作iscsi共享存储。
2.安装scsi-target-utils软件提供iscsi服务
[root@rhel6 ~]# yum install scsi-target-utils
3.修改/etc/tgt/targets.conf,添加:
backing-store /dev/sdb1
4.重启tgtd服务,并将其设为开机启动:
[root@rhel6 ~]# /etc/init.d/tgtd restart
[root@rhel6 ~]# chkconfig tgtd on
5.打开防火墙端口3260或者关闭防火墙。
客户端:
1.发现可用的目标端
#iscsiadm -m discovery -t sendtargets -p 172.16.36.1
172.16.36.71:3260,1 iqn.2007-01.com.example:storage.disk1
2.登录目标端:
iscsiadm -m node -T iqn.2007-01.com.example:storage.disk1 -p 172.16.36.1 -l
命令在#man iscsiadm 中的examples有。
2个网络接口bonding
要求:2个网卡完全相同。
一、配置设备文件
修改/etc/sysconfig/network-scripts/ifcfg-ethx,如果没有,就创建。
$vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none 静态IP还是动态IP,静态填static,动态填DHCP
#HWADDR=00:0c:29:f4:a3:5f
NM_CONTROLLED=no
ONBOOT=yes
#IPADDR=192.168.0.10
NETMASK=255.255.255.0
MASTER=bond0
SLAVE=yes
TYPE=Ethernet
IPV6INIT=no
USERCTL=no 是否允许非root用户控制设备
$vim /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
BOOTPROTO=none
#HWADDR=00:0c:29:f4:a3:5f
NM_CONTROLLED=no
ONBOOT=yes
#IPADDR=192.168.0.10
NETMASK=255.255.255.0
MASTER=bond0
SLAVE=yes
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
$vim /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
#HWADDR=00:0c:29:f4:a3:5f
NM_CONTROLLED=no
ONBOOT=yes
IPADDR=192.168.0.12
NETMASK=255.255.255.0
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
二、
# vim /etc/modprobe.d/bonding.conf
alias bond0 bonding
options bond0 miimon=100 mode=0
三、重启
[root@desktop3 modprobe.d]# ifconfig
bond0 Link encap:Ethernet HWaddr 00:0C:29:F4:A3:69
inet addr:192.168.0.12 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fef4:a369/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:7126 errors:0 dropped:0 overruns:0 frame:0
TX packets:2948 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1131626 (1.0 MiB) TX bytes:295281 (288.3 KiB)
eth0 Link encap:Ethernet HWaddr 00:0C:29:F4:A3:5F
inet addr:192.168.0.10 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fef4:a35f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4500 errors:0 dropped:0 overruns:0 frame:0
TX packets:119 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:885357 (864.6 KiB) TX bytes:17714 (17.2 KiB)
eth1 Link encap:Ethernet HWaddr 00:0C:29:F4:A3:69
inet addr:192.168.0.12 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:7126 errors:0 dropped:0 overruns:0 frame:0
TX packets:2948 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1131626 (1.0 MiB) TX bytes:295281 (288.3 KiB)
eth2 Link encap:Ethernet HWaddr 00:0C:29:F4:A3:69
UP BROADCAST SLAVE MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
可见,eth1和eth2、bond0的MAC都相同。
#cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth2
MII Status: down
Link Failure Count: 0
Permanent HW addr: 00:0c:29:f4:a3:73
Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:0c:29:f4:a3:69
mode=1,eth1与eth2只要有一个正常工作,网络就正常;
mode=0,eth1与eth2只要有一个不正常工作,网络就不通。
SELinux(Security-Enhanced Linux) 是美国国家安全局(NAS)对于强制访问控制的实现,是 Linux上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。
最简单的办法,关闭selinux
方法1:修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。
方法2:用命令setenforce 0,无需重启。(setenforce的格式:setenforce [ Enforcing | Permissive | 1 | 0 ])
方法3:在lilo或者grub的启动参数中增加:selinux=0,也可以关闭selinux。
使用getenforce查看当前selinux是否正在运行。
ftp命令:
get/mget 下载
put 上传
user username 更改用户
/etc/vsftpd/ftpusers 该文件中的用户永远都禁止登陆ftp。
/etc/vsftpd/usr_list 如果/etc/vsftpd/vsftpd.conf中
userlist_enable=YES,userlist_deny=YES (default)则该文件中的用户都禁止登陆ftp。
userlist_enable=YES,userlist_deny=NO则只有该文件中的用户允许登陆ftp。
首先设置selinux:
[root@rhce-jie ftp]# getsebool -a|grep ftp
allow_ftpd_anon_write --> on
allow_ftpd_full_access --> on
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> on
要使selinux达到上面状态。
[root@rhce-jie vsftpd]# getsebool -a
[root@rhce-jie vsftpd]# setsebool -P allow_ftpd_full_access on
ftp> !pwd
/etc/vsftpd “!加命令”表示ftp本地命令
开启匿名用户(ftp)上传
[root@rhce-jie vsftpd]# vim /etc/vsftpd/vsftpd.conf
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES
修改匿名用户默认目录/var/ftp/pub:
man vsftpd.conf 可以看到,修改/etc/vsftpd/vsftpd.conf
anon_root=/home/test/ftp
给匿名用户上传的权限:
方法一:
[root@rhce-jie vsftpd]# chmod o+w /var/ftp/pub
[root@rhce-jie vsftpd]# setsebool -P allow_ftpd_full_access on
方法二:
修改selinux安全上下文,先介绍两个命令:
命令1、ls -Z ps -Z id -Z # 分别可以看到文件,进程和用户的SELinux属性
命令2、#chcon 改变SELinux安全上下文
chcon -u [user] 对象
-r [role]
-t [type]
-R 递归
--reference 源文件 目标文件 # 复制安全上下文
使用方法:
[root@rhce-jie ftp]# ls -Zd /var/ftp/pub/
drwxrwxrwx. root root system_u:object_r:public_content_t:s0 /var/ftp/pub/
[root@rhce-jie ftp]# chcon -R -t public_content_rw_t /var/ftp/pub
[root@rhce-jie vsftpd]# ls -Zd /var/ftp/pub/
drwxrwxrwx. root root system_u:object_r:public_content_rw_t:s0 /var/ftp/pub/
把用户限制在家目录中
[root@rhce-jie vsftpd]# vim /etc/vsftpd/vsftpd.conf
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
则/etc/vsftpd/chroot_list中的用户可以切换其他目录,非/etc/vsftpd/chroot_list中的用户被限制在家目录。
匿名用户上传的文件,可以供匿名用户下载:
vsftpd.conf 中添加anon_umask=022
这样匿名用户上传的文件权限是644。
将匿名用户上传的文件,归属于本地用户:
chown_uploads=YES
chown_username=local_name
限制用户上传文件大小:利用 quota(磁盘配额)
1、编辑/etc/fstab为指定分区加上quota参数:usrquota、grpquota
2、建立quota记录文件:
#quocheck –avug
会在/home下生成 aquota.user,aquota.group 文件
3、启动 quota 服务:#quotaon –avug
4、单一用户的quota报表:#quota –uvs usename
详见: 鸟哥私房菜
一、安装
[root@rhce-jie Packages]# yum install postfix dovecot -y
二、配置
[root@rhce-jie postfix]# vim /etc/postfix/main.cf
inet_interfaces = all 改侦听端口为all
#inet_interfaces = localhost 注释掉
[root@rhce-jie postfix]# /etc/init.d/postfix start
[root@rhce-jie postfix]# chkconfig postfix on
[root@rhce-jie postfix]# vim /etc/dovecot/dovecot.conf dovecot开源的 IMAP 和 POP3 邮件服务器
# Protocols we want to be serving.
protocols = imap pop3 lmtp
[root@rhce-jie postfix]# /etc/init.d/dovecot start
验证:
[root@rhce-jie postfix]# netstat -untlp | grep 25
tcp 0 0 :::25 :::* LISTEN 31
听到25端口就OK。
[root@rhce-jie postfix]# hostname
rhce-jie.test.com
[root@rhce-jie postfix]# echo hello | mail -s "test mail" test3@rhce-jie.test.com
[root@rhce-jie postfix]# cat /var/spool/mail/test3
From root@rhce-jie.test.com Sun Nov 18 15:56:58 2012
Return-Path:
X-Original-To: test3@rhce-jie.test.com
Delivered-To: test3@rhce-jie.test.com
Received: by rhce-jie.test.com (Postfix, from userid 0)
id 04B16658A8; Sun, 18 Nov 2012 15:56:57 +0800 (CST)
Date: Sun, 18 Nov 2012 15:56:57 +0800
To: test3@rhce-jie.test.com
Subject: test mail
User-Agent: Heirloom mailx 12.4 7/29/08
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-Id: <20121118075658.04B16658A8@rhce-jie.test.com>
From: root@rhce-jie.test.com (root)
hello
用户别名的配置:
[root@rhce-jie postfix]# vim /etc/postfix/main.cf
alias_maps=hash:/etc/aliases 默认就是这样的
[root@rhce-jie postfix]# vim /etc/aliases
admin: harry
使配置文件生效:
[root@rhce-jie postfix]# /etc/init.d/postfix restart
/etc/hosts是配置ip地址和其对应主机名的文件,这里可以记录本机的或其他主机的ip及其对应主机名。与DNS server完成相同功能。
192.168.1.120 ftpserver ftp120
一般情况下hosts文件的每行尾一个主机,每行由三部分组成,每个部分由空格隔开。
第一部分:网络IP地址;
第二部分:主机名或域名;
第三部分:主机名别名;
一、安装
[root@desktop3 test]#yum -y install bind bind-utils bind-chroot
二、修改配置文件
DNS server IP:192.168.0.11;hostname:rhel6.test.com。
1、
[root@desktop3 test]# vim /etc/named.conf 注释4行
options {
# listen-on port 53 { 127.0.0.1; };
# listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
# allow-query { localhost; };
recursion yes;
# dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
};
[root@desktop3 test]# vim /etc/named.rfc1912.zones 添加
zone "test.com" IN {
type master;
file "test.com";
allow-update { none; };
};
zone "lsd.com" IN {
type master;
file "lsd.com";
allow-update { none; };
};
#反向解析,可以不用
zone "0.168.192.in-addr.arpa" IN {
type master;
file "192.168";
allow-update { none; };
};
2、
[root@desktop3 named]# vim /var/named/test.com
$TTL 1D
@ IN SOA rhel6.test.com. root.test.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS rhel6.test.com.
IN MX 5 mail.test.com.
rhel6 A 192.168.0.11 ;必须要顶格写
mail A 192.168.0.11 ;必须要顶格写
www A 192.168.0.11 ;必须要顶格写
备注:rhel6.test.com不是不需要与主机名一致,但最好一致.
[root@desktop3 named]# vim /var/named/test.com
$TTL 1D
@ IN SOA rhel6.test.com. root.test.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS rhel6.test.com.
IN MX 5 mail.lsd.com.
rhel6 A 192.168.0.11 ;必须要顶格写
mail A 192.168.0.11
www A 192.168.0.10
#反向解析,可以不用
[root@desktop3 log]# vim /var/named/192.168
$TTL 1D
@ IN SOA rhel6-01.test.com. root.rhel6-01.test.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS rhel6-01.test.com.
11 PTR rhel6-01.test.com.
2 PTR rhel6-02.test.com.
100 PTR
3
[root@desktop3 var]# chown named:named /var/named/ -R
[root@desktop3 var]# /etc/init.d/named restart
这样DNS server 配置完成.
三、客户端
[root@desktop3 named]# vim /etc/resolv.conf
nameserver 192.168.0.11
[root@desktop3 named]# dig
;; QUESTION SECTION:
; IN A
;; ANSWER SECTION:
86400 IN A 192.168.0.10
;; AUTHORITY SECTION:
lsd.com. 86400 IN NS rhel6.test.com.
;; ADDITIONAL SECTION:
rhel6.test.com. 86400 IN A 192.168.0.11
可以看到已经正确解析。
这样就可以使用192.168.0.11上的DNS:
指向 ;username@lsd.com指向192.168.0.11的邮件服务器。
指向;username@test.com指向192.168.0.11的邮件服务器。
httpd服务器 IP:192.168.0.10
一、主目录默认为: /var/www/html/,修改主目录:
[root@desktop4 test2]# mkdir /ibm
[root@desktop4 test2]# vim /etc/httpd/conf/httpd.conf
#DocumentRoot "/var/www/html"
DocumentRoot "/ibm"
[root@desktop4 test2]# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: Syntax error on line 292 of /etc/httpd/conf/httpd.conf:
DocumentRoot must be a directory
[FAILED]
[root@desktop4 test2]# vim /etc/httpd/conf/httpd.conf
[root@desktop4 test2]# vim index.html
DirectoryIndex index.html index.html.var
[root@desktop4 test2]# ls -Z /ibm
-rw-r--r--. root root unconfined_u:object_r:default_t:s0 index.html
[root@desktop4 test2]# chcon -R -u system_u -t httpd_sys_content_t /ibm
[root@desktop4 test2]# ls -Z /ibm
-rw-r--r--. root root system_u:object_r:httpd_sys_content_t:s0 index.html
[root@desktop4 test2]# cd /ibm/
[root@desktop4 ibm]# vim index.html
[root@desktop4 ibm]# /etc/init.d/httpd restart
则主页为:/ibm/index.html
二、修改http 主页:
[root@desktop4 test2]# vim /etc/httpd/conf/httpd.conf
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
# The index.html.var file (a type-map) is used to deliver content-
# negotiated documents. The MultiViews Option can be used for the
# same purpose, but it is much slower.
#
DirectoryIndex test.html index.html index.html.var
则主页为:/ibm/test.html
三、安装证书(不考):
[root@desktop3 yum.repos.d]# yum -y install mod_ssl
[root@desktop3 /]# ls /etc/httpd/conf.d/ssl.conf 有这个文件就ok
[root@desktop3 /]# yum -y install crypto-utils
[root@desktop3 /]# genkey --days 365 192.168.0.11
random seed from /etc/pki/tls/.rand.63146
output will be written to /etc/pki/tls/certs/192.168.0.11.crt
output key written to /etc/pki/tls/private/192.168.0.11.key
[root@desktop3 certs]# vim /etc/httpd/conf.d/ssl.conf
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateFile /etc/pki/tls/certs/192.168.0.11.crt
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateKeyFile /etc/pki/tls/private/192.168.0.11.key
[root@desktop3 certs]# cd /etc/pki/tls/certs
将192.168.0.11.crt拷贝到客户端,在客户端的浏览器中手动添加证书192.168.0.11.crt。
[root@desktop3 certs]# /etc/init.d/httpd restart
单元12 WEB服务器的附加配置
四、虚拟主机
[root@desktop4 /]# vim /etc/httpd/conf/httpd.conf 添加
NameVirtualHost 192.168.0.10:80
#ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /ibm
ServerName
#ErrorLog logs/dummy-host.example.com-error_log
#CustomLog logs/dummy-host.example.com-access_log common
#ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /lsd
ServerName
#ErrorLog logs/dummy-host.example.com-error_log
#CustomLog logs/dummy-host.example.com-access_log common
另外,需要修改DNS服务器。在192.168.0.11中:
[root@desktop3 test]# vim /etc/named.rfc1912.zones 添加
zone "ibm.com" IN {
type master;
file "ibm.com";
allow-update { none; };
};
[root@desktop3 named]# vim /var/named/ibm.com
$TTL 1D
@ IN SOA rhel6.test.com. root.test.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS rhel6.test.com.
IN MX 5 mail.lsd.com.
rhel6 A 192.168.0.11
mail A 192.168.0.11
www A 192.168.0.10
虚拟主机搭建完成。
指向 192.168.0.10中/lsd/index.html 下内容;
指向 192.168.0.10中/ibm/index.html 下内容;
指向 192.168.0.10中/ibm/index.html 下内容(VirtualHost中的第一个)。
五、个人主页
[root@desktop3 named]# vim /etc/httpd/conf/httpd.conf
#UserDir disabled
#UserDir public_html
UserDir myhtml
[root@desktop3 named]# su - test1
[test1@rhel6 ~]$mkdir myhtml
[test1@rhel6 ~]$cd myhtml
[test1@rhel6 ~]$echo "hello ddd" > index.html
[test1@rhel6 ~]$chmod -R 755 ../myhtml
[test1@rhel6 ~]$exit
[root@desktop3 named]# /etc/init.d/httpd restart
客户端访问:http//192.168.0.10/~test1
六、目录限制(在虚拟主机目录里完成)
[root@desktop3 named]# mkdir -p /test/ibm
[root@desktop3 named]# cd /test/ibm/
[root@desktop3 ibm]# mkdir restricted
[root@desktop3 ibm]# cd restricted/
[root@desktop4 restricted]# echo "restricted is good" > index.html
[root@desktop4 restricted]# vim /etc/httpd/conf/httpd.conf
#ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /test/ibm
ServerName
#ErrorLog logs/dummy-host.example.com-error_log
#CustomLog logs/dummy-host.example.com-access_log common
Order allow,deny
allow from 192.168.0.11
[root@desktop4 restricted]# chcon -R -u system_u -t httpd_sys_content_t /test
[root@desktop4 restricted]# /etc/init.d/httpd restart
在192.168.0.11客户端浏览器中输入:http:///restricted/,可以访问.其它主机都禁止访问.
七、.htaccess访问网站验证(注释虚拟主机部分,注意selinux安全上下文)
[root@desktop4 myhtml]# vim /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html"
[root@desktop4 myhtml]# vim /etc/httpd/conf/httpd.conf 添加
AllowOverride AuthConfig
Order allow,deny
allow from all
[root@desktop4 myhtml]# mkdir /var/www/html/protect
[root@desktop4 myhtml]# cd /var/www/html/protect/
[root@desktop4 myhtml]# chcon -R -u system_u -t httpd_sys_content_t ../protect
[root@desktop4 protect]# echo "protect" > index.html
[root@desktop4 protect]# vi .htaccess
AuthName "Protect ccc by .htaccess"
Authtype Basic
AuthUserFile /var/www/html/protect/httpd.pass
require user ccc
备注: 必须在/etc/httpd/conf/httpd.conf设置 AllowOverride AuthConfig 以允许这些指令生效。
[root@desktop4 protect]# htpasswd -c /var/www/html/protect/httpd.pass ccc
New password:
Re-type new password:
Adding password for user ccc
[root@desktop4 protect]# htpasswd /var/www/html/protect/httpd.pass ddd
客户端访问:http//192.168.0.10/protect
一个完整实例:
DocumentRoot /var/www/html
ServerName station.domain23.example.com
AllowOverride AuthConfig
Order allow,deny
allow from 192.168.10.101
DocumentRoot /var/www/virtual
ServerName
单元8 安全的网络通信
Netfilter:Linux的第三代防火墙
Linux的防火墙叫做”iptables”,这种叫法不是很合适。Iptables是将防火墙规则写入内存的工具,正确的叫法应该是Netfilter/iptables
Netfilter将规则分成了四个表(RAW未列出)
Filter:Netfilter最重要的机制,执行封包的过滤动作,也就是防火墙的功能。
NAT: 网络地址转换功能
Mangle:修改经防火墙内的封包的内容。比如修改封包的ttl值。
RAW: 负责加快封包穿越防火墙机制的速度。
Netfilter链
INPUT:网络上其他主机送给本机的进程封包。
如果我们要保护本机的httpd进程的话,应该是使用什么类型的封包呢?应该是INPUT,只有INPUT类型封包才会对本机的进程造成危害。
OUTPUT:本机进程多产生的封包,如firefox
FORWARD: 封包对本机而言只是“路过”,如果本机执行的是路由器的角色,会不会产生FORWARD类型的封包呢?
Prerouting: 数据包刚刚到达防火墙时,改变其目的地址
Postrouting:数据包就要离开防火前之前改变其源地址 如:ip映射。
#service iptables save
命令会将规则保存在/etc/sysconfig/iptables文件中,考试必须要写.
[root@desktop3 restricted]# iptables -L --line-numbers
考试只写INPUT链,因为自己是server.
只允许自己访问http
#iptables -A INPUT -s -p tcp --dport 80 -j ACCEPT
#iptables -A INPUT -p tcp --dport 80 -j REJECT
例子:
将WEB服务器的INPUT链设置成默认拒绝
iptables -P INPUT DROP
然后再添加下面两条规则
;-A是添加到规则的末尾;-I可以插入到指定位置
iptables -A INPUT -s 192.168.1.100 -j ACCEPT
iptables -L –line-number
iptables -I INPUT 3 -s 192.168.1.3 -j ACCEPT
portmap(nfs时映射端口) 端口 tcp-111
udp-111
nfs 端口 tcp-2049
udp-2049
httpd 端口 80
ftp 端口 tcp-20:21
postfix 端口 tcp-25
ssh 端口 tcp-22 考试只要用到这两个端口