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.