服务器维护,服务器代维,安全设置,漏洞扫描,入侵检测服务

运维之家

 找回密码
 注册
搜索
查看: 5101|回复: 1

Linux下最常用最有效的安全设置

[复制链接]
dirtysea 发表于 2010-8-31 15:19:08 | 显示全部楼层 |阅读模式
1、 CentOS或Red Had Enterprise Linux 4 的用户要首先要打开SElinux,方法是修改/etc/selinux/config文件中的SELINUX="" 为enforcing 。它可以保证你的系统不会非正常的崩溃。有些人认为应该关闭,我强烈不推荐,当然只是将centos用来玩玩,不是用于实际服务器则无所谓了。
    2、启用iptables 防火墙,对增加系统安全有许多好处。设置好防火墙的规则。
    3、执行setup 关闭那些不需要的服务 ,记住少开一个服务,就少一个危险。
    4、禁止Control-Alt-Delete 键盘关闭命令
    在"/etc/inittab" 文件中注释掉下面这行(使用#):
    ca::ctrlaltdel:/sbin/shutdown -t3 -r now 
    改为:
    #ca::ctrlaltdel:/sbin/shutdown -t3 -r now 
    为了使这项改动起作用,输入下面这个命令:
    # /sbin/init q
    5、给"/etc/rc.d/init.d" 下script文件设置权限
    给执行或关闭启动时执行的程序的script文件设置权限。
    # chmod -R 700 /etc/rc.d/init.d/* 
    这表示只有root才允许读、写、执行该目录下的script文件。
    6、修改"/etc/host.conf"文件
    "/etc/host.conf"说明了如何解析地址。编辑"/etc/host.conf"文件(vi /etc/host.conf),加入下面这行:
    # Lookup names via DNS first then fall back to /etc/hosts. 
    order bind,hosts 
    # We have machines with multiple IP addresses. 
    multi on 
    # Check for IP address spoofing. 
    nospoof on 
    第一项设置首先通过DNS解析IP地址,然后通过hosts文件解析。第二项设置检测是否"/etc/hosts"文件中的主机是否拥有多个IP地址(比如有多个以太口网卡)。第三项设置说明要注意对本机未经许可的电子欺骗。
    7、使"/etc/services"文件免疫
    使"/etc/services"文件免疫,防止未经许可的删除或添加服务:
    # chattr +i /etc/services
    8.阻止你的系统响应任何从外部/内部来的ping请求。
    既然没有人能ping通你的机器并收到响应,你可以大大增强你的站点的安全性。你可以加下面的一行命令到/etc/rc.d/rc.local,以使每次启动后自动运行。
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    9、对你的系统上所有的用户设置资源限制可以防止DoS类型攻击(denial of service attacks)
    如最大进程数,内存数量等。例如,对所有用户的限制象下面这样:
    vi /etc/security/limits.conf
    下面的代码示例中,所有用户每个会话都限制在 10 MB,并允许同时有四个登录。第三行禁用了每个人的内核转储。第四行除去了用户 bin 的所有限制。ftp 允许有 10 个并发会话(对匿名 ftp 帐号尤其实用);managers 组的成员的进程数目限制为 40 个。developers 有 64 MB 的 memlock 限制,wwwusers 的成员不能创建大于 50 MB 的文件。
    清单 3. 设置配额和限制
    * hard rss 10000
    * hard maxlogins 4
    * hard core 0
    bin -
    ftp hard maxlogins 10
    @managers hard nproc 40
    @developers hard memlock 64000
    @wwwusers hard fsize 50000
    要激活这些限制,您需要在 /etc/pam.d/login 底部添加下面一行: session required /lib/security/pam_limits.so
10、注释掉不需要的用户和用户组。
    vipw
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    news:x:9:13:news:/etc/news:
    uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
    rpm:x:37:37::/var/lib/rpm:/sbin/nologin
    haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
    netdump:x:34:34:Network Crash Dump user:/var/crash:/bin/bash
    nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
    sshd:x:74:74:Privilerpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
    rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
    nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
    mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
    smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
    pcap:x:77:77::/var/arpwatch:/sbin/nologin
    xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
    ntp:x:38:38::/etc/ntp:/sbin/nologin
    gdm:x:42:42::/var/gdm:/sbin/nologin
    pegasus:x:66:65:tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
    htt:x:100:101:IIIMF Htt:/usr/lib/im:/sbin/nologin
    wangjing:x:500:500::/home/wangjing:/bin/bash
    mysql:x:101:102:MySQL server:/var/lib/mysql:/bin/bash
    apache:x:48:48:Apache:/var/www:/sbin/nologin
    ge-separated SSH:/var/empty/sshd:/sbin/nologin
    对于不需要的用户全部加 # 注释掉。注意,我不建议直接删除,当你某种原因需要某个用户时,自己重新会很麻烦。
    vi /etc/group
    root:x:0:root
    bin:x:1:root,bin,daemon
    daemon:x:2:root,bin,daemon
    sys:x:3:root,bin,adm
    adm:x:4:root,adm,daemon
    tty:x:5:
    disk:x:6:root
    lp:x:7:daemon,lp
    mem:x:8:
    kmem:x:9:
    wheel:x:10:root
    mail:x:12:mail
    news:x:13:news
    uucp:x:14:uucp
    man:x:15:
    games:x:20:
    gopher:x:30:
    dip:x:40:
    ftp:x:50:
    lock:x:54:
    nobody:x:99:
    users:x:100:
    dbus:x:81:
    floppy:x:19:
    vcsa:x:69:
    rpm:x:37:
    haldaemon:x:68:
    utmp:x:22:
    netdump:x:34:
    nscd:x:28:
    slocate:x:21:
    sshd:x:74:
    rpc:x:32:
    rpcuser:x:29:
    nfsnobody:x:65534:
    mailnull:x:47:
    smmsp:x:51:
    pcap:x:77:
    xfs:x:43:
    ntp:x:38:
    gdm:x:42:
    pegasus:x:65:
    htt:x:101:
    wangjing:x:500:
    mysql:x:102:
    apache:x:48:
    对于不需要的用户组全部加 # 注释掉。注意,我不建议直接删除,当你某种原因需要某个用户组时,自己重新会很麻烦。
    11、用chattr命令给下面的文件加上不可更改属性。
    [root@deep]# chattr +i /etc/passwd
    [root@deep]# chattr +i /etc/shadow
    [root@deep]# chattr +i /etc/group
    [root@deep]# chattr +i /etc/gshadow
    注意执行这个操作后,以root身份都不能向系统增加用户或者修改密码了。如果我们要增加用户或者修改密码的。应该先用chattr -i /etc/passwd等命令解除不可写设置,再进行操作。
    12、改变sshd缺省端口
    SSHD的默认端口就是 22 ,地球人都知道,通常黑客在没有准确目标的情况下要寻找 Linux机器的最好方法就是扫描所有开放了 22 端口的机器,然后放在一个列表里,一个个去探求它的漏洞。
    比如 nmap4 的新功能 nmap -v -iR 10000 -P0 -p 22 可随机在10000个IP里去寻找开放了 22 端口的机器。当然也可以有目标的把日本或者其他国家的ip段添上再扫描。
    通常是按照服务对应的常规端口去扫描,除非用全端口1-65535,但除非是针对性的对一台机器扫描,否则这样效率不高。www.britepic.org
    把默认端口改变成60022的步骤如下:
    vi /etc/ssh/sshd_config
    找到#Port 22,标识默认使用22端口,如果需要更改为8888则去掉前面的 # 注释符号,修改为:Port 60022
    然后重启服务进程
    # /etc/init.d/sshd restart
    sshd_config其他安全选项
    把 #PermitRootLogin yes 改为 PermitRootLogin no 可防止 root 远程登陆
    把 #Protocol 1,2 改 Protocol 2 ,不用 SSH protocol 1 协议,只用 2
    当然还有一些选项,视需要而定,比如:Banner的伪造、登陆失败后的的锁定时间、是否允许空口令帐号登陆、服务器密钥的位数等、允许登陆的用户和IP等。
    13、 内核参数调整
    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
    14、经常检查系统日志。系统日志主要位于/var/log/目录下。防患于未然。
    通过以上设置你的系统一般来说就比较安全了。
 楼主| dirtysea 发表于 2010-8-31 15:19:39 | 显示全部楼层
今天总结了一下加强redhat linux系统安全的一些小方法 高手请回避吧

1,禁止使用所有特殊帐号:在lp,sync,shutdown,halt,news,games,gopher等用户中,不使用默认帐号:[root@redhat/]#userdel LP  删除组帐号:[root@redhat/]#groupdel LP

2,启动shadow,并把系统中现有的密码和组改为shadow密码和组:用/usr/sbin/authconfig程序打开shadow  再分别使用pwconv和grpconv两个命令

3,禁止普通用户对控制台的所有访问:运行 [root@redhat/]#rm–f/etc/security/console.apps/halt
   [root@redhat/]#rm–f/etc/security/console.apps/poweroff
   [root@redhat/]#rm–f/etc/security/console.apps/reboot
   [root@redhat/]#rm–f/etc/security/console.apps/shutdown
当然也可以删除xserver文件,这样除了root只外,没有人可以启动xserver了

4,使系统不回应ping:把echo 1>/proc/sys/net/ipv4/icmp_echo_ignore_all命令加到 /etc/rc.d/rc.local 文件中,使系统重启的时候,自动禁止回应ping

5,显示系统发行文件:在 /etc/inetd.conf 文件中的telnet选项改为:telnet stream tcp nowait root/usr/sbin/tcpd in.teknetd –h

6,不接受从不同控制台的根用户登陆:编辑 /ect/security 文件 在不需要的tty前面加# 禁用所选的设备

7,保护 /ect/services文件:运行 [root@redhat/]#chattr+i/ect/services

8,编辑 /ect/host.conf 文件:在 /ect/host.conf 文件中添加 
#Lookup names via DNS first then fall back to /ect/hosts
Order bing,hosts
#We have machines with multiple IP address
multi on
#Check for IP address spoofing
nospoof on

9,隐藏系统的信息:首先在 /ect/rc.d/rc.local 文件中将#写在这些行的前面
  # This will overwrite/ect/issue at every boot.So.make any changes you
   # want to make to/ect/issue here or you will lose them when you reboot
   #echo ””>/ect/issue
 #echo “$R”>>/ect/issue
 #echo “Kernel $(uname –r) on $a $(uname –m)” >>/ect/issue
 #
 #cp –f/ect/issue/ect/issue.net
 #echo >>/ect/issue
 然后在 /ect目录下删除 issue和issue.net文件
 [root@redhat/]#rm –f/ect/issue
 [root@redhat]#rm –f/ect/issue.net

10,删除.bash_history文件:在 /ect/skel/.bash_logout 文件中添加 rm –f$HOME/.bash_history 使每次用户退出的时自动删除.bash_history文件
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|运维之家

GMT+8, 2024-4-17 06:35 , Processed in 0.135019 second(s), 14 queries .

Powered by Dirtysea

© 2008-2020 Dirtysea.com.

快速回复 返回顶部 返回列表