linux实用资料(iptables,系统参数,NFS)

 

防火墙介绍

与防火墙相关的配置文件

/etc/sysconfig/iptables-config

/etc/sysconfig/iptables

 

基本操作

1、清除所有的规则。

1)清除预设表filter中所有规则链中的规则。

# iptables -F

 

2)清除预设表filter中使用者自定链中的规则。

#iptables -X

#iptables -Z

 

2、设置链的默认策略。一般有两种方法。

1)首先允许所有的包,然后再禁止有危险的包通过放火墙。

 

#iptables -P INPUT ACCEPT

#iptables -P OUTPUT ACCEPT

#iptables -P FORWARD ACCEPT

2)首先禁止所有的包,然后根据需要的服务允许特定的包通过防火墙。

 

#iptables -P INPUT DROP

#iptables -P OUTPUT DROP

#iptables -P FORWARD DROP

 

3、列出表/链中的所有规则。默认只列出filter表。

#iptables -L

 

4、向链中添加规则。下面的语句用于开放网络接口:

#iptables -A INPUT -i lo -j ACCEPT

#iptables -A OUTPUT -o lo -j ACCEPT

#iptables -A INPUT -i eth0 -j ACEPT

#iptables -A OUTPUT -o eth1 -j ACCEPT

#iptables -A FORWARD -i eth1 -j ACCEPT

#iptables -A FORWARD -0 eth1 -j ACCEPT

 

注意:由于本地进程不会经过FORWARD链,因此回环接口lo只在INPUTOUTPUT两个链上作用。

 

设置基本的规则匹配

1、指定协议匹配。

1)匹配指定协议。

#iptables -A INPUT -p tcp

2)匹配指定协议之外的所有协议。

#iptables -A INPUT -p !tcp

 

2、指定地址匹配。

1)指定匹配的主机。

#iptables -A INPUT -s 192.168.0.18

2)指定匹配的网络。

#iptables -A INPUT -s 192.168.2.0/24

 

3)匹配指定主机之外的地址。

#iptables -A FORWARD -s !192.168.0.19

4)匹配指定网络之外的网络。

#iptables -A FORWARD -s ! 192.168.3.0/24

 

3、指定网络接口匹配。

1)指定单一的网络接口匹配。

#iptables -A INPUT -i eth0

#iptables -A FORWARD -o eth0

 

2)指定同类型的网络接口匹配。

#iptables -A FORWARD -o ppp+

 

4、指定端口匹配。

1)指定单一端口匹配。

#iptables -A INPUT -p tcp --sport www

#iptables -A INPUT -p udp –dport 53

 

2)匹配指定端口之外的端口。

#iptables -A INPUT -p tcp –dport !22

 

3)匹配端口范围。

#iptables -A INPUT -p tcp –sport 22:80

 

4)匹配ICMP端口和ICMP类型。

#iptables -A INOUT -p icmp –icimp-type 8

 

5)指定ip碎片。

每个网络接口都有一个MTU(最大传输单元),这个参数定义了可以通过的数据包的最大尺寸。如果一个数据包大于这个参数值时,系统会将其划分成更小的数据包(称为ip碎片)来传输,而接受方则对这些ip碎片再进行重组以还原整个包。这样会导致一个问题:当系统将大数据包划分成ip碎片传输时,第一个碎片含有完整的包头信息(IP+TCPUDPICMP),但是后续的碎片只有包头的部分信息(如源地址、目的地址)。因此,检查后面的ip碎片的头部(象有TCPUDPICMP一样)是不可能的。假如有这样的一条规则:

#iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d 192.168.2.100 –dport 80 -j ACCEPT

 

并且这时的FORWARDpolicyDROP时,系统只会让第一个ip碎片通过,而余下的碎片因为包头信息不完整而无法通过。可以通过—fragment/-f 选项来指定第二个及以后的ip碎片解决上述问题。

