当前位置:文档之家› aix安全加固培训内容

aix安全加固培训内容

?1 系统知识简介 1.1 AIX的版本号 AIX的版本号的格式通常为AIX x.x.x.x.例如: AIX 4.3.3.1.其代表意义分别为: 操作系统版本号(version).发行版号(release).改进版号(modification).修正版号(fix) 1.2 检查文件系统 df 1.3 检查用户登录状况 last 1.4 系统性能检查 vmstat iostat监控磁盘的利用率(tm_act字段) ps 1.5 查看操作系统中是否安装了某个补丁程序 lslpp -Bl Uxxxxxx Uxxxxxx 是补丁程序的ID. 1.6 安装补丁 2 系统用户管理 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:snapp login user:/usr/sbin/snapp:/usr/sbin/snappd ipsec:*:201:1::/etc/ipsec:/usr/bin/ksh nuucp:*:7:5:uucp login user:/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命令获得其他用户的权限。 * login Defines whether the user can login. * Possible values : true or false. * rlogin Defines whether the user account can be accessed by remote * logins. Commands rlogin and telnet support this attribute. * Possible values: true or false. * su Defines whether other users can switch to this user account. * Command su supports this attribute. * Possible values: true or false. 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 sar 3 su - whoami whereis sar sar 3 . 将环境变量EXTENDED_HISTORY设置为ON后,.sh_history文件中就会包含该用户所执行的命令已经时间点。 使用命令fc ?t -1000可以查看本用户最近1000条执行的命令。 #fc -t -1000

21 2011/04/09 14:45:07 :: vi ntp.conf 22 2011/04/09 14:46:21 :: cat ntp.conf 23 2011/04/09 14:46:35 :: startsrc -s xntpd 24 2011/04/09 14:46:46 :: lssrc -a|grep ntp 25 2011/04/09 14:46:58 :: lssrc -ls xntpd 26 2011/04/09 14:47:21 :: set -o vi 27 2011/04/09 14:47:24 :: lssrc -ls xntpd 28 2011/04/09 14:47:26 :: lssrc -ls xntpd 29 2011/04/09 14:47:27 :: lssrc -ls xntpd 30 2011/04/09 14:47:29 :: lssrc -ls xntpd 31 2011/04/09 14:47:30 :: lssrc -ls xntpd 32 2011/04/09 14:47:32 :: lssrc -ls xntpd 33 2011/04/09 14:47:34 :: lssrc -ls xntpd 34 2011/04/09 14:47:35 :: lssrc -ls xntpd 35 2011/04/09 14:47:36 :: lssrc -ls xntpd 36 2011/04/09 15:28:53 :: lssrc -ls xntpd 37 2011/04/09 15:29:02 :: lssrc -ls xntpd 38 2011/04/09 15:31:05 :: vi ntp.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为上次密码修改时间,以epoch time表示。 Epoch time是从Epoch(新纪元时间,传说中的标志Unix时代开端的那个拂晓)开始计算起,单位为秒,Epoch则是指定为1970年一月一日凌晨零点零分零秒,格林威治时间。我们可以通过下面的命令来转换epoch time: #perl -le 'print scalar localtime 1200982154' Tue Jan 22 06:09:14 2008 所以,root用户上次修改密码是在2008年1月22日上午06:09:14。 使用命令 date +"%s",就可以将当前日期转换为从1970年1月1日0:00开始的秒数。 注意:AIX5.3版本才有此参数 $ date +"%s" 1290988961 $ date Mon Nov 29 08:02:46 BEIST 2010 $ perl -le 'print scalar localtime 1290988961' Mon Nov 29 08:02:41 2010 $ 也可以使

