阿里云linux服务器安全设置(防火墙策略等)

首先需要进行linux的基础安全设置,可以先参考这篇文章

http://www.jb51.net/article/94842.htm

1、Linux系统脚本

#!/bin/bash
#########################################
#Function: linux drop port
#Usage:  bash linux_drop_port.sh
#Author:  Customer Service Department
#Company:  Alibaba Cloud Computing
#Version:  2.0
#########################################

check_os_release()
{
 while true
 do
 os_release=$(grep "Red Hat Enterprise Linux Server release"/etc/issue 2>/dev/null)
 os_release_2=$(grep "Red Hat Enterprise Linux Server release"/etc/redhat-release 2>/dev/null)
 if [ "$os_release" ] && [ "$os_release_2" ]
 then
  if echo "$os_release"|grep "release 5" >/dev/null2>&1
  then
  os_release=redhat5
  echo "$os_release"
  elif echo "$os_release"|grep "release 6">/dev/null 2>&1
  then
  os_release=redhat6
  echo "$os_release"
  else
  os_release=""
  echo "$os_release"
  fi
  break
 fi
 os_release=$(grep "Aliyun Linux release" /etc/issue2>/dev/null)
 os_release_2=$(grep "Aliyun Linux release" /etc/aliyun-release2>/dev/null)
 if [ "$os_release" ] && [ "$os_release_2" ]
 then
  if echo "$os_release"|grep "release 5" >/dev/null2>&1
  then
  os_release=aliyun5
  echo "$os_release"
  elif echo "$os_release"|grep "release 6">/dev/null 2>&1
  then
  os_release=aliyun6
  echo "$os_release"
  else
  os_release=""
  echo "$os_release"
  fi
  break
 fi
 os_release=$(grep "CentOS release" /etc/issue 2>/dev/null)
 os_release_2=$(grep "CentOS release" /etc/*release2>/dev/null)
 if [ "$os_release" ] && [ "$os_release_2" ]
 then
  if echo "$os_release"|grep "release 5" >/dev/null2>&1
  then
  os_release=centos5
  echo "$os_release"
  elif echo "$os_release"|grep "release 6">/dev/null 2>&1
  then
  os_release=centos6
  echo "$os_release"
  else
  os_release=""
  echo "$os_release"
  fi
  break
 fi
 os_release=$(grep -i "ubuntu" /etc/issue 2>/dev/null)
 os_release_2=$(grep -i "ubuntu" /etc/lsb-release2>/dev/null)
 if [ "$os_release" ] && [ "$os_release_2" ]
 then
  if echo "$os_release"|grep "Ubuntu 10" >/dev/null2>&1
  then
  os_release=ubuntu10
  echo "$os_release"
  elif echo "$os_release"|grep "Ubuntu 12.04">/dev/null 2>&1
  then
  os_release=ubuntu1204
  echo "$os_release"
  elif echo "$os_release"|grep "Ubuntu 12.10">/dev/null 2>&1
  then
  os_release=ubuntu1210
  echo "$os_release"
  else
  os_release=""
  echo "$os_release"
  fi
  break
 fi
 os_release=$(grep -i "debian" /etc/issue 2>/dev/null)
 os_release_2=$(grep -i "debian" /proc/version 2>/dev/null)
 if [ "$os_release" ] && [ "$os_release_2" ]
 then
  if echo "$os_release"|grep "Linux 6" >/dev/null2>&1
  then
  os_release=debian6
  echo "$os_release"
  else
  os_release=""
  echo "$os_release"
  fi
  break
 fi
 os_release=$(grep "openSUSE" /etc/issue 2>/dev/null)
 os_release_2=$(grep "openSUSE" /etc/*release 2>/dev/null)
 if [ "$os_release" ] && [ "$os_release_2" ]
 then
  if echo "$os_release"|grep"13.1" >/dev/null 2>&1
  then
  os_release=opensuse131
  echo "$os_release"
  else
  os_release=""
  echo "$os_release"
  fi
  break
 fi
 break
 done
}

exit_script()
{
 echo -e "\033[1;40;31mInstall $1 error,will exit.\n\033[0m"
 rm-f $LOCKfile
 exit 1
}

config_iptables()
{
 iptables -I OUTPUT 1 -p tcp -m multiport --dport21,22,23,25,53,80,135,139,443,445 -j DROP
 iptables -I OUTPUT 2 -p tcp -m multiport --dport 1433,1314,1521,2222,3306,3433,3389,4899,8080,18186-j DROP
 iptables -I OUTPUT 3 -p udp -j DROP
 iptables -nvL
}

ubuntu_config_ufw()
{
 ufwdeny out proto tcp to any port 21,22,23,25,53,80,135,139,443,445
 ufwdeny out proto tcp to any port 1433,1314,1521,2222,3306,3433,3389,4899,8080,18186
 ufwdeny out proto udp to any
 ufwstatus
}

####################Start###################
#check lock file ,one time only let thescript run one time
LOCKfile=/tmp/.$(basename $0)
if [ -f "$LOCKfile" ]
then
 echo -e "\033[1;40;31mThe script is already exist,please next timeto run this script.\n\033[0m"
 exit
else
 echo -e "\033[40;32mStep 1.No lock file,begin to create lock fileand continue.\n\033[40;37m"
 touch $LOCKfile
fi

#check user
if [ $(id -u) != "0" ]
then
 echo -e "\033[1;40;31mError: You must be root to run this script,please use root to execute this script.\n\033[0m"
 rm-f $LOCKfile
 exit 1
fi

echo -e "\033[40;32mStep 2.Begen tocheck the OS issue.\n\033[40;37m"
os_release=$(check_os_release)
if [ "X$os_release" =="X" ]
then
 echo -e "\033[1;40;31mThe OS does not identify,So this script isnot executede.\n\033[0m"
 rm-f $LOCKfile
 exit 0
else
 echo -e "\033[40;32mThis OS is $os_release.\n\033[40;37m"
fi

echo -e "\033[40;32mStep 3.Begen toconfig firewall.\n\033[40;37m"
case "$os_release" in
redhat5|centos5|redhat6|centos6|aliyun5|aliyun6)
 service iptables start
 config_iptables
 ;;
debian6)
 config_iptables
 ;;
ubuntu10|ubuntu1204|ubuntu1210)
 ufwenable <<EOF
y
EOF
 ubuntu_config_ufw
 ;;
opensuse131)
 config_iptables
 ;;
esac

echo -e "\033[40;32mConfig firewallsuccess,this script now exit!\n\033[40;37m"
rm -f $LOCKfile

上述文件下载到机器内部直接执行即可。

2、设置iptables,限制访问

/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z

/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
/sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
/sbin/iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -P INPUT DROP
 service iptables save

以上脚本,在每次重装完系统后执行一次即可,其配置会保存至/etc/sysconfig/iptables

更详细的可以参考这篇文章 http://www.jb51.net/article/94839.htm

3、常用网络监控命令
(1) netstat -tunl:查看所有正在监听的端口

[root@AY1407041017110375bbZ ~]# netstat -tunl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address    Foreign Address    State
tcp  0  0 0.0.0.0:22     0.0.0.0:*     LISTEN
udp  0  0 ip:123   0.0.0.0:*
udp  0  0 ip:123   0.0.0.0:*
udp  0  0 127.0.0.1:123    0.0.0.0:*
udp  0  0 0.0.0.0:123     0.0.0.0:* 

其中123端口用于NTP服务。
(2)netstat -tunp:查看所有已连接的网络连接状态,并显示其PID及程序名称。

[root@AY1407041017110375bbZ ~]# netstat -tunp
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0     96 ip:22            221.176.33.126:52699        ESTABLISHED 926/sshd            
tcp        0      0 ip:34385         42.156.166.25:80            ESTABLISHED 1003/aegis_cli 

根据上述结果,可以根据需要kill掉相应进程。
如:
kill -9 1003

(3)netstat -tunlp
(4)netstat常用选项说明:

-t: tcp  
-u : udp
-l, --listening
       Show only listening sockets.  (These are omitted by default.)
-p, --program
       Show the PID and name of the program to which each socket belongs.
--numeric , -n
Show numerical addresses instead of trying to determine symbolic host, port or user names.

4、修改ssh的监听端口

(1)修改 /etc/ssh/sshd_config

原有的port 22

改为port 44

(2)重启服务

/etc/init.d/sshd restart
(3)查看情况

 netstat -tunl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address    Foreign Address    State
tcp  0  0 0.0.0.0:44    0.0.0.0:*     LISTEN
udp  0  0 ip:123   0.0.0.0:*
udp  0  0 ip:123   0.0.0.0:*
udp  0  0 127.0.0.1:123    0.0.0.0:*
udp  0  0 0.0.0.0:123     0.0.0.0:* 
(0)

相关推荐

  • Linux中在防火墙中开启80端口方法示例

    linux如果刚安装好防火墙时我们常用的端口是没有增加的,也就是说不能访问,那么要怎么把常用端口增加到防火墙通过状态呢,下面我们以80端口为例子吧. 最近自己在学习Linux.搭建一个LNMP环境.在测试时一切都好.然后重启Linux后.再次访问网站无法打开.最终原因是在防火墙中没有加入 80 端口的规则.具体方法如下: 在CentOS下配置iptables防火墙,是非常必要的.来我们学习如何配置!,其它版本一下: 1.打开iptables的配置文件: 代码如下 vi /etc/sysconfi

  • Linux防火墙iptables入门教程

    一.关于iptables Iptables是一个基于命令行的防火墙工具,它使用规则链来允许/阻止网络流量.当一条网络连接试图在你的系统中建立时,iptables会查找其对应的匹配规则.如果找不到,iptables将对其采取默认操作.几乎所有的Linux发行版都预装了iptables.在Ubuntu/Debian中更新/安装iptables的命令为: 复制代码 代码如下: sudo apt-get install iptables 现有的一些图形界面软件也可以替代iptables,如Firesta

  • 关闭selinux(防火墙)方法分享

    刚好手工装完一台CentOS6.4,就顺便记录一下. 复制代码 代码如下: # sestatusSELinux status:                 enabledSELinuxfs mount:                /selinuxCurrent mode:                   enforcingMode from config file:          enforcingPolicy version:                 24Policy

  • Linux下设置防火墙白名单(RHEL 6和CentOS 7)的步骤

    进入Linux 命令行,编辑防火墙规则配置文件 iptables vi /etc/sysconfig/iptables 下面是一个白名单设置的例子: # Firewall configuration written by system-config-securitylevel # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTP

  • linux下mysql开启远程访问权限 防火墙开放3306端口

    开启mysql的远程访问权限 默认mysql的用户是没有远程访问的权限的,因此当程序跟数据库不在同一台服务器上时,我们需要开启mysql的远程访问权限. 主流的有两种方法,改表法和授权法. 相对而言,改表法比较容易一点,个人也是比较倾向于使用这种方法,因此,这里只贴出改表法 1.登陆mysql mysql -u root -p 2.修改mysql库的user表,将host项,从localhost改为%.%这里表示的是允许任意host访问,如果只允许某一个ip访问,则可改为相应的ip,比如可以将l

  • linux下防火墙开启某个端口号及防火墙常用命令使用(详解)

    1.永久性生效,重启后不会复原 开启:chkconfigiptables on 关闭:chkconfigiptables off 2.即时生效,重启后复原 重启防火墙 方式一:/etc/init.d/iptables restart 方式二:service iptables restart 关闭防火墙: 方式一:/etc/init.d/iptables stop 方式二:service iptables stop 启动防火墙 方式一:/etc/init.d/iptables start 方式二:

  • 阿里云linux服务器安全设置(防火墙策略等)

    首先需要进行linux的基础安全设置,可以先参考这篇文章 http://www.jb51.net/article/94842.htm 1.Linux系统脚本 #!/bin/bash ######################################### #Function: linux drop port #Usage: bash linux_drop_port.sh #Author: Customer Service Department #Company: Alibaba Clo

  • 阿里云windows服务器安全设置(防火墙策略)

    通过防火墙策略限制对外扫描行为 请您根据您的服务器操作系统,下载对应的脚本运行,运行后您的防火墙策略会封禁对外发包的行为,确保您的主机不会再出现恶意发包的情况,为您进行后续数据备份操作提供足够的时间. Window2003的批处理文件 @rem 配置windows2003系统的IP安全策略 @rem version 3.0 time:2014-5-12 netsh ipsec static add policy name=drop netsh ipsec static add filterlis

  • 阿里云linux服务器上使用iptables设置安全策略的方法

    公司的产品一直运行在云服务器上,从而有幸接触过aws的ec2,盛大的云服务器,最近准备有使用阿里云的弹性计算(云服务器).前两种云服务器在安全策略这块做的比较好,提供简单明了的配置界面,而且给了默认的安全策略,反观阿里云服务器,安全策略需要自己去配置,甚至centos机器上都没有预装iptables(起码我们申请两台上都没有),算好可以使用yum来安装,安装命令如下: yum install -y iptables iptables安装好后就可以来配置规则了.由于作为web服务器来使用,所以对外

  • 阿里云linux服务器下安装Apache的简单方法

    随着阿里云主机的火热推出,很多的站长朋友,也开始使用阿里云服务器了.php程序,大多还是要跑在linux系统的主机上的. 今天,介绍下在阿里云的linux主机上安装apache的方法. 云服务器操作系统:CentOS 6.2 64位 客户端操作环境:Mac OSX Teminal 操作步骤: 1. 运行 Terminal,输入命令: 复制代码 代码如下: ssh username@ip,然后输入密码. 2. 安装 Apache 软件: 复制代码 代码如下: yum install httpd 3

  • 阿里云Linux CentOS 7 Docker部署使用gogs搭建自己的git服务器

    一.前言 Git是目前优秀和流行的源代码管理工具.而GitHub是一个面向开源及私有软件项目的托管云平台,但开源免费,私有收费.而公司出于商业化等目的需要搭建自己的源代码托管服务器.通过网上了解Gogs是一款不错git管理系统,而且是国内开源项目,今天我们就使用Gogs基于阿里云Linux CentOS 7 Docker部署搭建自己的git服务器. Gogs介绍(官网):https://gogs.io/ 二.步骤 1.  购买一个阿里云服务器,系统选择Linux CentOS 7 2.  doc

  • 阿里云Linux CentOS 7.2下自建MySQL的root密码忘记的解决方法

    验证环境: [root@~~/]# rpm -qa | grep mysql mysql-5.6.28-1.el6.x86_64 [root@~~/]# lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.2.1511 (Core) Release: 7.2.1511 Codename: Core [root@~

  • 阿里云ECS服务器部署django的方法

    参考 服务器安装的是Centos 系统. uwsgi是使用pip安装的. nginx是使用yum install nginx安装. python 2.7, mysql 5.5使用 yum安装. 它们之间的逻辑关系如下: the web client <-> the web server <-> the socket <-> uwsgi <-> Django uswgi负责从Django拿内容,通过socket传给 web server如nginx, 最后显示

  • 详解阿里云nginx服务器多站点的配置

    阿里云nginx服务器多站点的配置 今天配置了一下多站点,记录一下配置的过程... 1.首先要找到nginx 配置文件之所在,阿里云上的nginx.conf 文件上 /alidata/server/nginx-1.4.4/conf 中. 2.然后在conf目录下创建一个vhosts 目录,  这个目录是用来存放不同站点的配置文件的. 3.然后呢, 在nginx.conf 最后 加入一行 include /alidata/server/nginx/conf/vhosts/*.conf; user

  • 解析阿里云centos7服务器nginx配置及常见问题解答

    前言: 本文参考了jackyzm的博客:https://www.cnblogs.com/jackyzm/p/9600738.html,进行了内容的更新,并请注意这里适用的版本是centos7的版本.并且本文的配置方式曾经在版本8上失败过,因此查看本文前最好先确定服务器的版本. 而关于nginx部分问题的处理,则是参考了文章:http://www.mamicode.com/info-detail-3008792.html进行,其中包括的部分错误如下: 1.make[1]: *** [objs/Ma

  • 阿里云ECS服务器入门使用流程(新手必看教程)

    一.阿里云根据个人需要选合适的云服务器,选好cpu.内存.带宽,地域,这四个是主要的.其他可以默认选择. 二.登陆控制台 输入账号密码,进去看到服务界面,新手可能不容易看懂.点击左侧菜单,点击云服务器,显示界面如图: 点击实例,在左上角选择区域(一定要选对地域才能看到服务器),这时看到服务器信息了,如图: 大家不要看这里这么多信息,对我们有用的其实只有几个而已,别的都不用看. 更多参阅云服务器配置帮助文档. 三.连接主机 1.通过控制台连接 阿里云服务器要用到两个密码,一个是远程登录密码,一个是

随机推荐