阿里云linux服務器上使用iptables設置安全策略的方法

          2024-2-3 / 0 評論 / 1843 閱讀

          阿里云linux服務器上使用iptables設置安全策略的方法阿里云linux服務器上使用iptables設置安全策略的方法

          公司的產品一直運行在云服務器上,從而有幸接觸過aws的ec2,盛大的云服務器,最近準備有使用阿里云的彈性計算(云服務器)。前兩種云服務器在安全策略這塊做的比較好,提供簡單明了的配置界面,而且給了默認的安全策略,反觀阿里云服務器,安全策略需要自己去配置,甚至centos機器上都沒有預裝iptables(起碼我們申請兩臺上都沒有),算好可以使用yum來安裝,安裝命令如下:

          ?
          1
          yuminstall -y iptables

          iptables安裝好后就可以來配置規則了。由于作為web服務器來使用,所以對外要開放 80 端口,另外肯定要通過ssh進行服務器管理,22 端口也要對外開放,當然最好是把ssh服務的默認端口改掉,在公網上會有很多人試圖破解密碼的,如果修改端口,記得要把該端口對外開發,否則連不上就悲劇了。下面提供配置規則的詳細說明:

          ?
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          22
          23
          24
          25
          26
          27
          28
          29
          30
          31
          32
          33
          34
          35
          第一步:清空所有規則
           
          當Chain INPUT (policy DROP)時執行/sbin/iptables -F后,你將和服務器斷開連接
          所有在清空所有規則前把policy DROP該為INPUT,防止悲劇發生,小心小心再小心
          /sbin/iptables -P INPUT ACCEPT
          清空所有規則
          /sbin/iptables -F
          /sbin/iptables -X
          計數器置0
          /sbin/iptables -Z
           
          第二步:設置規則
           
          允許來自于lo接口的數據包,如果沒有此規則,你將不能通過127.0.0.1訪問本地服務,例如ping 127.0.0.1
          /sbin/iptables -A INPUT -i lo -j ACCEPT
           
          開放TCP協議22端口,以便能ssh,如果你是在有固定ip的場所,可以使用 -s 來限定客戶端的ip
          /sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT
           
          開放TCP協議80端口供web服務
          /sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
           
          10.241.121.15是另外一臺服務器的內網ip,由于之間有通信,接受所有來自10.241.121.15的TCP請求
          /sbin/iptables -A INPUT -p tcp -s 10.241.121.15 -j ACCEPT
           
          接受ping
          /sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
           
          這條規則參看:http://www.netingcn.com/iptables-localhost-not-access-internet.html
          /sbin/iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
           
          屏蔽上述規則以為的所有請求,不可缺少,否則防火墻沒有任何過濾的功能
          /sbin/iptables -P INPUT DROP
           
          可以使用 iptables -L -n 查看規則是否生效

          至此防火墻就算配置好,但是這是臨時的,當重啟iptables或重啟機器,上述配置就會被清空,要想永久生效,還需要如下操作:

          ?
          1
          2
          3
          4
          5
          /etc/init.d/iptables save
          service iptables save
           
          執行上述命令可以在文件/etc/sysconfig/iptables 中看到配置

          以下提供一個干凈的配置腳本:

          ?
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          /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 -s 10.241.121.15 -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 ,先確保ssh連接沒有問題,防止規則錯誤,導致無法連上服務器,因為沒有save,重啟服務器規則都失效,否則就只有去機房才能修改規則了。也可以參考:ubuntu iptables 配置腳本來寫一個腳本。

          最后再次提醒[],在清空規則[]之前一定要小[]心,確保Ch[]ain INPUT (polic[]y ACCEPT[])。

          服務器之家補充阿里云的linux_drop_port.sh

          ?
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          22
          23
          24
          25
          26
          27
          28
          29
          30
          31
          32
          33
          34
          35
          36
          37
          38
          39
          40
          41
          42
          43
          44
          45
          46
          47
          48
          49
          50
          51
          52
          53
          54
          55
          56
          57
          58
          59
          60
          61
          62
          63
          64
          65
          66
          67
          68
          69
          70
          71
          72
          73
          74
          75
          76
          77
          78
          79
          80
          81
          82
          83
          84
          85
          86
          87
          88
          89
          90
          91
          92
          93
          94
          95
          96
          97
          98
          99
          100
          101
          102
          103
          104
          105
          106
          107
          108
          109
          110
          111
          112
          113
          114
          115
          116
          117
          118
          119
          120
          121
          122
          123
          124
          125
          126
          127
          128
          129
          130
          131
          132
          133
          134
          135
          136
          137
          138
          139
          140
          141
          142
          143
          144
          145
          146
          147
          148
          149
          150
          151
          152
          153
          154
          155
          156
          157
          158
          159
          160
          161
          162
          163
          164
          165
          166
          167
          168
          169
          170
          171
          172
          173
          174
          175
          176
          177
          178
          179
          180
          181
          182
          183
          184
          185
          186
          187
          188
          189
          190
          191
          192
          193
          194
          195
          196
          197
          #!/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

          上述文件下載到機器內部直接執行即可。

          評論一下?

          OωO
          取消
          主站蜘蛛池模板: 国产香蕉一区二区精品视频| 一区二区福利视频| 任你躁国语自产一区在| 国产精品视频一区| 一夲道无码人妻精品一区二区| 国产乱码精品一区二区三区中| 视频一区二区在线播放| 中文字幕在线播放一区| 免费无码毛片一区二区APP| 久久精品国内一区二区三区| 亚洲一区二区电影| 无码一区二区三区亚洲人妻| ...91久久精品一区二区三区| 亚洲成a人一区二区三区| 国产成人一区二区三区电影网站| 人妻天天爽夜夜爽一区二区| 国产成人精品无码一区二区| 日本精品少妇一区二区三区| 无码精品久久一区二区三区| 国产综合精品一区二区| 中文字幕av日韩精品一区二区 | 国产精品无码AV一区二区三区 | 精品免费久久久久国产一区| 亚洲AV日韩精品一区二区三区| 亚洲一区无码精品色| 精品在线一区二区三区| 无码人妻一区二区三区av| 精品国产福利在线观看一区 | 高清国产精品人妻一区二区| 免费av一区二区三区| 亚洲一区二区三区免费观看| 成人精品一区二区不卡视频| 国产精品无码不卡一区二区三区 | 国产免费伦精品一区二区三区| 精品福利一区二区三区精品国产第一国产综合精品 | 香蕉免费一区二区三区| 中日韩精品无码一区二区三区| 精品一区二区三区在线观看l | 乱中年女人伦av一区二区| 国产视频一区二区在线播放 | 久久精品国产第一区二区|