用chsec命令手动修改用户的上次密码修改时间戳,而无需更改密码。 命令格式如下: chsec -f /etc/security/passwd -s root -a lastupdate=1307665547 即修改/etc/security/passwd文件中root用户段的lastupdate属性,设置值为1307665547。 2.9 chpasswd和pwdadmin命令的使用 使用passwd命令来修改用户密码,进入的是交互模式。对于希望使用脚本来批量修改或定时修改密码的操作,使用chpasswd命令会更加快捷,因为这个命令不要交互操作,也不需要重复输入两次相同密码 使用chpasswd命令修改用户密码的命令格式为: echo "。 #pwdadm -q ftp ftp: lastupdate = 1307634431 flags = ADMCHG # 可以看到ftp用户的密码修改时间为1307634431;同时flags=ADMCHG说明该用户密码为root管理员所设置,当该ftp用户第一次登录系统时,会强制用户修改密码。 AIX Version 5 Copyright IBM Corporation, 1982, 2007. login: ftp ftp's Password: [compat]: 3004-610 You are required to change your password. Please choose a new one. ftp's New password: 在用chpasswd命令设置用户密码时,可以加上-c参数,这样就会去掉flags=ADMCHG参数,当该用户第一次登录系统时就不会强制修改密码了。 #echo "ftp:abcd1234" | chpasswd -c #pwdadm -q ftp ftp: lastupdate = 1307635016 # 3 系统安全管理 3.1 设置用户终端长时间不操作后自动退出 通过设置操作系统的TMOUT环境变量可以使终端在连续若干秒钟不活动之后,自动退出。从而避免由于终端无人照管被非法操作。 AIX中有三个环境变量设置文件,分别是/etc/profile,/etc/environment和$HOME/.profile。其中/etc/profile和/etc/environment为全局配置文件,对所有用户都生效;$HOME/.profile只对该用户生效。 当一个用户登录AIX系统后,首先生效/etc/profile中的所有环境变量,然后再生效/etc/environment中的所有环境变量,最后生效的是用户自己的$HOME/.profile文件中的环境变量。如果对同一个环境变量,三个配置文件中有不同的赋值时,后一个文件将覆盖前一个文件的赋值。也即$HOME/.profile的优先级高于/etc/environment文件,/etc/environment文件的优先级高于/etc/profile文件。 特别需要注意的是,/etc/environment文件只能接受赋值语句,格式为“变量=值”,不能包含其他任何格式的语句。由于/etc/environment是全局变量,对所有用户都生效,当这个文件中有非法语句时,将导致所有用户都无法登陆系统。此时只

能使用安装光盘引导进入维护模式,修复/etc/environment文件。 ################################################################ # System wide environment file. This file should only contain # 1. comment lines which have a # in the first column, # 2. blank lines, and # 3. Lines in the form name=value. # # WARNING: This file is only for establishing environment variables. # Execution of commands from this file or any lines other # than specified above may cause failure of the initialization # process. 对于图形界面CDE登陆的用户,系统默认是30分钟无活动后自动退出图形界面并锁屏。 3.2 设置NTP网络时钟协议 在AIX中可以用启动xntpd 守护进程的方法来实现应用环境中多台机器的系统时间的统一。xntpd 是一个关于网络时间协议的守护进程,它遵循了因特网时间服务器的通用标准。在启动 xntpd 时, xntpd 会读取 /etc/ntp.conf 配置文件来确定网络中系统时钟服务器,以 ntp 服务器的系统时间为标准,来调整本机的系统时间。 可以用 ntpq 命令来显示 xntpd 进程的内部变量。使用 ntp 时应注意,xntpd 服务器和 xntpd 客户端的时钟不能相差超过1000秒(16分钟)。若有大于1000秒的偏移,在客户端启动 xntpd 守护进程前,用 date 命令或 ntpdate 命令调整本机的系统时间,使偏移量在1000秒之内,然后再启动 xntpd。否则当xntpd启动之后,又会在几分钟内自动终止。 (1)构造一个NTP环境的基本步骤 设置NTP 服务器 (MASTER) 其它NTP客户服务器以此服务器的时间为准,与其进行时间同步. A. 编辑 /etc/ntp.conf 文件, 内容如下: ---------------------------- #broadcastclient server 127.127.1.0 driftfile /etc/ntp.drift tracefile /etc/ntp.trace ---------------------------- 请注意文件中的 server 127.127.1.0 这一行, 此处的127.127.1.0 是一个特殊的地址,表示NTP主服务器是与自身的系统时钟同步. B. 编辑好 /etc/ntp.conf后, 启动xntpd守护进程 # startsrc -s xntpd 也可通过调用smitty , 使 xntpd 在以后重启服务器时能自动启动。 # smitty xntpd -> Start Using the xntpd Subsystem -> BOTH C. xntpd 状态查询,使用 #lssrc -ls xntpd 刚启动xntpd时,sys peer 为 'insane',表明xntpd还没有完成同步。 #lssrc -ls xntpd Program name: --/usr/sbin/xntpd Version: -------3 Leap indicator: 11 (Leap indicator is insane.) Sys peer: ------no peer, system is insane ... 等待 6 - 10 分钟后, sys peer 就不再是 'insane' 了. #lssrc -ls xntpd Program name: --/usr/sbin/xntpd Version: -------3 Leap indicator: 00 (No leap second today.) Sys peer: ------127.127.1.0 ... NTP客户端的设置 A. 编辑 NTP 客户端上的 /etc/ntp.conf文件, 内容如下: ---------------------------- #broadcastclient server 9.185.43.189 driftfile /etc/ntp.drift tracefile /etc/