#iptables -A FORWARD -f -s 192.168.1.0/24 -d 192.168.2.100 -j ACCEPT

注意现在有许多进行ip碎片攻击的实例,如DoS攻击,因此允许ip碎片通过是有安全隐患的,对于这一点可以采用iptables的匹配扩展来进行限制。

 

设置扩展的规则匹配

 

1、多端口匹配。

1)匹配多个源端口。

#iptables -A INPUT -p tcp -m multiport –sport 22,53,80,110

 

2)匹配多个目的端口。

#iptables -A INPUT -p tcp -m multiport –dpoort 22,53,80

 

3)匹配多端口(无论是源端口还是目的端口)

#iptables -A INPUT -p tcp -m multiport –port 22,53,80,110

 

2、指定TCP匹配扩展

 

使用 tcp-flags 选项可以根据tcp包的标志位进行过滤。

#iptables -A INPUT -p tcp –tcp-flags SYN,FIN,ACK SYN

#iptables -A FROWARD -p tcp –tcp-flags ALL SYN,ACK

 

上实例中第一个表示SYNACKFIN的标志都检查,但是只有SYN匹配。第二个表示ALLSYNACKFINRSTURGPSH)的标志都检查,但是只有设置了SYNACK的匹配。

 

#iptables -A FORWARD -p tcp --syn

选项—syn相当于”--tcp-flags SYN,RST,ACK SYN”的简写。

 

3limit速率匹配扩展。

1)指定单位时间内允许通过的数据包个数,单位时间可以是/second/minute/hour/day或使用第一个子母。

#iptables -A INPUT -m limit --limit 300/hour

 

2 )指定触发事件的阀值。

#iptables -A INPUT -m limit –limit-burst 10

用来比对一次同时涌入的封包是否超过10个,超过此上限的包将直接丢弃。

 

3)同时指定速率限制和触发阀值。

#iptables -A INPUT -p icmp -m limit –-limit 3/m –limit-burst 3

表示每分钟允许的最大包数量为限制速率(本例为3)加上当前的触发阀值burst数。任何情况下,都可保证3个数据包通过,触发阀值burst相当于允许额外的包数量。

 

4)基于状态的匹配扩展(连接跟踪)

 

每个网络连接包括以下信息:源地址、目标地址、源端口、目的端口,称为套接字对(socket pairs);协议类型、连接状态(TCP协议)

和超时时间等。防火墙把这些信息称为状态(stateful)。状态包过滤防火墙能在内存中维护一个跟踪状态的表,比简单包过滤防火墙具有更大的安全性,命令格式如下:

iptables -m state –-state [!]state [,state,state,state]

其中,state表是一个逗号分割的列表,用来指定连接状态,4种:

>NEW: 该包想要开始一个新的连接(重新连接或连接重定向)

>RELATED:该包是属于某个已经建立的连接所建立的新连接。举例:

FTP的数据传输连接和控制连接之间就是RELATED关系。

>ESTABLISHED:该包属于某个已经建立的连接。

>INVALID:该包不匹配于任何连接,通常这些包被DROP

 

例如:

1)在INPUT链添加一条规则,匹配已经建立的连接或由已经建立的连接所建立的新连接。即匹配所有的TCP回应包。

#iptables -A INPUT -m state –state RELATED,ESTABLISHED

 

2)在INPUT链链添加一条规则,匹配所有从非eth0接口来的连接请求包。

#iptables -A INPUT -m state -–state NEW -i !eth0

 

防火墙配置举例

#lo config

-A INPUT -i lo -j ACCEPT

-A OUTPUT -o lo -j ACCEPT

#ssh config

-A INPUT -s 172.16.15.0/24 -p tcp -m tcp --dport 22 -j ACCEPT

-A INPUT -s 172.16.209.0/24 -p tcp -m tcp --dport 22 -j ACCEPT

-A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT

-A INPUT -s 172.16.15.0/24 -p tcp -m tcp --sport 22 -j ACCEPT

