shell脚本自动加固ssh
最近实在无聊,看了下很多朋友都自己去一个命令一个命令的去改ssh配置,但也有大牛自己写了shell脚本来自动配置ssh脚本,我也自己写了个简单的来给大家看看.
系统:centos 7.x(64位)
cat /root/soft_shell/auto_ssh.sh
#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/opt/bin:/opt/sbin:~/bin export PATH # Check if user is root if [ $(id -u) != "0" ]; then echo "Error: You must be root to run this script, please use root to install" exit 1 fi time=`date +%Y%m%d` \cp /etc/ssh/sshd_config /etc/ssh/sshd_config.${time}bak read -p "Port(default 22):" port if [ "$port" = "" ];then port="22" fi sed -i "13c Port ${port}" /etc/ssh/sshd_config read -p "LoginGraceTime(s/m/h):" LoginGraceTime sed -i "41c LoginGraceTime ${LoginGraceTime}" /etc/ssh/sshd_config sed -i "37a\SyslogFacility AUTHPRIV" /etc/ssh/sshd_config sed -i "44a\PermitRootLogin yes" /etc/ssh/sshd_config sed -i "77a\ChallengeResponseAuthentication no" /etc/ssh/sshd_config sed -i "88a\GSSAPICleanupCredentials no" /etc/ssh/sshd_config sed -i "112a\UsePrivilegeSeparation sandbox" /etc/ssh/sshd_config sed -i 's/#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config sed -i 's/#PermitEmptyPasswords no/PermitEmptyPasswords no/g' /etc/ssh/sshd_config cp /etc/sysconfig/iptables /etc/sysconfig/iptables.${time}bak cat /dev/null > /etc/sysconfig/iptables cat >/etc/sysconfig/iptables<<EOF *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -s 127.0.0.1 -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p udp -m udp --sport 53 -j ACCEPT -A INPUT -p udp -m udp --dport 123 -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP -A INPUT -s 222.239.10.0/24 -j DROP -A INPUT -s 204.42.253.0/24 -j DROP -A INPUT -s 94.102.49.0/24 -j DROP -A INPUT -s 46.172.91.0/24 -j DROP -A INPUT -s 80.82.70.0/24 -j DROP -A INPUT -s 74.82.47.0/24 -j DROP -A INPUT -s 71.6.146.0/24 -j DROP -A INPUT -s 221.194.44.0/24 -j DROP -A INPUT -s 185.110.132.0/24 -j DROP -A INPUT -s 209.126.122.0/24 -j DROP -A INPUT -s 89.163.145.0/24 -j DROP -A INPUT -s 185.35.62.0/24 -j DROP -A INPUT -s 82.102.173.0/24 -j DROP -A INPUT -s 125.88.158.0/24 -j DROP -A INPUT -s 185.159.37.0/24 -j DROP -A INPUT -s 222.186.34.0/24 -j DROP -A INPUT -s 218.87.109.0/24 -j DROP -A INPUT -s 91.224.160.0/24 -j DROP -A INPUT -s 91.224.161.0/24 -j DROP -A INPUT -s 91.201.236.0/24 -j DROP -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -s xmr.crypto-pool.fr -j DROP -A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec --limit-burst 1 -j ACCEPT -A INPUT -m state --state INVALID,NEW -j DROP -A FORWARD -f -m limit --limit 100/sec --limit-burst 100 -j ACCEPT -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 20/sec --limit-burst 200 -j ACCEPT COMMIT EOF sshport=`netstat -ntlp|grep sshd |awk -F: '{if($4!="")print $4}'` if [ $sshport != 22 ];then sed -i "31 s/22/$port/" /etc/sysconfig/iptables fi if [ "$(awk '{if ( $3 >= 7.0 ) print "CentOS 7.x"}' /etc/redhat-release 2>/dev/null)" != "CentOS 7.x" ];then /sbin/service sshd restart /sbin/chkconfig sshd on /sbin/service iptables restart else /bin/systemctl restart sshd /usr/sbin/chkconfig sshd on /bin/systemctl restart iptables fi
评论: