第一章
LINUX网络配置
一、配置
IP地址:
eth0 代表第一块网卡
eth1 第二块 …..
1、
netconfig命令 永久性
service network restart
重启网络服务
/etc/init.d/network restart/stop/start
2、
ifconfig eth0 IP/子网掩码 临时性
3、
/etc/sysconfig/network-scripts/ifcfg-eth0 第一块
……………………………………………..ifcfg-eth1 二
二、
DNS设置
/etc/resolv.conf 保存
DNS的服务器地址 有所主机都生效
/etc/hosts
自定义
DNS 本机生效
/etc/host.conf
说明上两个文件谁优先
Order
hosts,bind 说明
hosts文件优先
Order
bind,hosts 说明
DNS服务器优先
三、其它的配置文件
/etc/services
udp或
tcp端口对应关系
/etc/protocols 协议号
四、基本网络命令
ping -c
-s -b
traceroute
route
动态路由
netstat
查看本机开启的端口
-a -t/-u
nmap
扫描端口
-sP 192.168.1.0/24
nmap IP地址
防止
LINUX出现乱码,输入以下命令: (注意大小写)
export LC_ALL= "en_US.UTF-8"
export LANG= "en_US.UTF-8"
改网卡的
MAC地址:
1、先停掉网卡
ifconfig eth0 down
2、改MAC
ifconfig eth0 hw ether MAC地址
3、开启网卡
ifconfig eth0 up
增加一块新网卡后,用
service kudzu start来配置
可以给一块网卡,绑定一个虚拟
IP地址,例如给eth0,加一个虚拟IP地址后,设备名为eth0:1,再增加可以叫eth0:2,以此类推…
ifconfig eth0:1 IP地址
/子网
第四章
DNS
递归、迭代
软件:
bind-9.X
服务名:
named
端口:
53/udp/tcp
配置文件:
/etc/named.conf
记录文件:
/var/named/chroot/var/named/*
zone "
benet.net" IN { 声明
benet.net域,归本机管理
type master; 是主
DNS服务器
file "benet.net.zone"; 记录都保存在
benet.net.zone里
}
;
先声明域,再写具体的记录
记录类型:
A
把域名翻译成
IP
PTR
把
IP翻译成域名
SOA
域初始记录(只能有一个,必须要有)
MX
邮件交换记录
NS
域名服务器指向记录
域名
IN SOA 权威DNS服务器名 DNS服务器管理员mail(
版本
从
DNS服务同步时间
失败后的偿试时间
放弃时间
缓存时间
)
域名
IN NS DNS服务器
域名
IN NS DNS服务器
主机名
IN A 主机的IP
反向解释
: 防止垃圾邮件
1、先声明
A类
0-126
B类
128-191
C类
192-223
192.168.1.0
1.168.192.in-addr.arpa
128.1.0.0
1.128.in-addr.arpa
10.0.0.0
10.in-addr.arap
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.168.1.arpa";
};
1、
cd /var/named/chroot/var/named/
2、
cp benet.net.zone 1.168.192.arpa
3、
vi 1.168.192.arpa
做从
DNS服务器:
1、在主
DNS服务器上
改声明文件
named.conf
加入
allow-transfer { 192.168.1.200; }; 指定从DNS的IP地址
改记录文件
加入
NS记录(正向与反向),再加入相应的A记录
2、在从
DNS服务器上
只写声明文件
zone "benet.net" IN {
type slave;
file "slaves/benet.net.backup";
masters { 192.168.1.178; };
};
以后主
DNS发生变化,一定要改版本号
第二章
邮件服务
在
DNS加入MX(邮件交换记录)
MUA(邮件用户代理)
:outlook、foxmail、Thunderbird、mutt
客户端
MTA(邮件传输代理):
Exchange、sendmail、qmail、postfix
服务器端
3种协议:
smtp(简单邮件传输协议):只管发,不管收
25/tcp
pop3(邮局协议):只管收,不管发
110/tcp
imap4(邮局协商协议):只管收,不管发
143/tcp
MTA有
2个作用:1、暂存邮件 2、帮用户端转发邮件
软件:
sendmail
服务名:
sendmail
配置文件:
/etc/mail/*
local-host-names 保存本机所在域名
sendmail.cf 主配置文件
sendmail.mc 辅助配置文件
1、
cd /etc/mail
2、
m4 sendmail.mc > sendmail.cf
vi sendmail.mc
DAEMON_OPTIONS(`Port=smtp,Addr=
0.0.0.0, Name=MTA')dnl
access 说明允许谁通过
sendmail发mail
192.168.1
RELAY 允许
192.168.1.100
DISCARD 禁止
yahoo.com
DISCARD
make access.db
把
access文本文件转换成.db
/var/spool/mail/与用户同名的文件
虚拟邮件:
jerry市场部
600
ßtom
vi /etc/mail/ virtusertable
虚拟邮件地址
真实邮件地址
make virtusertable.db
à service sendmail restart
组邮件:
vi /etc/aliases 定义组邮箱
组名:
成员1,成员2,……
newaliases
刷新组邮箱
不用sendmail服务
远程收发邮件:保证
pop3协议开启
chkconfig ipop3 on
service xinetd
restart
RHEL3
SMTP认证
1、vi /etc/mail/sendmail.mc
/MD5
去掉这两行注解
/MSA
去掉注解
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0,Name=MTA
, M=a')dnl
2、
m4 sendmail.mc > sendmail.cf
3、
service sendmail restart
Dns 服务器
IP为 192.168.1.178
163mail的
IP为192.168.1.200
Yahoomail的
IP为192.168.1.199
一、在主
DNS服务器上
zone "163.com" IN {
type master;
file "163.com.zone";
};
zone "yahoo.com" IN {
type master;
file "yahoo.com.zone";
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.168.1.arpa";
};
163.com.zone文件如下:
163.com. IN SOA dns.163.com. root.163.com. (
2007011101
1
1
1
1)
IN NS dns.163.com.
IN MX 1 mail.163.com.
dns
IN A 192.168.1.178
mail
IN A 192.168.1.200
yahoo.com.zone文件如下:
yahoo.com. IN SOA dns.yahoo.com. root.yahoo.com. (
2007011101
1
1
1
1)
IN NS dns.yahoo.com.
IN MX 1 mail.yahoo.com.
dns
IN A 192.168.1.178
mail
IN A 192.168.1.199
192.168.1.arpa 文件如下:
1.168.192.in-addr.arpa. IN SOA dns.163.com. root.163.com. (
2007011101
1
1
1
1)
IN NS dns.163.com.
IN NS dns.yahoo.com.
IN MX 1 mail.163.com.
IN MX 2 mail.yahoo.com.
178
IN PTR dns.163.com.
200
IN PTR mail.163.com.
178
IN PTR dns.yahoo.com.
199
IN PTR mail.yahoo.com.
二、在
163 mail服务器上
access文件如下:
localhost.localdomain
RELAY
localhost
RELAY
127.0.0.1
RELAY
yahoo.com
RELAY
local-host-names 文件如下:
163.com
mail.163.com
执行
hostname mail.163.com
三、在
yahoo mail服务器上
access文件如下:
localhost.localdomain
RELAY
localhost
RELAY
127.0.0.1
RELAY
163.com
RELAY
local-host-names 文件如下:
yahoo.com
mail.yahoo.com
执行
hostname mail.yahoo.com
第三章
Web服务
软件:
IIS、Apache、TomCat(jsp)
Apache 特点:
1、模块化
2、
IPv6
3、支持
php,asp (iasp)
4、安全认证
SSL
软件:
httpd-x.x.x 其它版:apache2-x.x.x
服务:
httpd apache2
端口:
80/tcp
配置文件:
/etc/httpd/conf/httpd.conf
ServerRoot “
/etc/httpd/”
配置文件所保存的目录
Timeout 300
客户端指定时间没有与服务发生连接,就断开
MaxKeepAliveRequests 100
限制客户端与服务器的最大连接数量
Listen 0.0.0.0:80
监听所有网段的80端口
LoadModule 加载模块
Include conf.d/*.conf
加入其它的配置
cd /etc/httpd/conf.d/
mv welcome.conf welcome.backup
ServerName 域名或
IP
告诉
apache所运行在LINUX上的主机名或IP地址
DocumentRoot “/var/www/html“
.html或
.htm主页文件所在的目录
www.benet.com-->/var/www/html/*
DirectoryIndex index.html index.htm ....
指定默认打开的主页
AddDefaultCharset UTF-8
指定主页的默认语言
AddDefaultCharset GB2312
GBK
BIG5
访问限制:
<Directory “路径
”>
Order Deny,Allow 或
Order Allow,Deny
Deny From 网段或
IP 或 Allow From网段或IP
</Directory>
实验:允许所有人可以访问
/var/www/html/test目录
禁止
1网段访问, 但允许192.168.1.100来访问
Deny From 192.168.1.0/24
Allow From 192.168.1.100
基于域名的虚拟主机:
www.benet.com
à /www/
bbs.benet.com
à /bbs/
1、配置
DNS
2、建立目录
3、改
apache配置
NameVirtualHost 本机
IP
<VirtualHost 192.168.1.178>
DocumentRoot /www/
ServerName www.benet.com
</Virtualhost>
<VirtualHost 192.168.1.178>
DocumentRoot /bbs/
ServerName bbs.benet.com
</Virtualhost>
建立
BBS(论坛)
Linux+Apache+PHP+MySQL
àLAMP+论坛
Linux+Apache+Tomcat+Oracle+Java
Win+IIS+Asp+SQL Server
论坛:
phpBB .php
1、配置
apache
2、配置
MySQL服务
3、安装
BBS论坛
cd /bbs
wget
http://192.168.1.171/bbs.zip
unzip bbs.zip
rpm -ivh mysql<TAB>补齐
安装软件
service mysqld start
mkdir /var/lib/mysql/test 建立一个叫
test的数据库
service mysqld restart
基于口令文件限制
1.
vi /etc/httpd/conf/httpd.conf
........................
<Directory /www>
AuthType Basic
指定使用基本认证方式
AuthName "Input you password:"
指定认证提示信息
AuthUserFile
/etc/httpd/passwd
指定认证口令文件的存放位置
require valid-user
授权给认证口令文件中的所有用户
</Directory>
2.
htpasswd -c /etc/httpd/passwd jerry
htpasswd /etc/httpd/passwd tom
3.
chown apache.apache /etc/httpd/passwd
4.
service httpd restart
同时配置了
IP控制与认证授权之后,是否可以同时起作用,将由指令Satisfy控制。
Satisfy有两种可能取值:
Satisfy all:访问控制与认证授权两类指令均起作用(默认值)
Satisfy any:只要一类指满足条件即可访问
第五章
文件服务
FTP
应用在公网
21、20/tcp
Samba 应用在局域内
137、138/tcp W<->L
NFS
应用在局域内
2049/tcp L<->L
一、FTP 服务
软件:
wuFTP、vsftp、Ser-U
配置文件:
/etc/vsftpd/vsftpd.conf
FTP:有
2种模式: 主动模式、被动模式
21/tcp 数据控制
20/tcp数据传输
匿名用户
不用密码,用户名nobody
/var/ftp/pub
本地用户
要密码,用户名是通useradd增加的用户
不固定
/home/用户名
允许匿名用户登录
anonymous_enable=YES
允许匿名用户访问
anon_upload_enable=YES
匿名用户可以上传文件
上传到真实目录
/var/ftp/pub/
开启服务
service vsftpd start/restart
chmod o+w /var/ftp/pub/
anon_other_write_enable=yes 匿名用户可删除文件
anon_mkdir_write_enable=yes 匿名用户可创建目录
anon_max_rate=1000000
1M
本地用户访问
FTP
ftp://用户名
:密码@IP地址
限制用户登录
userlist_enable=YES
允许用户访问列表
userlist_file=目录
/文件 指定列表文件
userlist_deny=yes
列表示里的用户不允许访问
FTP
=no 只有列表里的用户可以访问
FTP
Samba服务:
配置文件:
/etc/samba/smb.conf
内容:
[global] 之后的内容,代表
samba通用说明
[homes] 对每个用户宿主目录共享的说明
[printers] 对共享打印机说明的
如果自己要建立共享的话,上面三个小节的名子就不能用。
[global] 小节
workgroup = 组名
server string = 备注信息
hosts allow = 192.168.1.
允许哪些网段或
IP来访问
hosts deny=192.168.1.100 禁止哪些网段或
IP来访问
security = share/user/server/domain
share 不提供用户名与密码
user
要
................................. 靠/etc/samba/smbusers
server 要
................................. 靠另一个smb服务来认证
doamin 要
.............................. 靠win AD来认证
简单共享
把系统用户转换为
samba用户
useradd tom
smbpasswd -a tom
2、要开启服务
service smb restart
3、
win访问
自定义共享
1、
vi /etc/samba/smb.conf
最好在文件的最后添加
[共享名称
]
path=真实目录
path=/www
comment=注解
#readonly=yes/no
只读
write=no/yes
可写
public=yes/no
是否允许匿名用户访问
write list=用户名
1,用户名2,...... 说明谁可写
read list=用户名
1,用户名2,...... 说明谁可读
valid users=用户名
1,用户名2,...... 说明谁可访问
invalid users=用户名
1,用户名2,...... 说明谁不可访问
注意:
smb说明的可写不是真正意义上的可写,还要真实目录有写权限才可以。 chmod o+w 目录名
Linux访问
Win提供的共享:
加载:
mount -o username=win用户名
,password=win用户的密码
//winIP/共享名
/本机的空目录
卸载:
umount /本机的空目录
smbclient
实验:
用
smb建立共享,共享名叫 share,对应的目录/x
该共享只允许,
jerry和tom来访问
jerry对该共享可写,
tom对该共享是只读
用
win做共享,用linux加载,并映射到/abc
Windows不用注销,可以改用户名来访问
smb共享
在
win输入命令:net use * /delete /y
NFS (
Network File System)网络文件系统
只支持共享,不认证
RPC 公共程序
软件:
nfs-utils
àNFS
Portmap
àRPC
服务:
portmap、nfs
配置文件:
/etc/exports
格式
:
本机被共享的目录
允许访问的IP范围(权限)
/www
192.168.1.200(ro)
/share
*(ro) 192.168.1.100(rw,sync)
客户机查看服务器提供的共享
showmount -e 服务器
IP
客户机使用共享
mount 服务器
IP:/共享名 本机的空目录
在服务器端已经被用的共享
showmount -d
客户机解除共享(不使用共享)
umount 本的目录
exportfs -rv
涮新共享信息(不重启服务)
远程控制:
open-ssh 开放安全的shell
软件:
openssh-clients-x.x.x. 客户端
openssh-server-x.x.x 服务器端
openssh 工具包:远程登录的工具,远程传输文件的工具
服务器端的配置文件:
/etc/ssh/sshd_config
客户端的配置文件:
/etc/ssh/ssh_config
服务名称:
sshd
服务器端配置文件:
#Port 22
监听端口
#Protocol 2,1 先使用
2版协议,如果不成功,再用1版协议
#PasswordAuthentication yes/no 是否使用密码验证
实现远程连接:
1、开启服务
service sshd start/restart
2、客户端:
ssh 服务器端的用户@服务器IP
服务器查看谁在连接:
w
客户端断开链接:
exit
ssh -L root 192.168.1.178
远程拷贝文件
:scp
服
à客
scp [-r] 服务器端的用户@服务器IP:路径/文件 路径
客
à服
scp [-r] 路径/文件 服务器端的用户@服务器IP:路径
-r 包括整个目录
密钥:公钥与私钥
规则:公钥加密的数据,只有私钥才能打开
私钥加密的数据,只有公钥才能打开
如果用密钥方式进入验证,密码的意义就不是很大了
步骤:
一、服务器端
1、产生一对密钥
ssh-keygen -t rsa
在
~/.ssh/目录产生一对密钥:id_rsa.pub公钥 id_rsa私钥
2、把公钥改名
cd ~/.ssh/
mv id_rsa.pub authorized_keys
3、要用安全手段把私钥放到客户机上
scp
/root/.ssh/id_rsa 客户端用户名
@客户端的IP:/root/.ssh/
客户端有可能没有
.ssh目录,用mkdir /root/.ssh/
4、编译配置文件
vi /etc/ssh/sshd_config
PasswordAuthentication
no 不用密码去验证,用密钥验证
5、 重启服务
第六章 防火墙
分类:三层、应用层(代理服务器)
iptables squid
iptables:有
3张表:filter(过滤) nat(地址转换)
mangle(管理)
filter:有
3个检测(勾子)INPUT、FORWARD、OUTPUT
nat:有
3个检测点 PROROUTING、POSTROUTING、OUTPUT
mangle:有
5个检测点:IN、PR、FO、PO、OU
service kudzu start 找新网卡
开启转发功能:
echo “1” > /proc/sys/net/ipv4/ip_forward
iptables语法:
iptables [-t 表名
] -A/-D/-I/-R 检测点名 条件
-j ACCEPT/DROP
iptables -A FORWARD -s 192.168.1.100 -d 192.168.2.2 -j DROP
iptables [-t 表名
] -L [--line-numbers]
注意:一但条件满足,就不再向下检测。所以规则的顺序很重要。
条件:
-s IP地址或网段 源地址
-d IP地址或网段
目的地址
-p tcp/udp/icmp/all 协议的范围
--sport 端口号
源端口
--dport 端口号
目的端口
-o 设备名
说明出数据的网卡设备
-i 设备名
说明进入数据的网卡设备
iptables -F 清除所有规则
iptables -A OUTPUT -o eth1 -s 192.168.2.1 –d 192.168.2.2 -p tcp --dport 80 –j DROP
共享上网
iptables -t nat -A
POSTROUTING -o eth1 -s 192.168.1.0/24 -j SNAT --to 61.1.1.1
公司共享上网
SNAT改变源地址
如果每次上网
IP都是动态分配的话,要改成如下:
iptables -t nat -A POSTROUTING
-o ppp0 -s 192.168.1.0/24 -j MASQUERADE
家庭共享上网
如果用PROROUTING(前),一定是改目的IP 内网发布服务器
如果用POSTROUTING(后),一定是改源IP 共享上网
iptables -t nat -A
PROROUTING -i eth0 -s 192.168.1.0/24 -j DNAT --to 61.1.1.1
实验:
1、W客户端,不能通过防火墙访问2.2的DNS服务
2、不允许
2.1电脑与主DNS更新,但允许用2.2主DNS来解释
Squid 代理服务器
1、有缓存的机制
2、访问控制列表ACL
主配置文件
/etc/squid/squid.conf
1、
cd /etc/squid
2、
cp squid.conf squid.conf~ 备份
3、
> squid.conf 清空文件
4、
vi squid.conf
http_port 3128
squid所侦听端口
,有时也可为8080端口
http_port 192.168.0.29:3128
只侦听内网的客户请求,不侦听
Internet上的请求
cache_mem 96 MB
设置内存缓冲的大小,原则:如果服务器
只做代理应设置值应为真实内存的1/2,如果还做其它服务,设置值最好不要超过真实内存的1/3
cache_dir ufs /var/spool/squid/ 100 16 256
设置硬盘缓冲的大小,
ufs指缓冲的类型, /var/spool/squid指缓冲所在目录,100指缓冲空间的大小(MB),16指一级目录的个数,256指二级目录的个数
visible_hostname redhat
设置运行
squid的主机名,也可以写IP。必须要设置
acl all
src 0.0.0.0/0.0.0.0
定义访问控制列表
all=0.0.0.0/0.0.0.0
http_access allow all
允许所有客户端通过代理服务器访问
缓存目录初始化:
squid -z
启动服务:
service squid start
设置访问控制列表(
ACL):
原则是先定义,再引用。
定义:
acl 列表名称 列表类型 [-i] 列表值
引用:
http_access [ allow | deny ] 列表名称
列表类型包括:
src
源
IP地址 acl abc src 192.168.1.100/24
dst
目的
IP地址 acl xyz dst 202.106.0.100/24
srcdomain
源域名
dstdomain
目的域名
url_regex
URL表达式
urlpath_regex:URL-path
忽略指定的文件
maxconn
单一
IP的最大连接数
time
时间段
M、T、W、H、F、A、S D星期一到星期五
例:
禁止
192.168.1.0网段所有电脑上网
acl bad_client_ip src 192.168.1.0/24
http_access deny bad_client_ip
禁止所有用户访问
IP地址为202.11.11.11的网站
acl bad_server_ip dst 202.11.11.11
http_access deny bad_server_ip
禁止所有用户访问域名为
www.playboy.com的网站
acl bad_domain
dstdomain -i www.playboy.com
http_access deny bad_domain
www.playboy.com
www.PlayBoy.com忽略
防止用户输入
WWW.PLAYBOY.COM后仍可以访问
禁止用户访问域名包含有
sex关键字的URL
acl bad_url
url_regex -i sex
http_access deny bad_url
只要
URL里有sex关键字的网站都不可以访问,
如:
www.sex.com、www.abc.com/sex/ index.html
禁止客户机下载
*.avi、*.rm \.avi$ \.rm$
acl bad_ip src 192.168.3.0/24
acl bad_audio_video
urlpath_regex -i \.avi$ \.rm$
http_access deny bad_ip bad_audio_video
限制
IP地址为192.168.0.29客户机最大连接数为10
acl client_1 src 192.168.0.29/24
acl max_con
maxconn 10
http_access deny client_1 max_con
两个条件复用
允许192.168.2.0网段在周一至周五的9:00到18:00上网
acl client_2 192.168.2.0/24
acl work_time
time MTWHF 9:00-18:00
http_access allow client_2 work_time
规则都设置好后,再加上下面两句
acl all src 0.0.0.0/0.0.0.0
http_access
deny all
一定要把自己定义的规则加在这两句这前,如果加到之后,就不会起作用。
透明代理:
不需要客户端再设定IE,只需要指定网关
squid设置:
vi /etc/squid/squid.conf
httpd_accel_host virtual
squid用虚拟主机模式
httpd_accel_port 80
设定
80端口为加速请求端口
httpd_accel_with_proxy on
squid既是
Web请求加速器,又是缓存代理
httpd_accel_usese_host_header on
缓存将以主机名方式作为索引
iptables设置:
iptables -t nat -A PREROUTING -i 内网的网卡名
-p tcp --dport 80 -j REDIRECT --to-ports 3128
REDIRECT 替换端口
一定要让
squid和iptables服务都开启
DHCP服务
相关包:
dhcp-3.0pl2-6.14
服务:
dhcpd
1、 客户端请求
2、 服务器相应
3、 客户端选择
/确定DHCP服务器端
4、 服务器分配
IP
配置文件:
/etc/dhcpd.conf
cp /usr/share/doc/dhcp-xxxx/dhcpd.conf.sample /etc/dhcpd.conf
ddns-update-style interim;
开启动态
DNS解析,新版这行必须加这一行
ignore client-updates;
不允许客户机更新
DNS记录
default-lease-time 28000;
默认租约时间,单位秒,
8个小时
max-lease-time 43200;
最长租约时间,单位秒,
12个小时
option domain-name "benet.com";
指定客户端所在的域
option domain-name-servers 202.106.196.115;
指定
DNS服务器IP
subnet 192.168.0.0 netmask 255.255.255.0
{
设置要分配给客户端主机使用的
IP地址属于的网段
range 192.168.0.100 192.168.0.200; 定义允许分配的
IP范围
option routers 192.168.0.1; 指定路由器
IP
option subnet-mask 255.255.255.0; 指定子网掩码
option broadcast-address 192.168.0.255; 指定广播地址
host abc
{ 为绑定主机起名,
abc为主机名
option host-name "abc.benet.com"; 按
DNS方式指定主机的名子
hardware ethernet 52:64:AB:20:AF:A9; 指定硬件地址
fixed-address 192.168.0.179; 指定
IP地址和主机名
}
}
/var/lib/dhcp/dhcpd.leases 服务端的租约文件,通过该文件可以知道哪些
IP已经分配
LINUX客户端获得
IP : dhclient 设备名 临时性
dhclient eth0