Linux防火墙iptables限制几个特定ip才能访问服务器。
linux下要使用iptables限制只有指定的ip才能访问本机则需要先设置一个默认的规则
iptables有默认的规则,它可以适用于所有的访问
因为只有指定或特定的ip地址才能访问本机
所以可以将默认的规则设置为所有访问全部阻止(当然这里需要注意下,如果你要设置的机器是在远端,比如vps则需要注意在设置默认规则的同时要将与该服务器链接的ip添加进白名单,否则在设置完默认阻止后你也无法访问这台服务器,也无法再进行操作了,我们可以使用分号;或者&&来在同一个命令行下来完成默认阻止和将自己的ip添加进白名单,假如你的ip地址为1234则可以这样输入iptables -P INPUT DROP;iptables -A INPUT -s 1234 -p tcp -j ACCEPT,或者也可以指定一个端口)
设置默认规则后则可以添加白名单了
比如允许2345访问则可以
iptables -A INPUT -s 2345 -p tcp -j ACCEPT
如果要限定的不是整个服务器而只是该服务器中的某个服务
比如web服务(一般端口在80,https在443)
则我们可以使用0000/0来阻止所有的ip地址
比如
iptables -A INPUT -s 0000/0 -p tcp --dport 80 -j DROP
以及
iptables -A INPUT -s 0000/0 -p tcp --dport 443 -j DROP
来阻止所有访问web服务器的ip地址
然后再添加指定的ip到白名单
比如添加1234,我们可以
iptables -A INPUT -s 1234 -p tcp --dport 80 -j ACCEPT
如果我们允许某个网段下的所有ip都可以访问的话比如123[0-255],我们可以
iptables -A INPUT -s 1230/24 -p tcp --dport -j ACCEPT
总之不管是阻止所有的服务还是只阻止指定的服务
我们可以先将默认的规则设置为所有ip都不可访问
然后再手动添加ip地址到白名单
使用软件远程登陆方式:
目前Linux远程连接工具有很多种,您可以选择顺手的工具使用。下面使用的是名为Putty的Linux远程连接工具。该工具是免费的,且不需要安装,在网上方便地下载到。
1 启动Puttyexe程序,进入Putty主界面。
2 在Putty “Host Name”输入IP地址,在Saved Session中输入希望保存的名字(可以任意),点击“Save”;以后可以方便调用而不需要每次输入IP地址;点击“Open”进行连接。
3 初次运行时,会有下图中的提示,请选择“是(Y)”,下次运行就不会再出现该提示信息了。
4 请根据提示,分别输入您的Linux云服务器用户名和密码。密码不会显示在屏幕上。输入完成后回车即可。
1
实现此的技术原理:
在内网通过域名绑定服务器,外网SSH访问连接时,通过域名的访问,实现访问内网LINUX。
2
具体的实现过程如下:
明确LINUX服务器内网访问地址端口,确保LINUX服务器正常开启SSH服务,在内网SSH可以正常访问连接。如图所示:
3
被访问端的Linux主机上使用nat123动态域名解析Linux版本。
在被访问端的Linux服务器安装nat123客户端,并登录使用它。
4
登录网页,左侧用户中心,添加域名解析,选择动态域名解析并添加确认。
选择动态域名解析记录,使用二级域名,或自己的域名。鼠标放在输入框有向导提示。如不理解负载均衡,不要勾选多点登录。
5
新添加动态解析后,等待几分钟生效。解析生效后,动态解析域名与本地公网IP是保持对应的。可以通过ping下域名核实,返回结果IP地址为本地公网IP地址时,表示动态解析生效正常。
6
路由器端口映射,路由映射SSH访问22端口。
因
为公网IP是在路由器上的,外网访问时,需要经过路由,需要在路由器上做端口映射,将内网LINUX服务器访问22端口打通。路由器端口映射位置:转发规
则/虚拟服务器/添加允许外网访问端口和协议。我的LINUX服务器SSH服务端口是默认的22,我内网对应LINUX服务器主机的内网IP地址是
192168129。
7
外网访问时,使用动态解析域名。
在外网使用SSH访问内网LINUX服务器时,使用动态解析域名进行连接访问。域名是不变的,可以上网即可访问,再也不担心动态公网IP变化的问题。
一般是通过以下几种方式:
1、设置FTP服务器
2、NFS服务器
3、SAMBA服务器
FTP和NFS都比较简单,下面介绍一下SAMBA的配置方法:
Linux系统默认已经安装了Samba,但是没有安装Samba服务:
1,先查看安装情况:rpm -qa|grep samba
根据系统的安装情况选择下载或者通过光驱安装所缺的rpm包。
我的安装情况是:
使用命令:mount /dev/cdrom1 /mnt/cdrom1
通过mount把cdrom1挂载到系统临时目录/mnt/cdrom1,在Packets包下面使用命令:rpm -ivh sambarpm包安装。
切换到放置rpm文件的目录
[root@smb_server root]# rpm -ivh samba-common-369-151el6x86_64
这是Samba 必备的程序,必须安装
[root@smb_server root]# rpm -ivh samba-369-151el6x86_64
安装Samba 服务器程序,可以使我Windows 主机访问Samba 服务器共享的资源。
如果需要使Linux 主机访问Windows 主机上的共享资源,则还应该安装Samba 客户端程序。
[root@smb_server root]# rpm -ivh samba-client-369-151el6x86_64
2,安装samba的rpm包完成后
samba-common-369-151el6x86_64 //主要提供samba服务器的设置文件与设置文件语法检验程序testparm
samba-client-369-151el6x86_64 //客户端软件,主要提供linux主机作为客户端时,所需要的工具指令集
samba-swat-369-151el6x86_64 //基于https协议的samba服务器web配置界面
samba-369-151el6x86_64 //服务器端软件,主要提供samba服务器的守护程序,共享文档,日志的轮替,开机默认选项
Samba服务器安装完毕,会生成配置文件目录/etc/samba和其它一些samba可执行命令工具,/etc/samba/smbconf是samba的核心配置文件,/etc/initd/smb是samba的启动/关闭文件。
5、查看samba的服务启动情况
# service smb status
6、设置开机自启动
# chkconfig --level 35 smb on //在3、5级别上自动运行samba服务
7、配置smb服务
[global]
workgroup = WORKGROUP
server string = Samba Server Version %v
netbios name = ImgPath05
[ImgPath]
comment = Public stuff
path = /usr/local/nginx/html/img
public = yes
writeable = yes
browseable = yes
guest ok = yes
共享目录为:/usr/local/nginx/html/img,共享目录对外名称为:ImgPath 即在Windows看到的目录名称。
设置共享目录权限:chown -R nobody:nobody /usr/local/nginx/html/img/
8、启动或者重启smb服务
重启smb服务
测试smbconf配置是否正确
9 Windows访问共享目录,但是没有写权限,通过以下方式修改防火墙设置。
将Linux smb服务添加到防火墙的例外中 以root用户执行setup命令#setup弹出重启生效,如果不想重启,用命令#setenforce 0
单纯从iptables本身的功能来说,不行。
假如某个主机是USER,用iptables加策略的时候
iptables -A INPUT -s USER -j ACCEPT
iptables会将USER转换为当前使用的IP地址,计算机USER的IP变更后,此规则无效了。
以前有人的想是设定计划任务,固定时间间隔去探测USER当前的IP地址,与当前规则比对,如果发现变更,清除iptables原有规则,建立新的规则。
但最终没人这么做:第一,多久去探测一次?每秒?每分?周期太密影响性能,周期太长会导致某段时间网络不可用。如果这时正好用户运行一个大项目的收尾工作……
第二个问题,这种做法的逻辑超级复杂了吧?为这么一个需求做这么一个逻辑……
其他解决方法:
1、建立*** Server,每个用户分配帐号和口令,访问时先拨号,验证成功才可登录。
2、如果是指定人员,为每个人建立一个账号,在/etc/sudoer里为这些用户分配权限。用户执行管理员命令时用sudo进行。
这么做的好处是用户的权限不够,对系统的破坏性基本没有了。如果用sudo,你会在/var/log/securty里看到所有用户以sudo执行过的命令,谁干坏事一目了然。
必要的防火墙规则
将以下规则粘贴到/sbin/firewall下,再用root帐号chmod 700 /sbin/firew
之后执行firewall就保存现有的规则了,如果有新规则,在倒数第二行开始加。
### 允许ping,允许访问本机22端口,其他拒绝
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
service iptables save
Linux系统中,如果需要禁止特定ip地址访问来保证系统的安全,只需通过操作iptalbes来实现,下面就给绍下Linux如何禁止某个ip地址访问。
一、概述
这两个文件是tcpd服务器的配置文件,tcpd服务器可以控制外部IP对本机服务的访问。这两个配置文件的格式如下:
#服务进程名:主机列表:当规则匹配时可选的命令操作
server_name:hosts-list[:command]
/etc/hostsallow控制可以访问本机的IP地址,/etc/hostsdeny控制禁止访问本机的IP。如果两个文件的配置有冲突,以/etc/hostsdeny为准。
/etc/hostsallow和/etc/hostsdeny两个文件是控制远程访问设置的,可以允许或者拒绝某个ip或者ip段的客户访问linux的某项服务。
比如SSH服务,通常只对管理员开放,那就可以禁用不必要的IP,而只开放管理员可能使用到的IP段。
二、配置
1、修改/etc/hostsallow文件
#
# hostsallow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the ‘/usr/sbin/tcpd’ server
#
sshd:21013218:allow
sshd:2227715:allow
all:21824129110 #表示接受110这个ip的所有请求!
intelnetd:140116440/2552552550
intelnetd:140116790/2552552550
intelnetd:14011614199
intelnetd:LOCAL
smbd:19216800/2552552550 #允许1921680网段的IP访问smbd服务
#sendmail:19216810/2552552550
#pop3d:19216810/2552552550
#swat:19216810/2552552550
pptpd:all EXCEPT 19216800/2552552550
httpd:all
vsftpd:all
以上写法表示允许210和222两个ip段连接sshd服务(这必然需要hostsdeny这个文件配合使用),当然:allow完全可以省略的。
ALL要害字匹配所有情况,EXCEPT匹配除了某些项之外的情况,PARANOID匹配你想控制的IP地址和它的域名不匹配时(域名伪装)的情况。
2、修改/etc/hostsdeny文件
#
# hostsdeny This file describes the names of the hosts which are
# not allowed to use the local INET services, as decided
# by the ‘/usr/sbin/tcpd’ server
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hostsdeny and hostsallow In particular
# you should know that NFS uses portmap!
sshd:all:deny
intelnet:ALL
ALL:ALL EXCEPT 19216801/2552552550,192168121,
2021050/2552552550
注意看:sshd:all:deny表示拒绝了所有sshd远程连接。:deny可以省略。
3、启动服务。
注意修改完后:
#service xinetd restart
才能让刚才的更改生效。
0条评论