正在加载...
分页: 1/2 第一页 1 2 下页 最后页 [ 显示模式: 摘要 | 列表 ]

不用重启系统关闭SeLinux

[ 2009/02/03 20:26 | by selboo ]
selinux简介

      SElinux 在linux内核级别上提供了一个灵活的强制访问控制系统(MAC),这个强制访问控制系统是建立在自由访问控制系统(DAC)之上的。
DAC是指系统的安全访问控制都是由系统管理员root自由管理的,不是系统强制行为
MAC运行的时候,比如一个应用程序或者一个线程以某个用户UID或者SUID运行的时候同样对一些其他的对象拥有访问控制限制,比如文件,套接子(sockets)或者其他的线程

      通过运行SElinux MAC内核可以保护系统不受到恶意程序的侵犯,或者系统本身的bug不会给系统带来致命影响(把影响限定在一定范围内)

      SElinux为每一个用户,程序,进程,还有文件定义了访问还有传输的权限。然后管理所有这些对象之间的交互关系

      对于SELinux设定的对象全限是可以根据需要在安装时候规定严格程度,或者完全禁用
在大多数情况下,SElinux对于用户来说是完全透明的,普通用户根本感觉不到Selinux的存在,只有系统管理员才需要对这些用户环境,以及策略进行考虑。这些策略可以按照需要宽松的部署或者应用严格的限制,Selinux提供了非常具体的控制策略,范围覆盖整个linux系统

      比如,当一个对象如应用程序要访问一个文件对象,内核中的控制程序检查访问向量缓存(AVC),从这里寻找目标和对象的权限,如果在这里没有发现权限定义,则继续查询安全定义的上下关联,以及文件权限,然后作出准许访问以及拒绝访问的决定。如果在var/log/messages出现avc: denied信息,则表明访问拒绝。
目标和对象通过安装的策略来决定自身的安全关联,同时这些安装的策略也负责给系统产生安全列表提供信息。
除了运行强制模式以外,SELinux可以运行在许可模式,这时候,检查AVC之后,拒绝的情况被记录。Selinux不强制使用这种策略.

下面介绍关闭selinux的方法
Redhat系统,修改/etc/sysconfig/selinux文件:
#SELINUX=enforcing
SELINUX=disabled

查看系统设置selinux开启的情况:
[root@localhost ~]# getenforce

重启系统生效,如果不想重启系统,使用命令
[root@localhost ~]# setenforce 0

ssh的企业级应用

[ 2008/09/28 21:55 | by selboo ]
一般在企业应用中,如果要远程连接到服务器,一般的做法都是先VPN连接到客户内网,然后再SSH到远程服务器,这样数据远程传输不仅有VPN的保护,还有SSH的保护,使数据传输更加安全。我们这里着重阐述SSH的认证配置。

SSH的认证不仅可以通过口令,还可以通过证书,当然还可以使用证书和口令相结合的认证方式,下面我将分别阐述各种认证的配置方法:

1.通过口令认证

第一步:安装相关软件包
使用命令 rpm -qa | grep openssh查看是否安装相关软件包。
[root@server ~]# rpm -qa | grep openssh
openssh-server-4.3p2-16.el5
openssh-4.3p2-16.el5
openssh-clients-4.3p2-16.el5
openssh-askpass-4.3p2-16.el5
如果没有,则安装以上软件包,当然也可以下载源码包,进行编译安装,具体方法这里就不多说了,不清楚的自加google一下。

第二步:配置SSH

