http://10.1.1.35/ule_basic/ule09.txt

--

ssh 服务

/etc/init.d/sshd --sshd的服务启动脚本

[root@li ~]# netstat -ntlup |grep sshd
tcp 0 0 :::22 :::* LISTEN 2804/sshd

vim /etc/ssh/sshd_config --配置文件

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak --改配置文件前的好习惯,做一个备份


#Port 22 --默认端口是22
#Protocol 2,1 --协议版本现在是2版本
Protocol 2
#AddressFamily any
#ListenAddress 0.0.0.0 --监听的地址范围,默认 是所有
#ListenAddress ::

# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key --ssh 等效性,指的是ssh不需要密码

# Lifetime and size of ephemeral version 1 server key
#KeyRegenerationInterval 1h --每隔默认的一小时重新建立一次key
#ServerKeyBits 768 --server key的长度
# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
SyslogFacility local 7 --日志等级
#SyslogFacility AUTHPRIV
#LogLevel INFO
# Authentication:

#LoginGraceTime 2m --宽限时间2分钟
#PermitRootLogin yes --允许root用户登录
#StrictModes yes
#MaxAuthTries 6
.................................................



例子一:

修改ssh服务默认端口,增加安全性
#Port 22
Port 222 --修改端口

/etc/init.d/sshd restart --重启服务

[root@li ~]# netstat -ntlup |grep 222 --服务重启之后,看到监听的端口号为222
tcp 0 0 :::222 :::* LISTEN 3088/sshd


vim /etc/services --参考这个文件,有服务与对应的端口,端口不要乱改

端口有关知识:
范围:0-65535
注册端口:0-1024
随机端口:1025~65535


[root@snake ~]# ssh 10.1.1.35 -p 222 --加上-p参数后接端口号



例子二:

允许空密码ssh登陆
在/etc/ssh/sshd_config里加上

PermitEmptyPasswords yes


然后去掉某一个用户在/etc/passwd第二栏的x

再ssh测试

例子三:

直接在ssh服务配置文件里指定拒绝某用户,或者某些用户ssh登陆
在/etc/ssh/sshd_config里加上

Denyusers a --指定拒绝a用户ssh登陆

重启服务生效


例子四:

ssh等效
原理:产生一对密钥,自己持有一个私钥,公钥给对方,需要一对才能解密

ssh-keygen --输入这个命令后,三次回车产生空密码key对

[root@li ~]# ssh-keygen
Generating public/private rsa key pair. --默认是rsa加密方式
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
ad:2d:f9:af:8a:c7:ab:0b:8e:de:47:ed:73:68:f6:b3 root@li.cluster.com


scp /root/.ssh/id_rsa.pub 10.1.1.104:/root/.ssh/authorized_keys--把公钥传给104的机器后,重命令名为authorized_keys

ssh 10.1.1.104 --直接ssh不需要密码了

ssh-keygen -t dsa --可以这样使用dsa的加密方式
ssh-keygen -t rsa --默认的加密方式


--如何多台机向同一台机配置ssh等效性
因为第二台机如果也象上面那样scp过去,会覆盖authorized_keys文件,那么把第二台机产生的id_rsa.pub用vi打开,复制粘到对方的authorized_keys文件里就可以了,或者用追加做 (>>)











-----------------------------------------------------------

linux的日志管理

ls /var/log/ --此目录下很多系统日志都存放在此
/var/log/messages --非常重要的日志文件,几乎所有系统发生的重要错误都会记录在此
/var/log/secure --ssh ftp telnet pop3等有关
/var/log/dmesg --开机时核心检测过程中所产生的信息
/var/log/cron --查看时间任务有关的日志
/var/log/wtmp --用last查看,不能直接cat
/var/log/btmp --用lastb查看,不能直接cat
/var/log/boot --boot相关
/var/log/rpmpkgs --rpm相关
/var/log/maillog --mail相关
/var/log/spooler --news,uucp
/var/log/acpid --高级电源管理

还有一种日志就是每个服务所保存的日志,路径因服务会有所不同
一般是在/var/log/服务名/ 下


/etc/init.d/syslog --系统log服务,打开它才能记录系统日志

yum list |grep log
sysklogd.i386 --相关软件包
logrotate.i386


vim /etc/syslog.conf --配置文件
格式为 : 日志设备(连接符号)日志级别


设备:
auth -- pam产生的日志
authpriv --包括权限,登录相关的信息
cron --时间任务相关的信息,crontab,at
mail --邮件相关的信息
kern --内核产生的信息
uucp --unix to unxi copy 指的是unix系统之间拷贝协议相关的信息
news --新闻组相关的信息
local0 到 local7 --程序自定义的日志设备
mark --syslog服务内部的一些信息,产生一个时间标识
user --用户程序产生的相关信息


