AIX操作系统安全配置手册.docx
《AIX操作系统安全配置手册.docx》由会员分享,可在线阅读,更多相关《AIX操作系统安全配置手册.docx(36页珍藏版)》请在冰豆网上搜索。
AIX操作系统安全配置手册
AIX操作系统安全配置手册
许新新***************.com
2011-6-8版本号:
V1.0
1.引言
AIX作为IBMPower系列开放平台服务器的专用操作系统,属于UNIX操作系统的一个商业版本。
作为企业级服务器的操作平台,安全性是AIX必备的一个重要特性。
由于我们的小型机上往往运行着客户的核心生产业务,因此对于系统的安全设置往往会有着严格的要求。
2.用户管理
AIX是一个多用户操作系统,多个用户要在同一个系统环境中协同工作,用户访问权限的设置、用户作业的相互隔离、用户系统资源的限制,都是AIX操作系统不可或缺的功能。
2.1用户账号安全设置
为了保证整个操作系统的安全,每个用户账号必须满足如下安全设置要求:
(1)每个系统管理员应该设置单独的账号,不允许多个管理员共用一个账号;
(2)root用户不允许直接登录,必须通过其他用户登录后,通过su命令获得root用户权限;
(3)禁用或者删除不使用的系统账号;
(4)设置必要的密码规则。
AIX操作系统在安装成功后,默认就会创建一些用户,用户的基本信息保存在/etc/passwd文件中。
其中root和bin用户是不可以删除的,其他用户都可以安全地删除或者屏蔽掉,以避免这些系统默认用户账号由于存在弱口令等问题,被黑客所攻击。
其中第二列中“!
”表示该用户已经设置了密码,“*”表示该用户还没有设置密码。
#cat/etc/passwd
root:
!
:
0:
0:
:
/:
/usr/bin/ksh
daemon:
!
:
1:
1:
:
/etc:
bin:
!
:
2:
2:
:
/bin:
sys:
!
:
3:
3:
:
/usr/sys:
adm:
!
:
4:
4:
:
/var/adm:
uucp:
!
:
5:
5:
:
/usr/lib/uucp:
guest:
!
:
100:
100:
:
/home/guest:
nobody:
!
:
4294967294:
4294967294:
:
/:
lpd:
!
:
9:
4294967294:
:
/:
lp:
*:
11:
11:
:
/var/spool/lp:
/bin/false
invscout:
*:
6:
12:
:
/var/adm/invscout:
/usr/bin/ksh
snapp:
*:
200:
13:
snapploginuser:
/usr/sbin/snapp:
/usr/sbin/snappd
ipsec:
*:
201:
1:
:
/etc/ipsec:
/usr/bin/ksh
nuucp:
*:
7:
5:
uucploginuser:
/var/spool/uucppublic:
/usr/sbin/uucp/uucico
pconsole:
*:
8:
0:
:
/var/adm/pconsole:
/usr/bin/ksh
esaadmin:
*:
10:
0:
:
/var/esa:
/usr/bin/ksh
#
AIX操作系统在安装的时候,会默认建立一些用户组,用户组的基本信息保存在/etc/group文件中,其中system和bin组是不可以删除的。
#cat/etc/group
system:
!
:
0:
root,pconsole,esaadmin
staff:
!
:
1:
ipsec,esaadmin,sshd,user1,oracle
bin:
!
:
2:
root,bin
sys:
!
:
3:
root,bin,sys
adm:
!
:
4:
bin,adm
uucp:
!
:
5:
uucp,nuucp
mail:
!
:
6:
security:
!
:
7:
root
cron:
!
:
8:
root
printq:
!
:
9:
lp
audit:
!
:
10:
root
ecs:
!
:
28:
nobody:
!
:
4294967294:
nobody,lpd
usr:
!
:
100:
guest
perf:
!
:
20:
shutdown:
!
:
21:
lp:
!
:
11:
root,lp
invscout:
!
:
12:
invscout
snapp:
!
:
13:
snapp
ipsec:
!
:
200:
pconsole:
!
:
14:
pconsole
#
2.2删除一个用户账号
要删除或者禁用一个用户账号,可以使用三个办法:
(1)使用rmuser命令删除用户,格式为rmuser–p[user_name]。
这会删除/etc/passwd和/etc/group文件中关于该用户的内容,同时删除
/etc/security/passwd文件中关于该用户的内容。
但是该用户的home目录并不会被删除,需要使用rmdir的命令去删除该用户的home目录。
(2)编辑/etc/passwd文件,在需要删除的用户名前加上“#”注释符。
建议使用第二种方法,因为第二种方法只是注释掉需要删除的用户,此后该用户将无法登录系统,但与该用户相关的信息并不删除,当需要恢复该用户的登录功能时,只需要把/etc/passwd文件中该用户名前的“#”注释符删除即可。
(3)编辑/etc/passwd文件,把需要删除的用户的默认shell设置为/bin/false。
/bin/false是一个系统空文件,并不是有效的shell程序,因此当该用户登录系统后,由于无法打开shell而登录失败。
2.3禁止root用户直接登录
禁止root用户直接登录系统,必须使用普通用户登录后,使用su命令切换到root用户权限
设置方法是编辑/etc/security/user配置文件中的login、rlogin和su属性。
在该文件的头部,详细描述了每一个参数的含义。
其中login属性是设置是否允许用户通过本地console登录,本地console包括显示器或者串口。
rlogin属性是设置是否允许用户远程登录,远程登录方式包括rlogin和telnet,不包括SSH等其他远程登录方式。
su属性是设置是否允许该用户通过su命令获得其他用户的权限。
*loginDefineswhethertheusercanlogin.
*Possiblevalues:
trueorfalse.
*rloginDefineswhethertheuseraccountcanbeaccessedbyremote
*logins.Commandsrloginandtelnetsupportthisattribute.
*Possiblevalues:
trueorfalse.
*suDefineswhetherotheruserscanswitchtothisuseraccount.
*Commandsusupportsthisattribute.
*Possiblevalues:
trueorfalse.
2.4用户登录审计
在/var/adm/wtmp文件中记录了所有用户的登录时间、登录方式、源IP地址信息。
而在/var/adm/sulog文件中,记录了使用su命令切换用户权限的时间点。
wtmp文件不是纯文本文件,需要使用who命令来查看。
sulog文件是纯文本文件,可以使用cat命令直接查看。
结合/var/adm/wtmp文件和/var/adm/sulog文件的输出,就可以确切地判断出在某个时间段是谁获得了root操作权限。
启用EXTENDED_HISTORY=ON环境变量,记录用户的命令行操作。
在每个用户的$HOME目录下都有一个.sh_history的文本文件,记录了该用户的所有命令行操作。
默认情况下,EXTENDED_HISTORY环境变量处于OFF状态。
因此在.sh_history文件中只包含执行的命令,不包含时间点。
#cat.sh_history
whoami
exit
exit
passwd
errpt
ioscan
su-
whoami
sar
sar3
su-
whoami
whereissar
sar3
……….
将环境变量EXTENDED_HISTORY设置为ON后,.sh_history文件中就会包含该用户所执行的命令已经时间点。
使用命令fc–t-1000可以查看本用户最近1000条执行的命令。
#fc-t-1000
212011/04/0914:
45:
07:
:
vintp.conf
222011/04/0914:
46:
21:
:
catntp.conf
232011/04/0914:
46:
35:
:
startsrc-sxntpd
242011/04/0914:
46:
46:
:
lssrc-a|grepntp
252011/04/0914:
46:
58:
:
lssrc-lsxntpd
262011/04/0914:
47:
21:
:
set-ovi
272011/04/0914:
47:
24:
:
lssrc-lsxntpd
282011/04/0914:
47:
26:
:
lssrc-lsxntpd
292011/04/0914:
47:
27:
:
lssrc-lsxntpd
302011/04/0914:
47:
29:
:
lssrc-lsxntpd
312011/04/0914:
47:
30:
:
lssrc-lsxntpd
322011/04/0914:
47:
32:
:
lssrc-lsxntpd
332011/04/0914:
47:
34:
:
lssrc-lsxntpd
342011/04/0914:
47:
35:
:
lssrc-lsxntpd
352011/04/0914:
47:
36:
:
lssrc-lsxntpd
362011/04/0915:
28:
53:
:
lssrc-lsxntpd
372011/04/0915:
29:
02:
:
lssrc-lsxntpd
382011/04/0915:
31:
05:
:
vintp.conf
……..
每个用户的$HOME目录下还有一个smit.log文件,这个文件记录了该用户通过smit菜单所做的所有操作。
这是一个文本文件,通过VI文本编辑器可以直接查看和修改。
2.5密码规则设置
AIX支持对密码的复杂度、重复次数、生命期等进行限制,以提高密码被破解或者盗取的难度。
AIX最多支持8位密码,多于8位之后的内容将被自动忽略。
在/etc/security/user文件存在设置密码规则的参数。
logintimes:
定义一个用户在某一时间段内允许登录
pwdwarntime:
定义在密码到期前多少天提醒用户密码即将到期
account_locked:
定义一个用户是否被锁定
loginretries:
定义连续多少次输入错误密码后锁定该用户账号
histexpire:
定义相同密码在多少周内不允许重复使用
histsize:
定义相同密码在多少次内不允许重复使用
minage:
定义密码的最少生命期,单位为周,即限制用户频繁更改密码。
maxage:
定义密码的最大生命期,单位为周,即强迫用户定期修改密码。
maxexpired:
定义密码超过最大生命期后,多少周内允许用户修改密码。
如果在此期间用户没有修改密码,则该用户账号被锁定。
minalpha:
定义密码中最少包含多少个数字和字母(0-9,a-z,A-Z)。
minother:
定义密码中最少包含多少个特殊字符。
minlen:
定义密码的最小长度。
mindiff:
定义新密码与旧密码间至少有多少个字符是不同的。
maxrepeats:
定义同一个字符在密码中可以最多重复出现多少次。
dictionlist:
定义密码字典,密码字典为一个文本文件,需要用户来编辑该密码字典,出现在密码字典中的条目将不允许作为密码使用。
pwdchecks:
定义外部的密码限制方式。
建议的密码规则参数如下:
minlen=6
minalpha=1
mindiff=1
minother=1
pwdwarntime=5
maxage=13
histsize=5
loginretries=6
2.6文件和目录的默认访问权限
当用户创建一个文件或者创建一个目录时,AIX会自动给该文件或者目录赋予默认的访问权限,为了提高系统安全,建议设置文件的默认访问权限为600,目录的默认访问权限为700,即只允许属主用户读、写和执行,对于其他用户默认禁止所有权限。
这需要修改/etc/security/user文件的umask参数。
默认umask参数值为022,
umask是使用八进制数据代码设置的,。
目录的默认访问权限等于八进制代码777减去umask值;文件的默认权限等于八进制代码666减去umaks值。
要使默认访问权限为700,则需要修改/etc/security/user文件的umask值为077.
2.7用户错误登录次数过多导致账号被锁定
当设置了用户密码规则loginretries,当用户的连续错误登录次数累计到该值后,该用户就会被自动锁定,必须由root用户来解锁。
用户的错误登录信息保存在文件/etc/security/lastlog文件中,
time_last_login:
该用户上次成功登录时间
tty_last_login:
该用户上次成功登录的端口
host_last_login:
该用户上次成功登录的源地址
unsuccessful_login_count:
该用户连续失败的登录次数,当用户登录成功后该值即清0
time_last_unsuccessful_login:
该用户上次失败的登录时间
tty_last_unsuccessful_login:
该用户上次失败的登录端口
host_last_unsuccessful_login:
该用户上次失败登录的源地址
root:
time_last_login=1307599235
tty_last_login=ftp
host_last_login=:
:
ffff:
9.125.1.251
unsuccessful_login_count=0
time_last_unsuccessful_login=1307599199
tty_last_unsuccessful_login=ftp
host_last_unsuccessful_login=:
:
ffff:
9.125.1.251
如果一个用户已经因为连续失败登录次数过多被锁定,那么可以使用root用户直接修改/etc/security/lastlog文件,将unsuccessful_login_count修改为0即可。
2.8查看密码的上次修改时间
在系统文件/etc/security/passwd中记录有每个用户登陆密码的加密形式,以及上次修改密码的时间,我们以root为例:
root:
password=hVvR/QGnSNKlE
flags=
lastupdate=1200982154
此处,lastupdate为上次密码修改时间,以epochtime表示。
Epochtime是从Epoch(新纪元时间,传说中的标志Unix时代开端的那个拂晓)开始计算起,单位为秒,Epoch则是指定为1970年一月一日凌晨零点零分零秒,格林威治时间。
我们可以通过下面的命令来转换epochtime:
#perl-le'printscalarlocaltime1200982154'
TueJan2206:
09:
142008
所以,root用户上次修改密码是在2008年1月22日上午06:
09:
14。
使用命令date+"%s",就可以将当前日期转换为从1970年1月1日0:
00开始的秒数。
注意:
AIX5.3版本才有此参数
$date+"%s"
1290988961
$date
MonNov2908:
02:
46BEIST2010
$perl-le'printscalarlocaltime1290988961'
MonNov2908:
02:
412010
$
也可以使用chsec命令手动修改用户的上次密码修改时间戳,而无需更改密码。
命令格式如下:
chsec-f/etc/security/passwd-sroot-alastupdate=1307665547
即修改/etc/security/passwd文件中root用户段的lastupdate属性,设置值为1307665547。
2.9chpasswd和pwdadmin命令的使用
使用passwd命令来修改用户密码,进入的是交互模式。
对于希望使用脚本来批量修改或定时修改密码的操作,使用chpasswd命令会更加快捷,因为这个命令不要交互操作,也不需要重复输入两次相同密码
使用chpasswd命令修改用户密码的命令格式为:
echo"new_password"|chpasswd
例如#echo"ftp:
passw0rd"|chpasswd,就是给用户ftp设置密码为passw0rd。
pwdadmin命令用来查看和设置某个用户的密码属性。
例如要查看一个用户的密码属性,可以使用命令pwdadmin–q。
#pwdadm-qftp
ftp:
lastupdate=1307634431
flags=ADMCHG
#
可以看到ftp用户的密码修改时间为1307634431;同时flags=ADMCHG说明该用户密码为root管理员所设置,当该ftp用户第一次登录系统时,会强制用户修改密码。
AIXVersion5
CopyrightIBMCorporation,1982,2007.
login:
ftp
ftp'sPassword:
[compat]:
3004-610Youarerequiredtochangeyourpassword.
Pleasechooseanewone.
ftp'sNewpassword:
在用chpasswd命令设置用户密码时,可以加上-c参数,这样就会去掉flags=ADMCHG参数,当该用户第一次登录系统时就不会强制修改密码了。
#echo"ftp:
abcd1234"|chpasswd-c
#pwdadm-qftp
ftp:
lastupdate=1307635016
#
3.网络安全
3.1安装SSH文件集并设置
在AIX的缺省安装情况下,只安装了telnet服务,用于对系统的远程管理。
如果需要使用更加安全的SSH服务,则需要另外安装openssl和openssh软件包。
openssl文件位于《AIXToolboxforLinuxApplications》安装光盘中,也可以从AIXWebDownloadPackPrograms页面下载,下载地址:
openssh文件位于《AIX5LV5.3ExpansionPack》安装光盘中,也可以从sorceforge开源软件网站下载:
默认情况下,ssh软件包安装之后会自动随AIX操作系统启动。
即AIX重启后,自动启动ssh服务。
使用命令lssrc–gssh来查看sshd后台守护进程是否启动。
默认情况下,AIX使用SSH2协议。
安装ssh成功后,不需要进行额外的配置,其他主机就可以通过SSH2协议访问22端口来远程登录。
要实现禁止root用户通过SSH直接登录,需要编辑SSH配置文件/etc/ssh/sshd_config,找到“#PermitRootLoginyes”行,去掉该行前面的注释符“#”,并将yes修改为no。
需要重新启动sshd服务,才能使新的配置文件生效
#stopsrc-ssshd
#startsrc-ssshd
此时root用户将不能直接SSH登录,必须首先使用普通用户登录,然后“su-”转为root用户权限。
此外,我们还可以编辑/etc/ssh/sshd_config文件的下列参数,实现安全配置。
Protocol2:
使用ssh2版本
X11Forwardingyes:
允许窗口图形传输使用ssh加密
IgnoreRhostsyes:
完全禁止SSHD使用.rhosts文件
RhostsAuthenticationno:
不设置使用基于rhosts的安全验证
RhostsRSAAuthenticationno:
不设置使用RSA算法的基于rhosts的安全验证
HostbasedAuthenticationno:
不允许基于主机白名单方式认证
PermitRootLoginno:
不允许root登录
PermitEmptyPasswordsno:
不允许空密码
Banner/etc/motd:
设置ssh登录时显示的banner
3.2TELNET和SSH的安全性比较
TELNET协议使用明文(ASCII码)来传递数据,因此只要使用TCPIP嗅探工具就可以从telnet的数据包中找到用户名和密码。
AIX中自带的iptrace工具就可以实现这个功能。
iptrace使用比较简单,可以针对特定的网络接口、特定的源地址、目的地址、端口进行数据包的抓取。
使用命令:
iptrace-a-s10.60.28.47-b-ptelnettelnet.trace1
参数的含义是:
忽略arp数据包,只抓取与10.60.28.47相关的数据包(抓包在IP为10.60.28.45的机器,telnet客户端来自10.60.28.47),-p参数指定了只监听telnet服务的端口,当然这里也可以直接用端口号23代替telnet,最后把生成的日志文件保存为telnet.trace1。
接下来,我们去10.60.28.47上运行telnet客户端连接10.60.28.45
几秒钟后,停掉iptrace进程,命令为“kill-15#iptrace进程号”。
然后把生成的日志文件转换为文本文件,命令为:
ipreport-sntelnet.trace1>telnet.report1
PacketNumber86
ETH:
====(70bytestransmittedoninterfaceen0)====13:
18:
40.399148726
ETH:
[00:
14:
5e:
5f:
66:
82->00:
14:
5e:
d1:
4a:
36]type800(IP)
IP:
(AIX33_bt1)
IP:
IP:
ip_v=4,ip_hl=20,ip_tos=0,ip_len=56,ip_id=1814,ip_off=0DF
IP:
ip_ttl=60,ip_sum=dc04,ip_p=6(TCP)
TCP: