作者: xiaogang

  • Linux下开放端口 防火墙常用命令

    最近春风把音乐站转移到了Linux系统上,转移过去后网站后台音乐远程FTP扫描入库程序不能用了,连接不上、获取不到目录检查了PHP配置没有发现问题,后来把防火墙关了就正常了,下面介绍下Linux防火墙的配置方法。
    操作系统:Linux (CentOS)
    网站程序:PHP音乐远程FTP扫描入库程序
    ssh客户端设置有两种方法:
    1.命令添加防火墙端口

    /*添加80端口*/
    #/sbin/iptables -I INPUT -p tcp –dport 80 -j ACCEPT
    /*添加21端口*/
    #/sbin/iptables -I INPUT -p tcp –dport 21 -j ACCEPT
    /*写入到配置文件*/
    #/etc/rc.d/init.d/iptables save
    /*重启防火墙*/
    #/etc/init.d/iptables restart
    

    2.更改/etc/sysconfig/iptables添加防火墙端口

    #vi /etc/sysconfig/iptables
    

    增加如下两行:

    -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT
    

    重启防火墙:

    #/etc/init.d/iptables restart
    关闭开启防火墙:
    关闭防火墙服务:
    #/etc/init.d/iptables stop
    开启防火墙服务:
    #/etc/init.d/iptables start
    重启防火墙服务
    /etc/rc.d/init.d/iptables restart
    永久关闭 重启后不会复原:
    #chkconfig iptables off
    开启:
    chkconfig iptables on
    查看防火信息:
    /etc/init.d/iptables status
    

    服务器遭受到大量的大量SYN_RECV,80端号占死,网站打不开,没有硬防,可以解决吗?
    1.

    sysctl -w net.ipv4.tcp_syncookies=1 #启用使用syncookies
    sysctl -w net.ipv4.tcp_synack_retries=1 #降低syn重试次数
    sysctl -w net.ipv4.tcp_syn_retries=1 #降低syn重试次数
    sysctl -w net.ipv4.tcp_max_syn_backlog=6000 #最大半连接数
    sysctl -w net.ipv4.conf.all.send_redirects=0
    sysctl -w net.ipv4.conf.all.accept_redirects=0 #不接受重定向的icmp數據包
    sysctl -w net.ipv4.tcp_fin_timeout=30
    sysctl -w net.ipv4.tcp_keepalive_time=60
    sysctl -w net.ipv4.tcp_window_scaling=1
    sysctl -w net.ipv4.icmp_echo_ignore_all=1 #禁止ICMP
    sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 #ICMP禁止广播
    

    2.限制单位时间内连接数
    如

    iptables -N syn-flood
    iptables -A FORWARD -p tcp –syn -j syn-flood
    iptables -A INPUT -p tcp –syn -j syn-flood
    iptables -A syn-flood -p tcp –syn -m limit –limit 3/s –limit-burst 1 -j ACCEP
    iptables -A syn-flood -j DROP
    iptables -A INPUT -i eth0 -p tcp ! –syn -m state –state NEW -j DROP
    iptables -A INPUT -p tcp –syn -m state –state NEW -j DROP
    

    3 如果还是不行,

    iptables -A INPUT -p tcp –dport 80 -m recent –name BAD_HTTP_ACCESS –update –seconds 60 –hitcount 30 -j REJECT
    iptables -A INPUT -p tcp –dport 80 -m recent –name BAD_HTTP_ACCESS –set -j ACCEP
    

    如攻击过来的流量大于你的服务器的流量,那就没有什么办法了,如果流量不大,以上方法,可以暂时保证你的80可以访问
    如果你的内核已经支持iptables connlimit可以使用, iptables 设定部份,也可以使用

    iptables -I FORWARD -p tcp –syn -m connlimit –connlimit-above 5 -j DROP
    

    或

    iptables -A INPUT -p tcp –syn –dport 80 -m connlimit –connlimit-above 5 -j REJECT
    

    对付SYN FLOOD的话,真正起作用的是:

    sysctl -w net.ipv4.tcp_syncookies=1 #启用使用syncookies
    sysctl -w net.ipv4.tcp_synack_retries=1 #降低syn重试次数
    

    其他IPTABLES的限制速度功能不能用来对付SYN FLOOD的(不能阻止拒绝服务,但是确实可以防止服务器CRASH)。

  • 阿里云建立SWAP交换分区脚本

    工具:add_swap.sh   

     

    所有执行的脚本都需要root身份来执行,执行方法:以root身执行命令:bash xxx.sh 

    功能:自动检测系统swap分区大小,交换分区大小不合理则自动新增并挂载上 

    适用系统版本:兼容线上所有linux版本 

    执行方法:以root身执行命令:bash add_swap.sh  执行命令后,稍等片刻即可! 

    解决了什么问题:一键式检测系统swap分区大小,如果低于物理内存的2倍则自动创建一个物理内存2倍大小的swap分区 

    备注:swap不是越大越好,由于磁盘速度相对于内存较为低下,所以大swap反而会造成业务响应更慢,通常为2至2.5倍就好,如果有特殊需求可以更大。 

    内存为32G以上则不考虑 

    内存在16G至32G之间,交换分区配置为8G 

    内存在4G至16G之间,交换分区配置为4G 

    内存小于4G的则配置交换分区为2G 

     

    使用方法: 

     

    1.附件解压后,把add_swap.sh脚本丢到 /root目录下,然后执行 bash add_swap.sh 。 

    2.用putty远程登录服务器,把脚本添加到fstab文件中让系统引导时自动启动 

    echo "/var/swap_file swap swap defaults 0 0" >>/etc/fstab

     

    3.用winscp编辑/etc/rc.local 文件,删除掉swapoff -a 这一行; 

    4.用reboot命令重启服务器看看,有了吧!

    工具下载:add_swap.zip

  • 阿里云CentOS服务器挂载数据盘

    在这个网站比访客都要多的年代,做网站要考虑怎么节省,因为真是一分钱的盈利也没有呀!
    以前用的是Windows的系统,听朋友说Linux占用内存小,而且效率要高一些,还稳定,当时我心头一热就买了一台阿里云,装了Centos 买了20G的数据盘。
    刚刚接触Linux 所以万事靠笔,先记下咋挂载数据盘。
    阿里云Linux云服务器数据盘默认是未做分区和格式化的,使用前需要先挂载数据盘。
    第一步:查看数据盘在没有分区之前使用 df -h命令,是无法查看到数据盘的,可以用

    fdisk -l
    

    第二步:对数据盘进行分区:执行fdisk /dev/xvdb命令对数据盘进行分区,根据提示,依次输入“n”、“p”、“1”、两次回车,“w”,分区。

    fdisk /dev/xvdb
    

    第三步:查看新的分区使用fdisk -l命令可以看到,新的分区 xvdb1 已经建立完成了。

    fdisk -l
    

    第四步:格式化新分区使用mkfs.ext3 /dev/xvdb1命令对新分区进行格式化,格式化的时间根据硬盘大小有所不同。

    mkfs.ext3 /dev/xvdb1  或  mkfs.ext4 /dev/xvdb1
    

    第五步:添加分区信息使用echo ‘/dev/xvdb1 /mnt ext3 defaults 0 0’ >> /etc/fstab命令写入新分区信息。

    echo '/dev/xvdb1              /www                    ext3    defaults        0 0' >> /etc/fstab
    或
    echo '/dev/xvdb1              /www                    ext4    defaults        0 0' >> /etc/fstab
    

    第六步:cat /etc/fstab命令查看,是否写入成功。

    cat /etc/fstab
    

    第七步:使用mount -a命令挂载新分区,然后用df -h命令查看,出现 /dev/xvdb1 那一行就说明挂载成功,可以开始使用新的分区了。

    mount -a
    df -h