日志级别:
debug --调试,产生的日志是最多的一个级别
info --一般信息的日志,最常用
notice --最具有重要性的普通条件的信息
warning或warn --警告级别
err或error --错误级别,阻止某个功能或者模块不能正常工作的信息
crit --严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert --需要马上修改的信息
emerg或panic --内核崩溃等严重错误
none --什么都不记录
--上面的日志级别,从上往下级别从低到高,记录的信息是多到少,级别低的记录的信息包括级别高的


连接符号
. 记录大于等于此等级
.= 只记录等于此等级的信息
.! 不等于此等级,也就是记录此等级之外的信息


# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
--/dev/console指的是一种外接的终端设备,有些封闭主机(没有screen,keyboard,mouse等),可能会需要外接设备连接
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
--记录所有日志类型的info级别的信息到/var/log/messages,除了mail,authpriv,cron的信息
# The authpriv file has restricted access.
authpriv.* /var/log/secure
--记录authpriv的所有级别的信息到/var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
--记录邮件的所有级别的信息到/var/log/maillog,关于减号-的意思为:因为邮件的信息相比于其他的来说是比较大的,所以是采用异步的方式,先存放在内存里,然后按一定的事件触发,或者到达一定的大小写到磁盘,而不是象其他的日志那样,产生了就马上写到磁盘。

# Log cron stuff
cron.* /var/log/cron
--记录时间任务所有级别的信息到/var/log/cron

# Everybody gets emergency messages
*.emerg *
--记录所有日志设备的emerg信息以wall的方式发送给每个登录到系统的人知道
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
--记录uucp,new的crit信息到/var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
--另外把boot messages记录到/var/log/boot.log


格式的写法有两种:
uucp.crit;news.crit
uucp,new.crit
--上面这两种写法是一致


例一:
mail.=info -/var/log/newmaillog
--只记录mail的info级别信息到/var/log/newmaillog

例二:
cron.info;cron.!err /var/log/newcron
--记录时间任务的info级别以上的所有信息(除了err外)到/var/log/newcron



例三:
要实现把sshd服务的日志自定义保存到/var/log/newsshd.log

vim /etc/sshd/sshd_config

syslogFacility LOCAL5 --修改日志为local5


vim /etc/syslog.conf --加上下面一句
local5.* /var/log/newsshd.log

/etc/init.d/sshd restart

/etc/init.d/syslog restart



---------------------------------------



远程系统日志管理
管理多台主机,有时为了方便,可以把多台主机的日志给传到管理机(只一台)上,然后,系统管理员只要在管理机上查看,就可以查到多台主机的日志



管理机的操作:


[root@li ~]# vim /etc/sysconfig/syslog --相关的全局配置文件
# Options to syslogd
# -m 0 disables 'MARK' messages. --默认是关掉了mark信息
# -r enables logging from remote machines --加上-r参数就是打开了远程的日志管理功能
# -x disables DNS lookups on messages recieved with -r --这是当使用远程日志管理时,用-x参数关掉DNS查找功能
# See syslogd(8) for more details
SYSLOGD_OPTIONS="-m 0 -r " --在这里加上-r参数,打开远程日志功能;注意的是-r加在前面或者后面都可以,不要加在-m和0的中间 -m 180 每隔180时间产生一个时间信息

/etc/init.d/syslog restart --重启服务

[root@li ~]# netstat -ntlup |grep sys --加了-r参数后打开了远程日志功能,那么就会多了一个监听端口,为udp的514端口
udp 0 0 0.0.0.0:514 0.0.0.0:* 4252/syslogd


客户机的配置:

例一:
vim /etc/syslog.conf
authpriv.* @10.1.1.35 --把authpriv.*的日志全部传给管理机10.1.1.35

/etc/init.d/syslog restart --重启服务后,就可以在10.1.1.35的管理机上看到客户机的authpriv的日志信息


--远程日志要注意理解的是: 客户机只定义把日志传给谁(这里代表管理机),管理机自己定义保存在哪个日志文件(也是/etc/syslog.conf里定义)
--上面的例子可以看到 客户机定义传给35这台机,35管理机的/etc/syslog.conf里也有 authpriv.* /var/log/secure这一句,意思就是客户端的authpriv.*的信息传送到了管理机的/var/log/secure文件里



例二:
还是客户机的配置
vim /etc/syslog.conf
authpriv.* @li.cluster.com --使用域名的方式定义传给谁

那客户机还要做一个ip与主机名的对应
vim /etc/hosts --加上
10.1.1.35 li.cluster.com




--------------------------------------------------------------------------

关于umask

[root@li test]# umask
0022
mkdir 一个目录 默认创建的目录的权限为777-umask
touch 一个文件 默认创建的文件的权限为666-umask


----------------------------------------------------------------------------


日志轮转 rotate

常见的轮转的日志有:
/var/log/messages
/var/log/cron
/var/log/boot.log
/var/log/maillog
/var/log/secure

vim /etc/logrotate.conf --配置文件


