针对没有建立swap或者swap空间比较小时创建swap空间。
1、对硬盘进行分区。
#fdisk /dev/sda
Command (m for help): p
Disk /dev/sda: 69.7 GB, 69793218560 bytes
255 heads, 63 sectors/track, 8485 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 1305 10482381 83 Linux
/dev/sda2 1829 5221 27254272+ 83 Linux
/dev/sda3 1306 1827 4192965 83 Linux
Partition table entries are not in disk order
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Selected partition 4
First cylinder (1828-8485, default 1828): 5222
Last cylinder or +size or +sizeM or +sizeK (5222-8485, default 8485): 7309
Command (m for help): t
Partition number (1-4): 4
Hex code (type L to list codes): 82
Changed system type of partition 4 to 82 (Linux swap / Solaris)
Command (m for help): p
Disk /dev/sda: 69.7 GB, 69793218560 bytes
255 heads, 63 sectors/track, 8485 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 1305 10482381 83 Linux
/dev/sda2 1829 5221 27254272+ 83 Linux
/dev/sda3 1306 1827 4192965 83 Linux
/dev/sda4 5222 7309 16771860 82 Linux swap / Solaris
Partition table entries are not in disk order
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@ENGtest sbin]# df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 10153988 3347580 6282292 35% /
/dev/sda3 4061572 3432952 418972 90% /worktmp
/dev/sda2 26400508 7456328 17581468 30% /oracle
tmpfs 3936180 0 3936180 0% /dev/shm
/dev/sdb 205392632 191892 194767412 1% /oracledata1
/dev/sdc 205392632 191892 194767412 1% /oracledata2
/dev/sdd 137272424 192132 130107264 1% /oracledata3
[root@ENGtest sbin]# fdisk -l /dev/sda
Disk /dev/sda: 69.7 GB, 69793218560 bytes
255 heads, 63 sectors/track, 8485 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 1305 10482381 83 Linux
/dev/sda2 1829 5221 27254272+ 83 Linux
/dev/sda3 1306 1827 4192965 83 Linux
/dev/sda4 5222 7309 16771860 82 Linux swap / Solaris
Partition table entries are not in disk order
2、建立swap分区,并且进行加载。
[root@ENGtest /]#
[root@ENGtest /]# fdisk -l /dev/sda
Disk /dev/sda: 69.7 GB, 69793218560 bytes
255 heads, 63 sectors/track, 8485 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 1305 10482381 83 Linux
/dev/sda2 1829 5221 27254272+ 83 Linux
/dev/sda3 1306 1827 4192965 83 Linux
/dev/sda4 5222 7309 16771860 82 Linux swap / Solaris
Partition table entries are not in disk order
[root@ENGtest /]# ls -l
total 392
drwxr-xr-x 2 root root 4096 Dec 30 13:32 bin
drwxr-xr-x 3 root root 4096 Dec 30 19:59 boot
drwxr-xr-x 11 root root 3800 Feb 2 16:23 dev
drwxr-xr-x 100 root root 12288 Feb 2 16:30 etc
drwxr-xr-x 5 root root 4096 Jan 9 21:14 home
drwxr-xr-x 2 root root 4096 Jan 21 10:59 install_doc
drwxr-xr-x 12 root root 4096 Jan 17 04:02 lib
drwxr-xr-x 8 root root 4096 Dec 30 13:31 lib64
drwx------ 2 root root 16384 Dec 30 19:53 lost+found
drwxr-xr-x 2 root root 4096 Feb 2 16:23 media
drwxr-xr-x 2 root root 0 Feb 2 16:23 misc
drwxr-xr-x 4 root root 4096 Jan 15 16:42 mnt
drwxr-xr-x 2 root root 0 Feb 2 16:23 net
drwxr-xr-x 2 root root 4096 Oct 11 2006 opt
drwxr-xr-x 6 oracle oinstall 4096 Jan 22 10:54 oracle
drwxr-xr-x 3 root root 4096 Jan 9 16:22 oracledata1
drwxr-xr-x 3 root root 4096 Jan 9 16:35 oracledata2
drwxr-xr-x 3 root root 4096 Jan 9 16:41 oracledata3
dr-xr-xr-x 150 root root 0 Feb 2 16:22 proc
drwxr-x--- 23 root root 4096 Feb 2 16:23 root
drwxr-xr-x 2 root root 12288 Feb 2 16:23 sbin
-rw-r--r-- 1 root root 199516 Jan 21 10:58 Screenshot-Oracle Database 10g Installation - Installation Method.png
drwxr-xr-x 4 root root 0 Feb 2 16:22 selinux
drwxr-xr-x 2 root root 4096 Oct 11 2006 srv
drwxrwxrwx 2 root root 4096 Feb 2 16:26 swap
drwxr-xr-x 12 root root 0 Feb 2 16:22 sys
drwxrwxrwt 17 root root 4096 Feb 2 16:23 tmp
drwxr-xr-x 16 root root 4096 Jan 16 16:28 usr
drwxr-xr-x 24 root root 4096 Dec 30 20:20 var
drwxr-xr-x 6 root root 4096 Jan 19 10:46 worktmp
[root@ENGtest /]# rmdir swap
[root@ENGtest /]# ls -l
total 384
drwxr-xr-x 2 root root 4096 Dec 30 13:32 bin
drwxr-xr-x 3 root root 4096 Dec 30 19:59 boot
drwxr-xr-x 11 root root 3800 Feb 2 16:23 dev
drwxr-xr-x 100 root root 12288 Feb 2 16:30 etc
drwxr-xr-x 5 root root 4096 Jan 9 21:14 home
drwxr-xr-x 2 root root 4096 Jan 21 10:59 install_doc
drwxr-xr-x 12 root root 4096 Jan 17 04:02 lib
drwxr-xr-x 8 root root 4096 Dec 30 13:31 lib64
drwx------ 2 root root 16384 Dec 30 19:53 lost+found
drwxr-xr-x 2 root root 4096 Feb 2 16:23 media
drwxr-xr-x 2 root root 0 Feb 2 16:23 misc
drwxr-xr-x 4 root root 4096 Jan 15 16:42 mnt
drwxr-xr-x 2 root root 0 Feb 2 16:23 net
drwxr-xr-x 2 root root 4096 Oct 11 2006 opt
drwxr-xr-x 6 oracle oinstall 4096 Jan 22 10:54 oracle
drwxr-xr-x 3 root root 4096 Jan 9 16:22 oracledata1
drwxr-xr-x 3 root root 4096 Jan 9 16:35 oracledata2
drwxr-xr-x 3 root root 4096 Jan 9 16:41 oracledata3
dr-xr-xr-x 150 root root 0 Feb 2 16:22 proc
drwxr-x--- 23 root root 4096 Feb 2 16:23 root
drwxr-xr-x 2 root root 12288 Feb 2 16:23 sbin
-rw-r--r-- 1 root root 199516 Jan 21 10:58 Screenshot-Oracle Database 10g Installation - Installation Method.png
drwxr-xr-x 4 root root 0 Feb 2 16:22 selinux
drwxr-xr-x 2 root root 4096 Oct 11 2006 srv
drwxr-xr-x 12 root root 0 Feb 2 16:22 sys
drwxrwxrwt 17 root root 4096 Feb 2 16:23 tmp
drwxr-xr-x 16 root root 4096 Jan 16 16:28 usr
drwxr-xr-x 24 root root 4096 Dec 30 20:20 var
drwxr-xr-x 6 root root 4096 Jan 19 10:46 worktmp
[root@ENGtest /]# mkswap /dev/sda4
Setting up swapspace version 1, size = 17174380 kB
[root@ENGtest /]# swapon /dev/swap
swapon: cannot stat /dev/swap: No such file or directory
[root@ENGtest /]# swapon /dev/sda4
[root@ENGtest /]# top
top - 16:33:00 up 10 min, 1 user, load average: 0.10, 0.28, 0.29
Tasks: 135 total, 4 running, 129 sleeping, 2 stopped, 0 zombie
Cpu(s): 0.5%us, 0.0%sy, 0.0%ni, 99.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 7872512k total, 814760k used, 7057752k free, 25516k buffers
Swap: 16771852k total, 0k used, 16771852k free, 330096k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2961 root 15 0 83872 10m 5316 S 1 0.1 0:02.59 Xorg
3240 root 16 0 260m 13m 8476 S 1 0.2 0:00.44 gnome-terminal
3565 root 15 0 12716 1068 792 R 1 0.0 0:00.09 top
1 root 15 0 10312 664 560 S 0 0.0 0:00.78 init
2 root RT 0 0 0 0 S 0 0.0 0:00.08 migration/0
3 root 34 19 0 0 0 S 0 0.0 0:00.00 ksoftirqd/0
4 root RT 0 0 0 0 S 0 0.0 0:00.00 watchdog/0
5 root RT 0 0 0 0 S 0 0.0 0:00.06 migration/1
6 root 34 19 0 0 0 S 0 0.0 0:00.00 ksoftirqd/1
7 root RT 0 0 0 0 S 0 0.0 0:00.00 watchdog/1
8 root 10 -5 0 0 0 S 0 0.0 0:00.05 events/0
9 root 10 -5 0 0 0 S 0 0.0 0:00.02 events/1
10 root 10 -5 0 0 0 S 0 0.0 0:00.00 khelper
11 root 11 -5 0 0 0 S 0 0.0 0:00.00 kthread
13 root 10 -5 0 0 0 S 0 0.0 0:00.00 xenwatch
14 root 10 -5 0 0 0 S 0 0.0 0:00.00 xenbus
17 root 10 -5 0 0 0 S 0 0.0 0:00.00 kblockd/0
[3]+ Stopped top
[root@ENGtest /]# df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 10153988 3347708 6282164 35% /
/dev/sda3 4061572 3432952 418972 90% /worktmp
/dev/sda2 26400508 7456328 17581468 30% /oracle
tmpfs 3936180 0 3936180 0% /dev/shm
/dev/sdb 205392632 191892 194767412 1% /oracledata1
/dev/sdc 205392632 191892 194767412 1% /oracledata2
/dev/sdd 137272424 192132 130107264 1% /oracledata3
3、修改文件 /etc/fstab或者/etc/rc.d/rc.local,是启动的时候自动加载swap
如果让swap开机就加载,应该改 /etc/fstab文件,加类似如下一行;
注:把此行中的/dev/hda7 改为您的交换分区就行;
或者把命令行直接写入 /etc/rc.d/rc.local中也行;
[root@ENGtest /]# cd etc
[root@ENGtest etc]# cd rc.d
[root@ENGtest rc.d]# ls
init.d rc0.d rc2.d rc4.d rc6.d rc.sysinit
rc rc1.d rc3.d rc5.d rc.local
[root@ENGtest rc.d]# ls -l
total 112
drwxr-xr-x 2 root root 4096 Jan 15 16:41 init.d
-rwxr-xr-x 1 root root 2255 Sep 22 2006 rc
drwxr-xr-x 2 root root 4096 Jan 15 16:41 rc0.d
drwxr-xr-x 2 root root 4096 Jan 15 16:41 rc1.d
drwxr-xr-x 2 root root 4096 Jan 15 16:41 rc2.d
drwxr-xr-x 2 root root 4096 Jan 15 16:41 rc3.d
drwxr-xr-x 2 root root 4096 Jan 15 16:41 rc4.d
drwxr-xr-x 2 root root 4096 Jan 15 16:41 rc5.d
drwxr-xr-x 2 root root 4096 Jan 15 16:41 rc6.d
-rwxr-xr-x 1 root root 220 Jun 24 2003 rc.local
-rwxr-xr-x 1 root root 26376 Jan 19 2007 rc.sysinit
[root@ENGtest rc.d]# cp rc
rc rc1.d/ rc3.d/ rc5.d/ rc.local
rc0.d/ rc2.d/ rc4.d/ rc6.d/ rc.sysinit
[root@ENGtest rc.d]# cp rc.local rc.local20090202
[root@ENGtest rc.d]# ls-l
-bash: ls-l: command not found
[root@ENGtest rc.d]# ls -l
total 120
drwxr-xr-x 2 root root 4096 Jan 15 16:41 init.d
-rwxr-xr-x 1 root root 2255 Sep 22 2006 rc
drwxr-xr-x 2 root root 4096 Jan 15 16:41 rc0.d
drwxr-xr-x 2 root root 4096 Jan 15 16:41 rc1.d
drwxr-xr-x 2 root root 4096 Jan 15 16:41 rc2.d
drwxr-xr-x 2 root root 4096 Jan 15 16:41 rc3.d
drwxr-xr-x 2 root root 4096 Jan 15 16:41 rc4.d
drwxr-xr-x 2 root root 4096 Jan 15 16:41 rc5.d
drwxr-xr-x 2 root root 4096 Jan 15 16:41 rc6.d
-rwxr-xr-x 1 root root 220 Jun 24 2003 rc.local
-rwxr-xr-x 1 root root 220 Feb 2 16:40 rc.local20090202
-rwxr-xr-x 1 root root 26376 Jan 19 2007 rc.sysinit
[root@ENGtest rc.d]# vi rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
swapon /dev/sda4
~
"rc.local" 8L, 237C written
[root@ENGtest rc.d]# ls
init.d rc0.d rc2.d rc4.d rc6.d rc.local20090202
rc rc1.d rc3.d rc5.d rc.local rc.sysinit
[root@ENGtest rc.d]# reboot
Broadcast message from root (pts/1) (Mon Feb 2 16:41:28 2009):
The system is going down for reboot NOW!
[root@ENGtest rc.d]#
[root@ENGtest rc.d]#
[root@ENGtest rc.d]# reboot
在php调用system()函数时或者c、c++等一些语言中要运行一些系统命令来执行某种操作,就要修改SELinux中的配置。
一些Linux默认都是启用SeLinux的,在安装操作系统的时候我们可以选择开启或者关闭SeLinux,但是在安装完系统之后又如何开启与关闭呢?
在/etc/sysconf下有一个SeLinux文件,使用vi打开,更改其中的SELINUX项的值就可以了。
SELINUX=disable 禁用SeLinux
SELINUX=enforcing 使用SeLinux
关闭SELinux
1.无需重启而暂时关闭SELinux
以root用户运行以下命令
# setenforce 0
这条命令的作用是把SELinux暂时设定成Permissive模式(关于Permissive Mode在以下会有介绍)
如果要恢复运行SELinux则可以运行
# setenforce 1
这条命令会把SELinux设定成Enforcing模式
2.把SELinux永久设定为Permissive模式
这里需要讲一下Permissive和Enforcing模式的区别。 SELinux有三种模式:Enforcing, Permissive and Disable.
Enforcing模式就是应用SELinux所设定的Policy, 所有违反Policy的规则(Rules)都会被SELinux拒绝
Permissive和Enforcing的区别就在于它还是会遵循SELinux的Policy,但是对于违反规则的操作只会予以记录而并不会拒绝操作
Disable 完全禁用SELinux
如果要永久设定为Permissive模式,就要修改SELinux的配置文件 /etc/sysconfig/selinux (在RHEL5下这是一个symbolic link to /etc/selinux/conf)
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=enforcing
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
修改SELINUX=permissive,重启生效。
一、配置一个filter表的防火墙
(1)查看本机关于IPTABLES的设置情况
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain RH-Firewall-1-INPUT (0 references)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
可以看出我在安装linux时,选择了有防火墙,并且开放了22,80,25端口.
如果你在安装linux时没有选择启动防火墙,是这样的
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
什么规则都没有.
(2)清除原有规则.
不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则.
[root@tp ~]# iptables -X 清除预设表filter中使用者自定链中的规则
我们在来看一下
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
什么都没有了吧,和我们在安装linux时没有启动防火墙是一样的.(提前说一句,这些配置就像用命令配置IP一样,重起就会失去作用),怎么保存。
[root@tp ~]# /etc/rc.d/init.d/iptables save
这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用。
[root@tp ~]# service iptables restart
现在IPTABLES配置表里什么配置都没有了,那我们开始我们的配置吧
(3)设定预设规则
[root@tp ~]# iptables -P OUTPUT ACCEPT
[root@tp ~]# iptables -P FORWARD DROP
上面的意思是,当超出了IPTABLES里filter表里的两个链规则(INPUT,FORWARD)时,不在这两个规则里的数据包怎么处理呢,那就是DROP(放弃).应该说这样配置是很安全的.我们要控制流入数据包。
而对于OUTPUT链,也就是流出的包我们不用做太多限制,而是采取ACCEPT,也就是说,不在着个规则里的包怎么办呢,那就是通过。
可以看出INPUT,FORWARD两个链采用的是允许什么包通过,而OUTPUT链采用的是不允许什么包通过。
这样设置还是挺合理的,当然你也可以三个链都DROP,但这样做我认为是没有必要的,而且要写的规则就会增加.但如果你只想要有限的几个规则是,如只做WEB服务器.还是推荐三个链都是DROP。
注:如果你是远程SSH登陆的话,当你输入第一个命令回车的时候就应该掉了.因为你没有设置任何规则。
(4)添加规则
首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链
为了能采用远程SSH登陆,我们要开启22端口.
[root@tp ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT (注:这个规则,如果你把OUTPUT 设置成DROP的就要写上这一句
其他的端口也一样,如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链:
[root@tp ~]# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT ,其他同理.)
如果做了WEB服务器,开启80端口.
[root@tp ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
如果做了邮件服务器,开启25,110端口.
[root@tp ~]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT
如果做了FTP服务器,开启21端口
[root@tp ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT
如果做了DNS服务器,开启53端口
[root@tp ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT
如果你还做了其他的服务器,需要开启哪个端口,照写就行了.
上面主要写的都是INPUT链,凡是不在上面的规则里的,都DROP
允许icmp包通过,也就是允许ping,
[root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)
[root@tp ~]# iptables -A INPUT -p icmp -j ACCEPT (INPUT设置成DROP的话)
允许loopback!(不然会导致DNS无法正常关闭等问题)
IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)
IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)
下面写OUTPUT链,OUTPUT链默认规则是ACCEPT,所以我们就写需要DROP(放弃)的链.
减少不安全的端口连接
[root@tp ~]# iptables -A OUTPUT -p tcp --dport 31337 -j DROP
有些些特洛伊木马会扫描端口31337到31340(即黑客语言中的 elite 端口)上的服务。既然合法服务都不使用这些非标准端口来通信,阻塞这些端口能够有效地减少你的网络上可能被感染的机器和它们的远程主服务器进行独立通信的机会
还有其他端口也一样,像:31335、27444、27665、20034 NetBus、9704、137-139(smb),2049(NFS)端口也应被禁止,我在这写的也不全,有兴趣的朋友应该去查一下相关资料.
当然出入更安全的考虑你也可以包OUTPUT链设置成DROP,那你添加的规则就多一些,就像上边添加
允许SSH登陆一样.照着写就行了.
限制到某台机器的规则。
如:我们只允许192.168.0.3的机器进行SSH连接
如果要允许,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.
24表示子网掩码数.但要记得把 /etc/sysconfig/iptables 里的这一行删了.
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 因为它表示所有地址都可以登陆.
或采用命令方式:
[root@tp ~]# iptables -D INPUT -p tcp --dport 22 -j ACCEPT
然后保存,我再说一边,反是采用命令的方式,只在当时生效,如果想要重起后也起作用,那就要保存.写入到/etc/sysconfig/iptables文件里.
[root@tp ~]# /etc/rc.d/init.d/iptables save
这样写 !192.168.0.3 表示除了192.168.0.3的ip地址
其他的规则连接也一样这么设置.
在下面就是FORWARD链,FORWARD链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链,对正在转发链的监控.
[root@tp ~]# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@tp ~]# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT
丢弃坏的TCP包
[root@tp ~]#iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP
处理IP碎片数量,防止攻击,允许每秒100个
[root@tp ~]#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包.
[root@tp ~]#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
我在前面只所以允许ICMP包通过,就是因为我在这里有限制.
二,配置一个NAT表放火墙
1,查看本机关于NAT的设置情况
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 192.168.0.0/24 anywhere to:211.101.46.235
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
我的NAT已经配置好了的(只是提供最简单的代理上网功能,还没有添加防火墙规则)。
当然你如果还没有配置NAT的话,你也不用清除规则,因为NAT在默认情况下是什么都没有的。
如果你想清除,命令是
[root@tp ~]# iptables -X -t nat
[root@tp ~]# iptables -Z -t nat
2,添加规则
添加基本的NAT地址转换
防止外网用内网IP欺骗
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP
如果我们想,比如阻止MSN,QQ,BT等的话,需要找到它们所用的端口或者IP,(个人认为没有太大必要)
例:
禁止与211.101.46.253的所有连接
[root@tp ~]# iptables -t nat -A PREROUTING -d 211.101.46.253 -j DROP
禁用FTP(21)端口
[root@tp ~]# iptables -t nat -A PREROUTING -p tcp --dport 21 -j DROP
这样写范围太大了,我们可以更精确的定义.
[root@tp ~]# iptables -t nat -A PREROUTING -p tcp --dport 21 -d 211.101.46.253 -j DROP
这样只禁用211.101.46.253地址的FTP连接,其他连接还可以.如web(80端口)连接.
按照我写的,你只要找到QQ,MSN等其他软件的IP地址,和端口,以及基于什么协议,只要照着写就行了.
最后:
[root@tp ~]# iptables -A INPUT -m state --state INVALID -j DROP
[root@tp ~]# iptables -A OUTPUT -m state --state INVALID -j DROP
[root@tp ~]# iptables-A FORWARD -m state --state INVALID -j DROP
[root@tp ~]# iptables-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@tp ~]# iptables-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.
[root@tp ~]# service iptables restart
您可能感兴趣的文章:
iptables 日志维护的方法分享
解析 iptables常用规则设置
iptables防火墙之limit限制方法分享
linux下关闭iptables防火墙及selinux的方法
使用iptables屏蔽IP段的方法举例
配置 iptables 静态防火墙
iptables实现路由转发的例子
iptables防火墙配置一例
一个实用的iptables shell脚本
iptables实例收藏
linux iptables 开启关闭端口的方法
linux iptables入门教程