#服务器端配置 /etc/ssh/sshd_config
#只考虑协议版本2
/usr/local/etc/ssh/sshd_config
#全局配置
VersionAddendum TecZm-20050505 #在telnet ip 22时只能看出openssh的版本,看不出OS
Protocol 2 #使用协议版本2
Port 22 #sshd监听22端口
ListenAddress 192.168.7.1 #sshd只监听目标ip为192.168.7.1的请求
AllowGroups wheel myguest #允许wheel组和myguest组的用户登录
AllowUsers teczm authen@192.168.8.5 #允许来自以上组的teczm用户和authen用户登录,
#且authen用户只能从主机192.168.8.5登录
#DenyGroups #拒绝登录的组,参数设置和AllowGroups一样
#DenyUsers #拒绝登录的用户,参数设置和AllowUsers一样
#AllowTcpForwarding yes #是否转发的TCP包都被允许。默认是 ``yes''。
LoginGraceTime 60 #60秒内客户端不能登录即登录超时,sshd切断连接。
KeyRegenerationInterval 1800 #1800秒(30分钟)后自动重新生成服务器的密匙。
MaxStartups 3 #设置同时发生的未验证的并发量,即同时可以有几个
UseDNS no #不使用DNS查询客户端。
PermitRootLogin no #不允许root登录,root可由wheel组用户登录后su。
X11Forwarding no #禁止用户运行远程主机上的X程序。
UseLogin yes #禁止X11Forwarding
#认证配置(口令认证、PAM认证、非对称密钥认证任选其一)
#口令认证
PubkeyAuthentication no #不使用非对称密钥认证
PasswordAuthentication yes #使用口令认证
PermitEmptyPasswords no #不允许使用空密码的用户登录
#PAM认证
PasswordAuthentication no #不使用口令认证
UsePAM #使用pam认证
ChallengeResponseAuthentication yes #允许挑战应答方式
#非对称密钥认证
PasswordAuthentication no #不使用口令认证
PubkeyAuthentication yes #使用非对称密钥认证
AuthorizedKeysFile .ssh/authorized_keys #用户认证使用的公钥

一般情况下,默认的SSH配置文件就可以满足口令认证需要。

第三步:开启SSH服务

使用命令开启当前的SSH服务:/etc/init.d/sshd start
使用命令使其开机自动运行:chkconfig sshd on

2.通过证书认证

在以上配置的基础上,为了使认证过程更加安全,还可以使用非对称密钥加密证书技术,步骤和说明如下:
第一步:生成非对称密钥
[root@server ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):#私钥存储目录
Enter passphrase (empty for no passphrase):password#私钥的认证密码
Enter same passphrase again:password#确认私钥的认证密码
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:
19:49:2d:57:4d:a6:43:9b:23:f5:75:bd:db:9c:8a:21 root@server.redhat.com

第二步:拷贝公钥到服务器
[root@server ~]# ssh-copy-id root@192.168.20.26
The authenticity of host '192.168.20.26 (192.168.20.26)' can't be established.
RSA key fingerprint is 4c:73:36:e0:21:6d:0c:08:16:66:14:a1:30:26:cb:08.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.20.26' (RSA) to the list of known hosts.
root@192.168.20.26's password:sys_password#系统密码
Now try logging into the machine, with "ssh 'root@192.168.20.26'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

[root@server ~]#

第三步:测试非对称认证
[root@server ~]# ssh 192.168.20.26
Enter passphrase for key '/root/.ssh/id_rsa':password#私钥的认证密码
Last login: Tue Jul 22 09:22:40 2008 from 192.168.20.26
[root@server ~]#

3.证书和口令结合认证

在第二种方法中,如果默认非对称密钥的口令为空,则是只通过证书认证,如果设置了非对称密钥口令,则是证书和口令结合认证,当然这里的口令不是系统口令,是嵌套在密钥中的另外一个口令,可以起到双重保护的作用。

补充:在应用ssh证书认证的过程中,还有两个命令可以应用,
ssh-agent bash  #在bash环境下启用ssh代理服务
ssh-add   #将ssh密钥添加到内存中
这两个命令结合使用的作用就是避免每次通过SSH登录服务器时重复输入口令,当然这种也会造成一些不安全的因素,所以一般不使用。
本文出自 51CTO.COM技术博客

linux lsof命令详解

[ 2008/09/25 17:54 | by selboo ]
lsof简介
      lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。

lsof输出信息含义
      在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。

COMMAND   &nb

linux ssh登陆安全设置

[ 2008/09/11 13:16 | by selboo ]

linux ssh登陆安全设置

目前大多数linux 用户远程登陆首先采用ssh,因些多点时间来关心SSH的使用方法是服务器应用的第一步。

1.安装 在安装LINUX系统时请注意选装SSH,大部份系统都会默认安装。在初步配置防火墙时,请注意把SSH默认的22端口打开。当然,用户也可以更改22端口到其它端口。