ntp.trace ---------------------------- 其中的 server 9.185.43.189 表明, 此客户端与IP地址为 9.185.43.189 的NTP服务器进行时间同步. B. 在NTP客户端启动xntpd守护进程 # startsrc -s xntpd 也可通过调用smitty , 使 xntpd 在以后重启服务器时能自动启动. # smitty xntpd C. 查询xntpd的状态 当 system peer 不为 'insane' 时, 表明客户端已与服务器端成功地进行了同步. # lssrc -ls xntpd Program name: --/usr/sbin/xntpd Version: -------3 Leap indicator: 00 (No leap second today.) Sys peer: ------9.185.43.189 ... NTP客户端查询NTP服务器 ntp客户端使用 ntpdate 命令来确认是否可用指定的 ntp 服务器进行时间同步。 命令的结果会显示客户端与 服务器的时间偏移。 #ntpdate -d 9.185.43.189 18 Mar 10:52:54 ntpdate[23578]: step time server 9.185.43.189 offset 86323.068272 sec 参数 -d:Specifies debug mode. Determines what results the ntpdate command produces without actually doing them. The results appear on the screen. This flag uses unprivileged ports. 若时间间隔大于1000 秒,使用ntpdate 进行手工调整, 如: #date Tue Mar 18 11:06:29 BEIST 2003 #ntpdate 9.185.43.189 19 Mar 11:06:51 ntpdate[23832]: step time server 9.185.43.189 offset 86403.402607 sec #date Wed Mar 19 11:06:54 BEIST 2003 完成上述操作后 ntp 客户端与 ntp 服务器系统时钟完成同步,ntp 客户端得到了新的系统时间。 查看同步的时间间隔(poll) # xntpdc -c peers remote local st poll reach delay offset disp ====================================================================== *202.103.194.85 202.103.194.150 4 128 377 0.00081 0.000143 0.00008 ====================================================================== 3.3 停止NFS服务 网络文件系统简称NFS(Network File System),它是UNIX操作系统的一个标准TCPIP服务,用于在网络上多个主机间共享一个目录。NFS服务是AIX默认自动安装的,并且随操作系统自动启动。 如果实际的应用环境中并不需要NFS文件系统,那么就可以禁止NFS后台服务进程自动启动,减少被网络黑客攻击的可能。 禁止NFS服务的步骤如下: (1)查看当前NFS服务的状态 #lssrc -g nfs Subsystem Group PID Status biod nfs 28004 active nfsd nfs 26268 active rpc.statd nfs 25206 active rpc.lockd nfs 28382 active rpc.mountd nfs 7616 active nfsrgyd nfs 28638 active gssd nfs inoperative # (2)停止所有NFS后台服务 #stopsrc -g nfs 0513-044 The biod Subsystem was requested to stop. 0513-044 The nfsd Subsystem was requested to stop. 0513-044 The rpc.statd Subsystem was requested to stop. 0513-044 The rpc.lockd S

