整理一些关于SSH、FTP白名单设定的操作

SSH 访问白名单

http://www.zhixing123.cn/ubuntu/25502.html

这篇文章中讲了如何通过iptables进行ssh白名单的设定

FTP或者MySQL同理可得。


/var/log/nginx    查看nginx日志

/var/log/auth.log 查看系统日志


sshd会给每个连接fork一个进程,所以当被大量攻击的时候,ssh的进程会变得很多

为了对付这种攻击,网上查了有关于限制IP、用户连接数的,也有关于取消root账户密码登录,采用证书认证的,之前写过一篇文章免口令登录远程SSH服务就是使用证书登录的。但是我觉得最有效的方法就是在防火墙里设置IP白名单了。这样既避免了产生大量的流量,也不会产生sshd的连接进程。


配置iptables

添加两个信任的IP段,其他网段的数据包都DROP了,而不是REJECT(REJECT还要发送ICMP回应包给连接方)


# iptables -A INPUT -p tcp --dport 22 -s 120.0.0.0/8 -j ACCEPT

# iptables -A INPUT -p tcp --dport 22 -s 183.0.0.0/8 -j ACCEPT

# iptables -A INPUT -p tcp --dport 22 -j DROP


第一和第二行表示接收指定IP段的端口访问请求。

第三行表示drop其余ip段的访问。

尝试在另外一个机子连接这个ssh服务,数据包被成功DROP了。

查看iptables结果:

iptables -L -n

==============以下ubuntu下默认缺少相应服务=====================

将iptables设置成系统服务,开机自启:

chkconfig --level 345 iptables on


对重新设置过的iptables规则使用命令:

service iptables save

保存,重启后才可重用。


iptables重启:

service iptables restart


iptables配置文件:

/etc/sysconfig/iptables

远程访问服务器SSH进行配置

修改SSH的端口很大程度上能杜绝被黑客扫描,增加系统的安全系数,最近有客户修改完端口没有设置防火墙开启修改后的端口导致修改后链接不上VPS,下面教大家如何修改并在iptables里开启相应的端口:


1.修改SSH配置文件:


    vi /etc/ssh/sshd_config


找到#Port 22一段,这里是标识默认使用22端口,修改为如下:


    Port 22

    Port 1234


保存退出

重启SSH


    /etc/init.d/sshd restart


这样SSH端口将同时工作与22和1234上

2.修改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 22 -j ACCEPT

    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1234 -j ACCEPT


重启iptalbes服务:


    service iptables restart (ubuntu在这里提示没有iptables服务)


然后使用SSH工具测试你所设置的端口是否能正常使用

如果能正常使用返回到第一步,删除原来的22端口,以及修改防火墙配置文件

之所以先设置成两个端口,测试成功后再关闭一个端口,是为了方式在修改的过程中,万一出现掉线、断网、误操作等未知情况时候,还能通过另外一个端口连接上去调试以免发生连接不上的状况。


当然,你也可以直接关闭防火墙(不推荐):

重启后生效

开启:chkconfig iptables on

关闭:chkconfig iptables off


即时生效,重启后失效

开启:service iptables start

关闭:service iptables stop


service iptables save

之后你所有加的规则就会保存在/etc/sysconfig/iptables里面了;

如果不执行该命令,那么规则只保存在内存内,重新启动服务或者机器就会没有了;

==============以上ubuntu下默认缺少相应服务====================


/*****************这个ubuntu可以!********************/

将这些规则都配置成开机启动。

首先将配置好的规则保存:

sudo iptables-save > /etc/iptables-rules


然后编辑/etc/network/interface文件,在文件的末端插入:

pre-up iptables-restore < /etc/iptables-rules


这样重启以后就可以自动加载了。

如果iptables经常变化,可以在interface中再次添加以下:

post-down iptables-save > /etc/iptables-rules


这样,每次重启或down up网络interface时,都会先保存规则,重启后再恢复规则。

当然,如果突然掉电,那是保存不了上次的规则的。

===============================================


删除iptables规则:

iptables -L INPUT --line-numbers   列出INPUT 链所有的规则


删除规则的方法:

语法是: iptables -D chain rulenum [options]

其中: chain 是链的意思,就是INPUT FORWARD 之类的

rulenum 是规则的编号。从1 开始。可以使用  --line-numbers 列出规则的编号

所以,例如上面要删除一个INPUT链的规则的话可以这样:iptables -D INPUT 3

意思是删除第3条规则。


还有第二种方法。第二种办法是 -A 命令的映射,不过用-D替换-A。当你的链中规则很复杂,而你不想计算它们的编号的时候这就十分有用了。也就是说,你如何用iptables -A.... 语句定义了一个规则,则删除此规则时就用 -D 来代替- A  其余的都不变即可。

你可能感兴趣的:(server,server,ssh,ubuntu,ubuntu,服务器,ssh,ssh,input)