1、建立一个普通权限的用户 因为root用户对系统具有全权的操作权限,为了避免一些失误的操作,建议在一般情况下,以一般用户登录系统,必要的时候需要root操作权限时,再通过“su -”命令来登录为root用户进行操作。 useradd pysche passwd pysche usermod -G wheel pysche 修改pam配置,使非wheel组用户不能使用su命令登录为root: vi /etc/pam.d/su 找到 #auth required /lib/security/$ISA/pam_wheel.so use_uid 将行首的 # 去掉。 然后 vi /etc/login.defs 在文件末尾加上 SU_WHEEL_ONLY yes 2、安装yum加速工具,并更新系统 yum install yum-fastestmirror -y yum upgrade -y 3、安装mlocate工具 yum install mlocate -y 4、root邮件的修改 在系统出现错误或有重要通知发送邮件给root的时候,让系统自动转送到我们通常使用的邮箱中,这样方便查阅相关报告和日志。 vi /etc/aliases 在文件末尾加上 root: admin@it.net.cn 5、locate命令设置 vi /etc/updatedb.conf 在末尾增加 DAILY_UPDATE=yes 然后运行 updatedb 6、关闭不必要的服务 比如cups /etc/init.d/cups stop chkconfig cups off 除了以下服务以外,其他服务默认的都可以采用刚才的方法关闭: atd crond irqbalance lvm2-monitor microcode_ctl network sendmail sshd syslog 7、停止ipv6 vi /etc/modprobe.conf 在文件末尾加上 alias net-pf-10 off alias ipv6 off 8、关闭SELinux vi /etc/selinux/config 将其中的 SELINUX=enforcing 改为 SELINUX=disabled 9、安装sudo工具 yum install sudo -y 安装好了以后,修改sudo的配置 vi /etc/sudousers 将 # %wheel ALL=(ALL) NOPASSWORD:ALL 去掉前面的 # , 然后保存文件。 这样修改了以后,只有所有属于wheel组的用户能执行sudo命令,并且执行sudo命令时只需要输入自己的密码即可。 10、修改SSH配置 vi /etc/ssh/sshd_config 增加ServerKey的强度 找到 #ServerKeyBits 768 改为 ServerKeyBits 1024 不允许root用户直接登录 #PermitRootLogin Yes 改为 PermitRootLogin no 禁止空密码登录 找到 #PermitEmptyPasswords no 去掉前面的 # 全部修改完了以后,重启服务器 init 6 在系统刚安装完成时立即对Grub加密,防止他人通过进入单用户模式获得root权限!!! 1.Bios 安全设置 一定要给Bios设置密码,以防通过在Bios中改变启动顺序,而可以从软盘启动。 这样可以阻止别人试图用特殊的启动盘启动你的系统,还可以阻止别人进入Bios改动其中的设置(比如允许通过软盘启动等)。 2.删除掉不需要的用户和用户组 应该禁止所有默认的被操作系统本身启动的并且不必要的账号,当您第一次安装系统时就应该这么做,Linux提供了很多默认账号,而账号越多,系统就越容易受到攻击。 vi /etc/passwd #userdel adm #userdel lp #userdel sync #userdel shutdown #userdel halt #userdel news #userdel uucp #userdel operator #userdel games #userdel gopher #userdel ftp vi /etc/group #groupdel adm #groupdel lp #groupdel news #groupdel uucp #groupdel games #groupdel dip #groupdel pppusers 3.口令文件 chattr命令给下面的文件加上不可更改属性,从而防止非授权用户获得权限。 # chattr +i /etc/passwd # chattr +i /etc/shadow # chattr +i /etc/group # chattr +i /etc/gshadow 检查以上权限后期使用 lsattr /ec/passwd 4.禁止Ctrl Alt Delete重新启动机器命令 修改/etc/inittab文件,将”ca::ctrlaltdel:/sbin/shutdown -t3 -r now”一行注释掉。5.限制su命令 如果您不想任何人能够su作为root,可以编辑/etc/pam.d/su文件,增加如下两行: auth sufficient /lib/security/pam_rootok.so debug auth required /lib/security/pam_wheel.so group=isd 这时,仅isd组的用户可以su作为root。此后,如果您希望用户admin能够su作为root,可以运行如下命令: # usermod -G10 admin 6.删除finger程序,具体方法如下 #rpm –e finger 7.删减登录信息 默认情况下,登录提示信息包括Linux发行版、内核版本名和服务器主机名等。对于一台安全性要求较高的机器来说这样泄漏了过多的信息。可以编辑/etc/rc.d/rc.local将输出系统信息的如下行注释掉。 然后,进行如下操作: # rm -f /etc/issue # rm -f /etc/issue.net # touch /etc/issue # touch /etc/issue.net 8、更改SSH端口 最好改为10000以上,别人扫描到端口的机率也会下降 不允许使用低版本的SSH协议 vi /etc/ssh/ssd_config 将#protocol 2,1改为 protocol 2 将PORT改为1000以上端口 vi /etc/ssh/sshd_config Port 10000 同时,创建一个普通登录用户,并取消直接root登录 useradd ‘username’ passwd ‘username’ vi /etc/ssh/sshd_config PermitRootLogin no #取消root直接远程登录 9、关闭那些不需要的服务 记住少开一个服务,就少一个危险。 以下仅列出需要启动的服务,未列出的服务一律关闭: #setup acpid anacron cpuspeed crond irqbalance 仅当服务器CPU为S.M.P架构或支持双核心、HT技术时,才需开启,否则关闭。 microcode_ctl network random sendmail sshd syslog yum-updatesd 10、启用iptables 防火墙,对增加系统安全有许多好处。 设置好防火墙的规则。 vi /etc/sysconf/iptables *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] # allow local loopback connections -A INPUT -i lo -j ACCEPT # drop INVALID connections -A INPUT -m state –state INVALID -j DROP -A OUTPUT -m state –state INVALID -j DROP -A FORWARD -m state –state INVALID -j DROP # allow all established and related -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT # add anymore rules here COMMIT 11.系统安全记录文件 操作系统内部的记录文件是检测是否有网络入侵的重要线索。如果您的系统是直接连到Internet,您发现有很多人对您的系统做Telnet/FTP登录尝试,可以运行”#more /var/log/secure | grep refused”来检查系统所受到的攻击,以便采取相应的对策,如使用SSH来替换Telnet/rlogin等。 12.创建所有重要的日志文件的硬拷贝 如果服务器比较重要,可以考虑把ssh,mail,引导信息等打印出来.在/etc/syslog.conf文件中加入一行.: Authpriv.*;mail.*;local7.*;auth.*;daemon.info /dev/lp0 执行/etc/rc.d/init.d/syslog restart 或者把日志发送到其它服务器保存 如 authpriv.* /var/log/secure 要把它发送到192.168.0.2,就可以这样修改 authpriv.* @192.168.0.2 /var/log/secure 13。改变/etc/rc.d/init.d目录下的脚本文件的访问许可 # chmod -R 700 /etc/rc.d/init.d/* 这样便仅有root可以读、写或执行上述所有脚本文件。 注意:慎重修改此安全设置 14.inetd.conf或xinetd.conf 如果是inetd.conf建议注释掉所有的r开头的程序,exec等 7,TCP_Wrappers 在/etc/hosts.allow中加入允许的服务,在/etc/hosts.deny里加入这么一行ALL:ALL 15./etc/aliases文件 Aliases文件如果管理错误或管理粗心就会造成安全隐患.把定义”decode”这个别名的行从aliases文件中删除. 编辑aliases,删除或注释下面这些行: #games: root #ingres: root #system: root #toor: root #uucp: root #manager: root #dumper: root #operator: root #decode: root 运行/usr/bin/nesaliases重新加载. 16.防止sendmail被没有授权的用户滥用 编辑sendmail.cf 把PrivacyOptions=authwarnings 改为PrivacyOptions=authwarnings,noexpn,novrfy 17.不响应ping #echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 18.使TCP SYN Cookie保护生效 Echo 1 > /proc/sys/net/ipv4/tcp_syncookies 19.带S位的程序 可以清除s位的程序包括但不限于: ? 从来不用的程序; ? 不希望非root用户运行的程序; ? 偶尔用用,但是不介意先用su命令变为root后再运行. find / -type f ( -perm 04000 –o –perm -02000 ) -print chmod a-s 程序名 20.帐号安全设置 修改/etc/login.def文件 PASS_MAX_DAYS 120 ?设置密码过期日期 PASS_MIN_DAYS 0 ?设置密码最少更改日期 PASS_MIN_LEN 10 ?设置密码最小长度 PASS_WARN_AGE 7 ?设置过期提前警告天数 确保/etc/shadow为root只读 确保/etc/passwd为root读写 定期用密码工具检测用户密码强度 21. /etc/exports 如果通过NFS把文件共享出来,那么一定要配置”/etc/exports”文件,使得访问限制尽可能的严格.这就是说,不要使用通配符,不允许对根目录有写权限,而且尽可能的只给读权限.在/etc/exports文件加入: /dir/to/export host1.mydomain.com(ro,root_squash) /dir/to/export host2.mydomain.com(ro,root_squash) 建议最好不要使用NFS. 22.登录终端设置 /etc/securetty文件指定了允许root登录的tty设备,由/bin/login程序读取,其格式是一个被允许的名字列表,您可以 编辑/etc/securetty且注释掉如下的行。 tty1 # tty2 # tty3 # tty4 # tty5 # tty6 这时,root仅可在tty1终端登录。 23.防止IP欺骗 编辑host.conf文件并增加如下几行来防止IP欺骗攻击。 order bind,hosts multi off nospoof on 24.Inetd设置 首先要确认/etc/inetd.conf的所有者是root,且文件权限设置为600。设置完成后,可以使用”stat”命令进行检查。 # chmod 600 /etc/inetd.conf 然后,编辑/etc/inetd.conf禁止以下服务。 ftp telnet shell login exec talk ntalk imap pop-2 pop-3 finger auth 如果您安装了ssh/scp,也可以禁止掉Telnet/FTP。为了使改变生效,运行如下命令: #killall -HUP inetd 默认情况下,多数Linux系统允许所有的请求,而用TCP_WRAPPERS增强系统安全性是举手之劳,您可以修 改/etc/hosts.deny和/etc/hosts.allow来增加访问限制。例如,将/etc/hosts.deny设为”ALL: ALL”可以默认拒绝所有访问 。然后在/etc/hosts.allow文件中添加允许的访问。例如,”sshd: 192.168.1.10/255.255.255.0 gate.openarch.com”表示 允许IP地址192.168.1.10和主机名gate.openarch.com允许通过SSH连接。 配置完成后,可以用tcpdchk检查: # tcpdchk tcpchk是TCP_Wrapper配置检查工具,它检查您的tcp wrapper配置并报告所有发现的潜在/存在的问题。 25.防止DoS攻击 对系统所有的用户设置资源限制可以防止DoS类型攻击。如最大进程数和内存使用数量等。例如,可以 在/etc/security/limits.conf中添加如下几行: * hard core 0 * hard rss 5000 * hard nproc 20 然后必须编辑/etc/pam.d/login文件检查下面一行是否存在。 session required /lib/security/pam_limits.so 上面的命令禁止调试文件,限制进程数为50并且限制内存使用为5MB。 26.内核参数调整 #vi /etc/sysctl.conf sysctl -w net.ipv4.conf.default.accept_source_route=0 sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 #sysctl -w net.ipv4.icmp_echo_ignore_all=1 sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1 sysctl -w net.ipv4.ip_conntrack_max=65535 sysctl -w net.ipv4.tcp_syncookies=1 sysctl -w net.ipv4.tcp_syn_retries=1 sysctl -w net.ipv4.tcp_fin_timeout=5 sysctl -w net.ipv4.tcp_synack_retries=1 sysctl -w net.ipv4.tcp_syncookies=1 sysctl -w net.ipv4.route.gc_timeout=100 sysctl -w net.ipv4.tcp_keepalive_time=500 sysctl -w net.ipv4.tcp_max_syn_backlog=10000 27.查看系统隐藏文件 find / -name “.*” –print 28.查找系统中没有主人的文件 find / -nouser –o –nogroup 29.查找.rhosts文件 find /home -name “.rhosts” 如果有,请删除它. 30.收回系统编译器的权限或删除 如: chmod 700 /usr/bin/gcc 31.查找任何人都有写权限的文件和目录 find / -type f ( -perm -2 -o perm -20 ) ls find / -type f ( -perm -2 –o –perm -20 ) ls 32.关闭FTP匿名用户登陆 33.icmp包处理 1)用防火墙禁止(或丢弃) icmp 包 iptables -A INPUT -p icmp -j DROP 2)对所有用ICMP通讯的包不予响应 比如PING TRACERT 34.Bash Shell 命令 Bash shell在“~/.bash_history”(“~/”表示用户目录)文件中保存了500条使用过的命令,这样可以使你输入使用过的长命令变得容易。每个在系统中拥有账号的用户在他的目录下都有一个“.bash_history”文件。bash shell应该保存少量的命令,并且在每次用户注销时都把这些历史命令删除。 经过以上的设置,您的Linux服务器已经可以对绝大多数已知的安全问题和网络攻击具有免疫能力,但一名优秀的系统管理员仍然要时刻注意网络安全动态,随时对已经暴露出的和潜在安全漏洞进行修补。 centOS 5.4 IP,防火墙,SSH配置(详细版本)2010年01月21日 星期四 上午 00:57文件 /etc/sysconfig/network 这个/etc/sysconfig/network文件是定义hostname和是否利用网络的不接触网络设备的对系统全体定义的文件。 设定形式:设定值=值 /etc/sysconfig/network的设定项目如下: NETWORKING 是否利用网络 GATEWAY 默认网关 IPGATEWAYDEV 默认网关的接口名 HOSTNAME 主机名 DOMAIN 域名 文件 /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts在这个目录下面,存放的是网络接口(网卡)的制御脚本文件(控制文件),ifcfg- eth0是默认的第一个网络接口,如果机器中有多个网络接口,那么名字就将依此类推ifcfg-eth1,ifcfg-eth2,ifcfg- eth3……(这里面的文件是相当重要的,涉及到网络能否正常工作) 设定形式:设定值=值 设定项目项目如下: DEVICE 接口名(设备,网卡) BOOTPROTO IP的配置方法(static:固定IP, dhcpHCP, none:手动) HWADDR MAC地址 ONBOOT 系统启动的时候网络接口是否有效(yes/no) TYPE 网络类型(通常是Ethemet) NETMASK 网络掩码 IPADDR IP地址 IPV6INIT IPV6是否有效(yes/no) GATEWAY 默认网关IP地址 这里有一个例子: CODE: [root@linux ~]# cat -n /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0:0 BOOTPROTO=static BROADCAST=192.168.0.255 IPADDR=192.168.0.101 NETMASK=255.255.255.0 NETWORK=192.168.0.0 ONBOOT=yes ================================= DEVICE=eth0 BOOTPROTO=none HWADDR=00:16:E6:4D:30:05 ONBOOT=yes IPADDR=192.168.1.99 NETMASK=255.255.255.0 NETWORK=192.168.1.0 TYPE=Ethernet USERCTL=no IPV6INIT=no PEERDNS=yes GATEWAY=192.168.1.1 文件 /etc/resolv.conf 这个文件是用来配置主机将用的DNS服务器信息。在这个文件中如果不设置DNS服务器的IP地址,那么在通信的时候,将无法指定像http://www.waptv.us这样的域名。(DNS是Domain Name System的简称,中文名称域名解析服务器,主要是IP和域名转换功能)/etc/resolv.conf的设定项目: domain ←定义本地域名 search ←定义域名和搜索列表 nameserver←定义被参照的DNS服务器的IP地址(最多可指定3个) 一般来说最重要的是第三个nameserver项目,没有这项定义,用域名将无法访问网站,并且yum等服务将无法利用 search localdomain nameserver 192.168.1.1 网络基本命令 [root@linux ~]#service network restart start ←启动 stop ←停止 restart ←再启动 reload ←和再启动一样(..) status ←状态表示 防火墙配置: /etc/sysconfig/iptables -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 7777 -j ACCEPT 允许的端口,在修改SSH端口前,先在这里开启端口。 SSH端口修改 /etc/ssh/ssh_config /etc/ssh/sshd_config port 8888 port 22 #先留着此端口,上面的端口可以链接了,在关闭这个 service sshd restart #重启SSH /etc/init.d/iptables restart #重启防火墙 (责任编辑:IT) |