ubsystem was requested to stop. 0513-044 The rpc.mountd Subsystem was requested to stop. 0513-044 The nfsrgyd Subsystem was requested to stop. # (3)再次查看NFS后台服务状态,确定所有服务都处于停止(inoperative)状态。 #lssrc -g nfs Subsystem Group PID Status nfsd nfs inoperative rpc.lockd nfs inoperative biod nfs inoperative rpc.statd nfs inoperative rpc.mountd nfs inoperative nfsrgyd nfs inoperative gssd nfs inoperative # (4)修改/etc/inittab文件,去掉rcnfs行,这样当下次AIX重启时就不会自动启动NFS服务了。 rcnfs:2:wait:/etc/rc.nfs > /dev/console 2>&1 # Start NFS Daemons 命令为 rmitab rcnfs 3.4 设置用户limits参数 为了保证系统资源不会被某个用户恶意耗尽,而导致其他用户的正常作用无法进行,AIX在/etc/security/limits文件中设置了对每个用户的资源限制。 参数的含义如下: fsize:限制一个用户所能建立的单个文件的大小上限,单位为512字节。 core:限制一个用户的进程产生的CORE文件的大小上限,单位为512字节。 cpu:限制一个用户的进程单个进程所能得到的连续CPU处理时间的上限,单位为秒。 data:限制一个用户的所有进程在内存中总的数据段大小的上限,单位为512字节。 rss:限制一个用户的所有进程所使用物理内存大小的上限,单位为512字节。 stack:限制一个用户的所有进程在内存中总的堆栈段大小的上限,单位为512字节。 nofiles:限制一个用户所能同时打开的文件描述符的个数,也即显示一个用户能同时打开的文件数。 default: fsize = 2097151 core = 2097151 cpu = -1 data = 262144 rss = 65536 stack = 65536 nofiles = 2000 查看一个用户当前的limits值,使用命令ulimit ?a # ulimit -a time(seconds) unlimited file(blocks) 2097151 data(kbytes) 131072 stack(kbytes) 32768 memory(kbytes) 32768 coredump(blocks) 2097151 nofiles(descriptors) 2000 threads(per process) unlimited processes(per user) unlimited # 3.5 wtmp文件的使用 /var/adm/wtmp文件记录了操作系统的登录信息,包括用户名、登录终端号、登录时间、登录的源IP地址。wtmp文件并没有大小的上限,因此它会随着系统的使用而逐渐增长,直到把/var目录空间耗尽为止。这就需要管理员定期去备份和清理wtmp文件。 (1)清理和备份wtmp文件 wtmp的清空不建议用 “>/var/adm/wtmp”,而是用如下两种方法之一: <方法1>:直接清空: # cp /dev/null /var/adm/wtmp <方法2>:

1)先备份文件,以备不日之需: # mv /var/adm/wtmp /var/adm/wtmp.old 2)建立一个新的空wtmp文件 #/usr/sbin/acct/nulladm /var/adm/wtmp (2)查看备份的文件内容: # who /var/adm/wtmp.old (3)编辑wtmp文件 A. / 将/wtmp导出到一个文本文件 # /usr/sbin/acct/fwtmp < /var/adm/wtmp > /tmp/wtmp.out B. 编辑清理不需要的或错误的记录 # vi /tmp/wtmp.out C. 备份好wtmp文件 # mv /var/adm/wtmp /var/adm/wtmp.old D. 把修改好的/tmp/wtmp.out内容(文本ASCII格式)倒回到/var/adm/wtmp(二进制格式): # /usr/sbin/acct/fwtmp -ic < /tmp/wtmp.out > /var/adm/wtmp

相关主题
文本预览
相关文档 最新文档