-A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT

#TCP

-A INPUT -p tcp --dport 53 -j ACCEPT

-A INPUT -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT

-A OUTPUT -p tcp --dport 53 -j ACCEPT

-A OUTPUT -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT

##udp

-A INPUT -p udp --dport 53 -j ACCEPT

-A INPUT -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT

-A OUTPUT -p udp --dport 53 -j ACCEPT

-A OUTPUT -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT

#HTTP config

-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

-A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT

#SMB config

-A INPUT -p tcp -m tcp --dport 137 -j ACCEPT

-A OUTPUT -p tcp -m tcp --sport 137 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 445 -j ACCEPT

-A OUTPUT -p tcp -m tcp --sport 445 -j ACCEPT

#TOMCAT config

-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT

-A OUTPUT -p tcp -m tcp --sport 8080 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 8430 -j ACCEPT

-A OUTPUT -p tcp -m tcp --sport 8430 -j ACCEPT

-A OUTPUT -p tcp --sport 8430 -m state --state ESTABLISHED -j ACCEPT

#maven service

-A INPUT -p tcp -m tcp --dport 9050 -j ACCEPT

-A OUTPUT -p tcp -m tcp --sport 9050 -j ACCEPT

#MSSQL out config

-A OUTPUT -p tcp --dport 1433 -j ACCEPT

-A INPUT -p tcp --sport 1433 -m state --state ESTABLISHED -j ACCEPT

#ICMP config

-A INPUT -p icmp -j ACCEPT

-A OUTPUT -p icmp -j ACCEPT

########SF

-A INPUT -p tcp -m tcp --dport 7080 -j ACCEPT

-A OUTPUT -p tcp -m tcp --sport 7080 -j ACCEPT

-A OUTPUT -p tcp --sport 7080 -m state --state ESTABLISHED -j ACCEPT

系统参数配置

网络参数配置

/etc/hosts 主机列表

/etc/sysconfig/network-s/ifcfg-eth* 网卡配置

/etc/resolv.conf  dns解析配置

/etc/sysconfig/network 主机名网关配置

/etc/init.d/network restart重新启动网络配置

环境变量的配置

一般将变量放置在/etc/profile.d/下,比如:

我们定义一个YOWN_HOME目录,新建一个myapp_path.sh文件,输入内容:

export YOWN_HOME=/usr/java/jdk1.5

export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

保存退出,重加载文件

source ./myapp_path.sh

这样,我们就配置好了环境变量YOWN_HOM

 

全局参数

/etc/rc.d/rc.local中添加并在命令行

echo 65536>/proc/sys/fs/file-max 增加同时打开的文件数

echo 1 >/proc/sys/net/ipv4/tcp_syncookies来防止synflood攻击

echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all 拒绝所有的ICMP

常用服务安装

RPM安装有关的命令

rpm -qa 查询系统全部安装的包

rpm -qf filename查询包含该文件的软件包

rpm-qp 软件包名,查询该软件包

rpm –ivh 包名,安装包

rpm –e 包名,删除安装

比如:rpm –qa |grep yown 查找是否安装了yown

 

下面结合全部内容,举例说明

安装apache + mysql

版本说明及下载地址:

Apache 2.2.4

http://www.axint.net/apache/httpd/httpd-2.2.4.tar.gz

MySQL 5.0.41

http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.41-freebsd6.0-i386.tar.gz/from/http://ftp.stu.edu.tw/pub/Unix/Database/Mysql/

 

请先分别下载以上文件并上传到/usr/home/yown/install

ROOT用户登录,开始安装

1.安装mysql数据库

先建立增加一个mysql的数据库用户,执行命令如下:

yownwww#pw groupadd mysql

yownwww#pw useradd mysql –g mysql –s /nonexistent

 

继续执行如下命令:

yownwww#cd /usr/home/yown/install

