天天看点

初入linux安全

linux 是开源的操作系统,这样带来的好处是可以免费获取和使用。也可以定制自己的linux系统。由于开源也导致了系统安全的问题,

linux也会收到一些系统底层的攻击。

    一般的攻击手段:

        1.密码暴力破解。用来破解用户密码。(主要针对系统口令,一般可以修改密码难度加入防范多次错误连接机制)

        2.拒绝服务攻击。Dos  (DDos)原理是:利用合理的服务请求来占用过多的服务器资源。向目标服务器发起大量请求,由于服务器短时间内无法接受太多请求,造成系统资源耗尽,服务挂起,严重造成服务器瘫痪。

        3.应用程序漏洞攻击。常见的SQL注入漏洞攻击,网页权限漏洞。已知系统程序的漏洞。

    防范攻击策略

        1.网络传输安全。

            网络传输由网络安全设备构成。一般由硬件防火墙,网络入侵监测(IDC Intrusion Detection System),路由器,交换机。通过给这些设备合理的配置,防范危险。

        2.操作系统安全

            经常进行的系统安全设置:系统内核定期升级,系统自带软件更新,配置防火墙IPtables防范策略。

            SYN攻击属于DDoS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。SYN攻击除了能影响主机外,还可以危害路由器、防火墙等网络系统,事实上SYN攻击并不管目标是什么系统,只要这些系统打开TCP服务就可以实施

            Linux syn攻击是一种黑客攻击,如何处理和减少这种攻击是系统管理员比较重要的工作.

            SYN攻击是利用TCP/IP协议3次握手的原理,发送大量的建立连接的网络包,但不实际建立连接,最终导致被攻击服务器的网络队列被占满,无法被正常用户访问。

            Linux内核提供了若干SYN相关的配置,用命令: sysctl -a | grep syn 看到:

            net.ipv4.tcp_max_syn_backlog = 1024 net.ipv4.tcp_syncookies = 0

            net.ipv4.tcp_synack_retries = 5 net.ipv4.tcp_syn_retries = 5

            tcp_max_syn_backlog是SYN队列的长度,tcp_syncookies是一个开关,是否打开SYN Cookie 功能,该功能可以防止部分SYN攻击。tcp_synack_retries和tcp_syn_retries定义SYN 的重试次数。加大SYN队列长度可以容纳更多等待连接的网络连接数,打开SYN Cookie功能可以阻止部分 SYN攻击,降低重试次数也有一定效果。

            调整上述设置的方法是: 

            增加SYN队列长度到2048: 

            sysctl -w net.ipv4.tcp_max_syn_backlog=2048

            打开SYN COOKIE功能: 

            sysctl -w net.ipv4.tcp_syncookies=1

            降低重试次数: 

            sysctl -w net.ipv4.tcp_synack_retries=3 sysctl -w net.ipv4.tcp_syn_retries=3 

            为了系统重启动时保持上述配置,可将上述命令加入到/etc/rc.d/rc.local文件中。

            防止同步包洪水(Sync Flood) 

            # iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

            也有人写作 

            #iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT 

            --limit 1/s 限制syn并发数每秒1次,可以根据自己的需要修改

            防止各种端口扫描 

            # iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

            Ping洪水攻击(Ping of Death) 

            # iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT 

            这些是处理linux sync攻击的思路。

        3.应用软件安全

            服务器上运行的软件程序本身进行安全策略配置和优化。常见www服务的apache安全设置。ftp服务访问授权控制等。

 Linux操作系统安全策略

        1.软件的升级 

            系统软件一般用yum update (yum工具自动升级。要有网络)

        2.端口和服务。

           端口。其实一个有效的连接的建立,就是客户端的端口和服务器的端口建立连接的过程。端口在系统中有自己的一套划分规律。

           linux 可以通过查看  more  /etc/services

           linux 下,共有655536个可用端口,这些端口以 1024为分割点,分别是;

           ‘只有root用户才能启动的端口’和‘客户端的端口’

           1. 只有root才能开启的端口

                0-1023  端口,主要用于系统一些常见的通信服务中。常见的:ftp  21; telnet 23;mail 25; wwww 80;

           2. 客户端的端口

              1024及以上的端口主要给客户端软件使用,这些端口由软件随机分配。比如 msyql  3306;tomcat 8080 8009;

              oneproxy 4041(管理); php-fpm 9000;当然这些是默认的都可以在配置文件修改的。

              一般查看这些的命令组合: netstat -anltup

            3.服务和端口是一个一一对应的关系。相互依赖,相互衬托的。服务开启,端口也就启动了。

                真正影响安全的是服务,而非端口。

            4.关闭不必要的服务。一般系统需要的服务有syslog(记录日志功能),sshd(远程连接服务器系统)network(激活网络接口的脚本,

                使用网络必须的)xinetd(支持多种网络服务的核心守护进程。包括telnet .vsftpd) iptables(内置的防火墙软件)

                atd(特定时间的指定事物服务)crond(自动安排进程提供运行服务)

                这些是必须开启支撑linux工作。此外,还有些和业务相关的可以开启外,其它的建议关闭。

    密码登录安全:

        密码设置安全:一般8位以上的。数字,字母和特殊字符。定期更换密码等。可以加入防止密码探测机制(一个帐号几次失败后。拒绝访问)

            此外,还可以设置密钥认证登录(限于secureCRT等远程登录程序)可以不通过密码登录。

            在 secureCRT上  工具=创建密钥

            上传密钥到linux,导入密钥

            # ssh-keygen -i -f Identity.pub >>/root/.ssh/authorized_keys

            然后修改登录方式为公钥登录找到生成密钥的路径选中。

            进入linux:修改 ssh2的配置文件:

            Port 22  #这个是ssh连接的默认端口可以改变

            Protocol 2   #使用ssh2

            PubkeyAuthentication yes  #启动 pubkey 认证

            AuthorizedKeysFile     .ssh/authorized_keys    #publickey 文件路径

            PasswordAuthentication no    #不使用密码认证

            # service  sshd  restart    #重启服务使新配置的ssh生效。

    其它设置:

        1.禁止外部ping 测试:

          #  echo "1"> /proc/sys/net/ipv4/icmp_echo_ignore_all 

          将忽略ping响应策略开启。

        2.删除系统默认的不必要的服务和账户

            /etc/passwd    /etc/group

            这2个目录存放账户和组的信息:

            可以删除的有  adm  lp sync shutdown halt new  uucp operator ames gopher 等。

            此外  默认shell为 /sbin/nologin 的为不可登录账户

        3.限制 shell记录历史条数

            编辑  /etc/profile 修改  HISTSIZE 参数。

            这里还有个小技巧  : 在命令行下输入  HISTCONTROL=ignorespace   然后在输入命令的时候前面多个空格则history不记录。

        4.关闭 selinux    

            临时关闭 :  setenforce 0

            永久关闭: vi /etc/selinux/conf  (centos 6 下)

                SELINUX=disabled   重启启动系统。

本文转自 swallow_zys  51CTO博客,原文链接:http://blog.51cto.com/12042068/1897484,如需转载请自行联系原作者

继续阅读