# see "man logrotate" for details
# rotate log files weekly
weekly --默认是一个星期rotate一次

# keep 4 weeks worth of backlogs
rotate 4 --默认保留4个

# create new (empty) log files after rotating old ones
create --roate后,创建一个新的代替

# uncomment this if you want your log files compressed
#compress --默认没有打开日志压缩功能

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d --这表示/etc/logrotate.d目录下的所有配置文件都生效

# no packages own wtmp -- we'll rotate them here
/var/log/wtmp { --针对wtmp单独的配置,这里是绝对路径
monthly --一个月rotate一次,取代上面的全局配置里的一个星期一次
minsize 1M --指定最小大小为1M,才rotate,就算是时间到了,大小没有1M,也不rotate
create 0664 root utmp --定义创建的为属性为0664,属主为root,属组utmp
rotate 1 --保留一个
}


logrotate -vf /etc/logrotate.conf --查看轮转的过程



vim /etc/logrotate.d/syslog


/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron { --对哪些日志文件进行定义
sharedscripts --脚本开始
postrotate --表示rotate结束
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
endscript --脚本结束
}


sharedscripts
presrotate

postrotate
endscript


logger -t 'aa' 'bb' --在日志文件里加上一个标记
[root@li test]# tail -n 1 /var/log/messages
May 8 15:33:02 li aa: bb --可以看到刚才加的标记



logrotate -vf /etc/logrotate.d/syslog --强制rotate,然后查看轮转时日志文件的重命名过程

-f 强制rotate
-v 显示过程


--&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

man logrotate里的帮助

/var/log/messages {
rotate 5
weekly
postrotate
/sbin/killall -HUP syslogd
endscript
}

"/var/log/httpd/access.log" /var/log/httpd/error.log {
rotate 5
mail www@my.org
size 100k
sharedscripts
postrotate
/sbin/killall -HUP httpd
endscript
}

/var/log/news/* {
monthly
rotate 2
olddir /var/log/news/old
missingok
postrotate
kill -HUP ‘cat /var/run/inn.pid‘
endscript
nocompress
}

--&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&


--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

超级守护进程

chkconfig --list |grep xinetd

守护进程分为:
stand alone --指的非xinet下的那些服务
super daemon --指的就是xinetd下的那些服务


super daemon相当于是它下面的所有服务的管理程序,在安全性上更加了一道门


以rsync服务为例
vim /etc/xinetd.d/rsync

service rsync --服务名
{
disable = yes --disable等于yes表示此服务关闭
socket_type = stream --tcp的连线机制
wait = no --不等待,可以同时进行大量连线功能
user = root --用root身份启动服务
server = /usr/bin/rsync --定义你的rsync的服务执行文件的位置
server_args = --daemon --服务参数
log_on_failure += USERID --登录错误时,额外记录你的用户id
}
~

例子一:
实现把ssh拖管到super daemon下管理

man xinetd.conf --写法去这里找帮助

vim /etc/xinetd.d/ssh --新建一个文件,写上下面的内容


service ssh {
disable = no
socket_type =stream
protocol=tcp
wait=no
user=root
server=/usr/sbin/sshd
server_args= -i
}


/etc/init.d/xinetd restart
/etc/init.d/sshd restart

netstat -ntlup
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 8182/xinetd --这时候查看你的端口会发现守护进程为xinetd,不是以前的sshd




例子二:
在上面例子的基础上再加上访问控制
service ssh {
disable = no
socket_type =stream
protocol=tcp
wait=no
user=root
server=/usr/sbin/sshd
server_args= -i
only_from = 10.1.1.0/24 --允许10.1.1.0/24网段访问
no_access =10.1.1.104 --拒绝10.1.1.104访问
}

例子三:
介绍一个super daemon下的一个时间同步的方法
[root@li test]# vim /etc/xinetd.d/time-dgram
disable = no
[root@li test]# vim /etc/xinetd.d/time-stream
disable = no

/etc/init.d/xinetd restart

客户端使用 rdate -s 10.1.1.35 来同步时间




--------------------------------------

tcpwrapper


看程序是否支持tcpwrapper方式

比如说看sshd
[root@li test]# which sshd
/usr/sbin/sshd

[root@li test]# ldd /usr/sbin/sshd |grep wrap
libwrap.so.0 => /lib/libwrap.so.0 (0x00d39000) --有此模块就表示支持


由两个文件来控制
/etc/hosts.allow
/etc/hosts.deny
访问控制机制为先去匹配/etc/hosts.allow,再去匹配/etc/hosts.deny,如果都没有,则都允许



vim /etc/hosts.deny

sshd: 10.1.1.0/255.255.255.0 EXCEPT 10.1.1.104 --拒绝10.1.1.0网段的人ssh访问,除了104外;注意子网掩码不支持/24写法

sshd: all EXCEPT 10.1.1.104















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值