yownwww#tar –zvxf mysql-5.0.41-freebsd6.0-i386.tar.gz

yownwww#cd mysql-5.0.41-freebsd6.0-i386

继续执行如下编译命令:

yownwww#./configure --prefix=/usr/local/mysql

yownwww#make

yownwww#make install

yownwww#./scripts/mysql_install_db

修改如下文件以及文件夹权限,否则mysql不能正常启动

yownwww#chown –R root /usr/loca/mysql

yownwww#chgrp –R mysql /usr/local/mysql

yownwww#chown –R root /usr/local/mysql/bin

yownwww#chgrp –R mysql /usr/local/mysql/bin

yownwww#chown –R root /usr/local/mysql/var

yownwww#chgrp –R mysql /usr/local/mysql/var

yownwww#chmod 777 /usr/local/mysql/var

yownwww#chown –R root /usr/local/mysql/var/mysql

yownwww#chgrp –R mysql /usr/local/mysql/var/mysql

yownwww#chmod 777 /usr/local/mysql/var/mysql

yownwww#chown –R root /usr/local/mysql/var/mysql/*

yownwww#chgrp –R mysql /usr/local/mysql/var/mysql/*

yownwww#chmod 777 /usr/local/mysql/var/mysql/*

yownwww#chmod 777 /usr/local/mysql/lib/mysql/libmysqlclient.a

yownwww#/usr/local/mysql/bin/mysqld_safe --user=mysql &

 

2.安装apache服务器

执行如下命令:

yownwww#cd /usr/home/yown/install

yownwww#tar –zvxf httpd-2.2.4.tar.gz

yownwww#cd httpd-2.2.4

yownwww#./configure --prefix=/usr/local/apache --enable-so

yownwww#make

yownwww#make install

 

3.修改apache配置文件

假如服务器IP192.168.1.6

执行如下命令:

yownwww#vi /usr/local/apache/conf/httpd.conf

1)查找 #Listen 12.34.56.78:80 行,将该行下面的内容修改为

Listen 192.168.1.6:80 #此处为服务器的IP地址

2)查找ServerAdmin you@your.address,将那行的email改为邮箱地址。

3)查找DocumentRoot "/usr/local/apache/htdocs",将那行内容更改为DocumentRoot "/usr/home/www"。请先创建目录/usr/home/wwwi用于存放代码!

4)查找DirectoryIndex index.html index.html.var,将那行内容更改为 DirectoryIndex index.html index.php index.htm

6)查找AddDefaultCharset ISO-8859-1,将那行内容更改为AddDefaultCharset UTF-8

保存后退出,至此配置apache完毕,你可以访问一下http:// 192.168.1.6若没出错即配置成功!

 

4.apache+mysql开机后自动运行

执行如下命令:

首先,产生apache服务启动脚本:

yownwww#cd /usr/local/etc/rc.d

yownwww#vi apache.sh

添加如下内容:

/usr/local/apache/bin/apachectl start &

执行:wq命令保存后退出,并执行如下命令:

yownwww#chmod 777 apache.sh

接着,产生mysql服务启动脚本:

yownwww#vi mysql.sh

添加如下内容:

/usr/local/mysql/bin/mysqld_safe &

执行:wq!命令保存后退出,并执行如下命令:

yownwww#chmod 777 mysql.sh

 

至此,我们已成功完成了apache+mysql的安装配置

 

NFS文件共享

 

rpm -qa|grep nfs 检查是否安装了NFS

rpm -qa|grep portmap检查是否安装了portmap (rpc)

服务器端的设定都在/etc/exports

比如可以编辑/etc/exports为: 

 /home/yown/nfs_dir 192.168.0.*(rw) *(ro)

 

