我的Linux安全保护
配置好WAN IP后
1、增加新用户
#useradd XXX
#passwd XXX
2、编辑ssh规则
#vi /etc/ssh/sshd_config
修改ssh端口
Port 43210
禁止root直接ssh
PermitRootLogin no
#/etc/ssh/sshd restart
3、修改防火墙开放ssh端口
#vi /etc/sysconfig/iptables
添加策略
-A INPUT -m state --state NEW -m tcp -p tcp --dport 43210 -j ACCEPT
#/etc/init.d/iptables restart
这样就可以用你的账号XXX:43210 ssh该主机了。
4、因为iptables允许ping,所以会有不少肉鸡通过扫描察觉主机所在,从而不断发起恶意的ssh访问。因此若不需要ping,可以进行禁ping操作。
方法一可以修改iptables
#-A INPUT -p icmp -j ACCEPT 注释掉这句,即是不开放ping
或者将ACCEPT修改为DROP,即是将ping包丢弃
-A INPUT -p icmp -j DROP
方法二也可以直接在命令行输入:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 表示Linux禁ping
由于该命令只是对该开机状态起效,重启机器后将会失效,所以一般将该命令放进/etc/rc.d/rc.local,表示开机自运行。
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all 表示Linux允许ping
但是由于一些监控服务可能需要通过ping来判断服务器的健康状态,所以可能不能禁ping.
5、为避免恶意的ssh,可以使用脚本自动识别恶意的IP并将其加入禁止访问列表
#vi /usr/bin/Prevent.sh
#!/bin/bash
#Prevent SSH Attack
SLEEPTIME=30 每30秒检测一次
lastb -n 500 | grep -v "^$" | grep -v "btmp" | awk '{print $3}' | sort | uniq -c | sort -nr > attack.log
while true
do
while read line
do
IP=`echo $line | awk '{print $2}'`
TIME=`echo $line | awk '{print $1}'`
if [ "$TIME" -gt 10 ];then
grep "$IP" /etc/hosts.deny &> /dev/null
if [ "$?" -ne 0 ];then
echo "sshd:$IP">>/etc/hosts.deny
fi
fi
done <attack.log
/bin/sleep $SLEEPTIME
done
赋予脚本可执行的权限。
#chmod 770 Prevent.sh
#sh Prevent.sh
同理,重启机器后该脚本失效。所以一般将该命令放进/etc/rc.d/rc.local,表示开机自运行。
#vi /etc/rc.d/rc.local
sh /usr/bin/Prevent.sh
6、至此,安全防护配置完成。
配置好WAN IP后
1、增加新用户
#useradd XXX
#passwd XXX
2、编辑ssh规则
#vi /etc/ssh/sshd_config
修改ssh端口
Port 43210
禁止root直接ssh
PermitRootLogin no
#/etc/ssh/sshd restart
3、修改防火墙开放ssh端口
#vi /etc/sysconfig/iptables
添加策略
-A INPUT -m state --state NEW -m tcp -p tcp --dport 43210 -j ACCEPT
#/etc/init.d/iptables restart
这样就可以用你的账号XXX:43210 ssh该主机了。
4、因为iptables允许ping,所以会有不少肉鸡通过扫描察觉主机所在,从而不断发起恶意的ssh访问。因此若不需要ping,可以进行禁ping操作。
方法一可以修改iptables
#-A INPUT -p icmp -j ACCEPT 注释掉这句,即是不开放ping
或者将ACCEPT修改为DROP,即是将ping包丢弃
-A INPUT -p icmp -j DROP
方法二也可以直接在命令行输入:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 表示Linux禁ping
由于该命令只是对该开机状态起效,重启机器后将会失效,所以一般将该命令放进/etc/rc.d/rc.local,表示开机自运行。
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all 表示Linux允许ping
但是由于一些监控服务可能需要通过ping来判断服务器的健康状态,所以可能不能禁ping.
5、为避免恶意的ssh,可以使用脚本自动识别恶意的IP并将其加入禁止访问列表
#vi /usr/bin/Prevent.sh
#!/bin/bash
#Prevent SSH Attack
SLEEPTIME=30 每30秒检测一次
lastb -n 500 | grep -v "^$" | grep -v "btmp" | awk '{print $3}' | sort | uniq -c | sort -nr > attack.log
while true
do
while read line
do
IP=`echo $line | awk '{print $2}'`
TIME=`echo $line | awk '{print $1}'`
if [ "$TIME" -gt 10 ];then
grep "$IP" /etc/hosts.deny &> /dev/null
if [ "$?" -ne 0 ];then
echo "sshd:$IP">>/etc/hosts.deny
fi
fi
done <attack.log
/bin/sleep $SLEEPTIME
done
赋予脚本可执行的权限。
#chmod 770 Prevent.sh
#sh Prevent.sh
同理,重启机器后该脚本失效。所以一般将该命令放进/etc/rc.d/rc.local,表示开机自运行。
#vi /etc/rc.d/rc.local
sh /usr/bin/Prevent.sh
6、至此,安全防护配置完成。