2.设置 

    第一步:在linux中先添加一个普通用户
    # adduser YouName -p YouPassWord
    在系统中添加一个名为 YouName 的用户 密码为 YouPassWord

    第二步:测试新用户可用性
    用putty 等SSH 工具测试 第一步中添加的用户是否可用
    如果没有工具,可以直接在LINUX 中键入 ssh  192.168.0.10  -l YouName (假定你的服务器IP是192.168.0.10),第一次使用,输入yespassword:后输入密码。如果没有报错,下一行直接是 $,中间没有其它行。

  第三步:修改ssh配置文件
    vi  /etc/ssh/sshd_config
    按esc  键入 /PermitRootLogin      
    光标会自动找到这一行
    把#PermitRootLogin  yes 更成为 PermitRootLogin  no
    注意 前面的 # 要去了,后面的yes 要心为no

    第四步 重启ssh
    /etc/rc.d/init.d/sshd restart

    第五步 试用
    用putty 等SSH 工具测试 第一步中添加的用户是否可用.如果没有工具,可以直接在LINUX 中键入 ssh  192.168.0.10  -l YouName (假定你的服务器IP是192.168.0.10),第一次使用,输入yespassword:后输入密码。如果没有报错,下一行直接是 $,中间没有其它行。
  现在用普通用户"$"转入root  

    $ su
    输入root 密码 进入即可

3.使用

  以后,每次进入都先用普通用户进入,再换成root用户。这样防止了黑客直接猜root密码。如果是远程修改,请一定要注意步骤。最好按上面的方法一步步来

附:更改密码命令 
    passwd YouName    
    输入新的密码 两次

Linux安全工具-Snort

[ 2008/08/05 12:15 | by selboo ]

      snort是一款最重要的开源网络入侵检测系统,基本上意味着它留意坏的通讯并给你提供警告,它始终保存你读取原始tcpdump内容的输出,Debian用户可以通过apt-get install snort来获取它,默认情况下,它将网络接口设置为混杂模式,也就是说,所有在线路上的数据包都被检查。

      如果你正在尝试保护一个网络,通常你的snort传感器应该放在主路由器的SPAN端口上,这样它就能查看到所有经过那个路由器的网络通讯内容。(SPAN端口提供了所有经过路由器的通讯的一个总和)如果你正在尝试保护一个单独的主机,只需要在主机上简单地按照它即可。

      Snort依靠一个规则数据库来检查数据包,/etc/snort/rules/bad-traffic.rules中有一个例子标记出了一个tcp端口号为0的无效通讯:  

alert tcp $EXTERNAL_NET any <> $HOME_NET 0
(msg:"BAD-TRAFFIC tcp port 0 traffic"; flow:stateless;
  classtype:misc-activity; sid:524; rev:8;)

      snort将它的警告信息记录到一个文件中,典型地是/var/log/snort/alert,看起来象是这样,表明一个策略规则已经生效,因为来自Google Desktop用户代理的web通讯被观察到了:

[**] [1:2002801:3] BLEEDING-EDGE WEB
Google Desktop User-Agent Detected
[**]
[Classification: Potential Corporate Privacy
Violation] [Priority: 1]
11/02-11:27:58.855143 10.0.0.82:3449 ->
66.35.250.209:80
TCP TTL:128 TOS:0x0 ID:35935 IpLen:20
DgmLen:399 DF
***AP*** Seq: 0x847921EE  Ack: 0x1A7D5C20
Win: 0xFFFF  TcpLen: 20
[Xref => http://news.com.com/2100-1032_3-6038197.html]
Snort也能被配置为记录匹配tcpdump格式的数据包,如下:
# log_tcpdump: log packets in binary tcpdump format
# -------------------------------------------------
# The only argument is the output file name.
#
output log_tcpdump: tcpdump.log

      当上面的选项生效后,snort将记录与tcpdump文件匹配的数据包并将其保存到警告文件中,这样就允许你更容易地判断哪个警告是需要担心的哪个警告是错误的警告,你可以象下面这样来阅读它们:

# tcpdump -r /var/log/snort/tcpdump.log.1161106015
reading from file /var/log/snort/
↪tcpdump.log.1161106015, link-type
EN10MB (Ethernet)
06:37:50.839942 IP 10.0.0.82.1410 >
10.10.218.95.www: P
2352360050:2352360119(69) ack 1723804156 win 65535
06:53:07.792492 IP 10.0.0.82.1421 >
10.10.218.95.www: P
2124589760:2124589829(69) ack 2684875377 win 65535
...

      如果你象查看数据包的内容,使用-X参数,tcpdump –X –r /var/log/snort/tcpdump.log.1161106015,snort也有一些功能来中断基于规则匹配(灵活的响应)的连接,也有许多第三方的规则,可以在http://www.bleedingthreats.net/找到
分页: 1/2 第一页 1 2 下页 最后页 [ 显示模式: 摘要 | 列表 ]