设定的参数主要:

 rw:可读写的权限;

 ro:只读的权限;

 no_root_squash:登入到NFS主机的用户如果是ROOT用户,他就拥有ROOT的权限,此参数很不安全,建议不要使用。

 root_squash:在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID GID 都会变成 nobody 那个系统账号的身份;

 anonuid:将登入NFS主机的用户都设定成指定的user id,ID必须存在于/etc/passwd中。

 anongid:同 anonuid ,为group ID

 sync:资料同步写入存储器中。

 async:资料会先暂时存放在内存中,不会直接写入硬盘。

 insecure 允许从这台机器过来的非授权访问。 

 

 设定好后执行以下命令启动NFS:

 /etc/rc.d/init.d/portmap start (REDHATPORTMAP是默认启动的)

 /etc/rc.d/init.d/nfs start

 

 exportfs命令:

 如果我们在启动了NFS之后又修改了/etc/exports,可以用exportfs命令来使改动立刻生效

 exportfs -rv  全部重新 export 一次

 exportfs -au  全部都卸载。

 

客户端操作:

 1showmount命令用法

 showmount

 -a :这个参数是一般在NFS SERVER上使用,是用来显示已经mount上本机nfs目录的cline机器。

 -e :显示指定的NFS SERVERexport出来的目录。

 例如:

 showmount -e 192.168.0.2

 

 2mount nfs目录的方法:

 Linux: mount -t nfs 192.168.0.2:/home/yown/nfs_dir /mnt/nfs

 Solaris:mount -F nfs 192.168.0.2:/home/yown/nfs_dir /mnt/nfs

 BSD: mount 192.168.0.2:/home/yown/nfs_dir /mnt/nfs

 

 3mount nfs的其它可选参数:

 HARD mountSOFT MOUNT

 HARD: NFS CLIENT会不断的尝试与SERVER的连接(在后台,不会给出任何提示信息,LINUX下有的版本仍然会给出一些提示),直到MOUNT上。

 SOFT:会在前台尝试与SERVER的连接,是默认的连接方式。当收到错误信息后终止mount尝试,并给出相关信息。

 例如:mount -F nfs -o hard 192.168.0.10:/nfs /nfs

 对于到底是使用hard还是soft的问题,这主要取决于你访问什么信息有关。例如你是想通过NFS来运行X PROGRAM的话,你绝对不会希望由于一些意外的情况(如网络速度一下子变的很慢,插拔了一下网卡插头等)而使系统输出大量的错误信息,如果此时你用的是HARD方式的话,系统就会等待,直到能够重新与NFS SERVER建立连接传输信息。另外如果是非关键数据的话也可以使用SOFT方式,如FTP数据等,这样在远程机器暂时连接不上或关闭时就不会挂起你的会话过程。

 

4、与NFS有关的命令

 nfsstat  查看NFS的运行状态

  rpcinfo -p 192.168.0.2 查看rpc执行信息

 

5、注意NFS安全问题:

 1、合理的设定/etc/exports中共享出去的目录,最好能使用anonuidanongid以使MOUNTNFS SERVERCLIENT仅仅有最小的权限,最好不要使用root_squash

 2、使用IPTABLE防火墙限制能够连接到NFS SERVER的机器范围

 iptables -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPT

 iptables -A INPUT -i eth0 -p UDP -s 192.168.0.0/24 --dport 111 -j ACCEPT

 iptables -A INPUT -i eth0 -p TCP -s 140.0.0.0/8 --dport 111 -j ACCEPT

 iptables -A INPUT -i eth0 -p UDP -s 140.0.0.0/8 --dport 111 -j ACCEPT

 3、为了防止可能的Dos攻击,需要合理设定NFSD COPY数目。

 4、修改/etc/hosts.allow/etc/hosts.deny达到限制CLIENT的目的

 /etc/hosts.allow

 portmap: 192.168.0.0/255.255.255.0 : allow

 

 /etc/hosts.deny

 portmap: ALL : deny

 5、改变默认的NFS 端口

 NFS默认使用的是111端口,但同时你也可以使用port参数来改变这个端口,这样就可以在一定程度上增强安全性。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值