5.2 IP Forwarding (IP转发) a. 关闭IP转发 ndd -set /dev/ip ip_forwarding 0 b. 严格限定多主宿主机,如果是多宿主机,还可以加上更严格的限定防止ip spoof的攻击 ndd -set /dev/ip ip_strict_dst_multihoming 1 c. 转发包广播由于在转发状态下默认是允许的,为了防止被用来实施smurf攻击,关闭这一特性 ndd -set /dev/ip ip_forward_directed_broadcasts 0 5.3 路由 a. 关闭转发源路由包 ndd -set /dev/ip ip_forward_src_routed 0 5.4 ICMP:网络控制信息协议 a. 禁止响应Echo广播: ndd -set /dev/ip ip_respond_to_echo_broadcast 0 b. 禁止响应时间戳广播 ndd -set /dev/ip ip_respond_to_timestamp_broadcast 0 c. 禁止响应地址掩码广播 ndd -set /dev/ip ip_respond_to_address_mask_broadcast 0 5.5 重定向错误 a. 禁止接受重定向错误 ndd -set /dev/ip ip_ignore_redirect 1 b. 禁止发送重定向错误报文 ndd -set /dev/ip ip_send_redirects 0 c. 禁止时间戳响应 ndd -set /dev/ip ip_respond_to_timestamp 0 5.6 SYN_flood攻击又称半开式连接攻击, a. 将默认的队列值从1024提高到4096来降低受到攻击时的危害 ndd -set /dev/tcp tcp_conn_req_max_q0 4096 5.7 连接耗尽攻击 a. 将核心以连接队列参数(默认是128)增大到1024来预防这种攻击 ndd -set /dev/tcp tcp_conn_req_max_q 1024 5.8 防止IP 欺骗 对于solaris系统Tcp协议实现的ISN生成有三种方式。 0: 可预测的ISN 1: 增强的ISN 随机生成 2: RFC 1948描述的ISN生成方式 所有版本的solaris默认生成方式值是1。2.5.1只有 0,1两种方式,2.6/7拥有0,1,2三种ISN生成方式。 修改/etc/default/inetinit文件来提高ISN的生成强度。将 TCP_STRONG_ISS=1改为 TCP_STRONG_ISS=2重起系统生效。 5.9 增加私有端口 一般的情况下,1-1024端口被称为私有端口,只允许具有根权限的进程连接。但是有些大于1 024的端口,即使需要这样的限制, 却无法定义,如NFS的服务器端口2049,当然还有一些其他定义的高于1024的私有端口。
a. 自定义最小的非私有端口 ndd -set /dev/tcp tcp_smallest_nonpriv_port 2050 这样以来,0-2049都被定义为私有端口。 b. 用来显示已经定义的扩展私有端口 ndd /dev/tcp tcp_extra_priv_ports c. 单独增加一个私有端口定义 ndd -set /dev/tcp tcp_extra_priv_ports_add 6112 d. 删除私有端口定义 ndd -set /dev/tcp tcp_extra_priv_ports_del 6112 e. 要注意的是,不要随便定义私有端口,因为有些非根权限的进程会使用这些端口。特别是改变最小非私有端口这个参数, 经常会引起问题。应仔细分析你的需求再用扩展私有端口定义的方式单独增加。 f. ndd /dev/tcp tcp_extra_priv_ports 执行结果(某系统) 2049 4045 9010 一共定义了3个私有端口 5.10 其他内核参数的调整 a. – Enable stack protection 直译为允许堆栈保护,应该使防止缓冲区溢出攻击 You should definitely add the following two lines to your /etc/system file: set noexec_user_stack = 1 set noexec_user_stack_log = 1 b. – Prevent core dumps 避免核心内存转储 coreadm -d process c. – Set limits on processes
6. 增强日志记录 Definitely tweak syslog.conf to capture auth.info and daemon.notice msgs ? Create /var/adm/loginlog ? Additional levels of logging: – System accounting (sar and friends) – Process accounting – Kernel level auditing (BSM)7. 保护文件系统? File systems should either be mounted "nosuid" or "ro" (read-only) ? Set "logging" option on root file system if you're running Solaris 8 or later ? Don't forget removable media devices: – Turn off vold if possible – Make sure rmmount.conf sets "nosuid"8. 设置警告信息 两个文件 /etc/motd ;/etc/issue – /etc/default/{telnetd,ftpd} – EEPROM – GUI Login
9. 加强系统的访问控制 9.1. 只允许root从console登陆 CONSOLE=/dev/console is set in /etc/default/login sshd_config 里面设置 PermitRootLogin no 9.2. 禁止或删除不用的帐号 对不需要登陆的帐号,可将/etc/passwd文件中的shell选项修改为/bin/false 或者/dev/null
9.3. 创建/etc/ftpusers 在该文件中未指定的用户才能使用ftp服务 9.4. 禁止.rhosts支持 a. 删除系统中的.rhosts文件 b. 使用ssh的情况下,保证sshd_config文件中("IgnoreRhosts yes") c. /etc/pam_conf and remove any lines containing rhosts_auth, even if you've disabled rlogin/rcp. 9.5. 限制对cron和at的访问 cron.allow and at.allow列出有权运行提交修改cron和at任务的用户 9.6. 设置eeprom到安全模式 Setting "eeprom security-mode=command" will cause the machine to prompt for a password before boot-level commands are accepted. This prevents attackers with physical access from booting from alternate media (like a CD-ROM) and bypassing your system security. 9.7. 限制xdmcp,设置锁定屏幕的屏保 If you're running X Windows on the machine, make sure to disable remote XDMCP access in /etc/dt/config/Xaccess. You may also want to set a default locking screensaver timeout for your users in /etc/dt/config/*/sys.resources.