Linux Networking and Security
Download
Report
Transcript Linux Networking and Security
SCSC 455 Computer Security
2011 Spring
Network Security
Control access to system
Access control mechanisms in specific network
programs
Control network traffic at network layer -- Firewall
e.g. 1, wu-FTP server support mulitple security directive in
/etc/ftpaccess
e.g. 2, Apache server: /etc/httpd.conf
operates at the lowest level of the networking protocol
stack.
examines and discards packets from unauthorized
systems before they have a chance to attack applications
Use advanced routing techniques
IP masquerading “Hides” LAN clients from hackers on the
Internet
Access control at different layers
Index
Linux firewall
NAT and proxy
Protect network traffic through encryption
Firewall
A firewall -- a packet filter
access control operating at the lowest level of the
networking protocol stack
Firewalls rely on rules
Rules: the configuration settings that define certain
characteristics of an IP package and the action to take for
packages meeting the specified criteria
Networking stacks in Linux are contained in the
kernel
gives Linux great control over network packet management
IP Chains
The IP Chains are a list of rules for how packets are
handled
Linux kernel includes three default chains
Input chains: packets coming from outside the system on which
the rule is executed pass through
Forward chains: packets coming from outside the system on
which the rule is executed and that need to be routed to another
system pass through
Output chains: Packets coming from within the system on which
the rule is executed and that are destined for other systems pass
through
User defined chains can be added.
IP Chains
Options in IP Chains
Options in IP Chains
Append a new rule to a chain (-A).
# ipchains -A input -s 127.0.0.1 -p icmp -j DENY
Insert a new rule at some position in a chain (-I).
# ipchains -I input 1 -j DENY
Delete the first rule that matches in a chain (-D).
# ipchains -D input -s 127.0.0.1 -p icmp -j DENY
Emptying all rules out of a chain, using the `-F' command.
# ipchains -F forward
List all the rules in a chain
# ipchains -L -n input
Options in IP Chains
-P: default policy for a chain
when a packet hits the end of a built-in chain, the
policy of the chain determines the fate of the
packet.
The policy can be any of the ACCEPT, DENY,
REJECT or MASQ. MASQ is only valid for the
`forward' chain.
E.g. # ipchains -P forward DENY
Options in IP Chains
-j “jump to” target
ACCEPT allows the packet through.
DENY drops the packet as if it had never been received.
REJECT
MASQ
tells the kernel to masquerade the packet.
For this to work, your kernel needs to be compiled with IP
Masquerading enabled.
REDIRECT
drops the packet, but (if it's not an ICMP packet) generates an ICMP
reply to the source to tell it that the destination was unreachable.
tells the kernel to send a packet to a local port instead of wherever it
was heading.
is only valid for packets traversing the input chain.
RETURN which is identical to falling off the end of the chain
immediately
ipchains Example
E.g.1
# ping 127.0.0.1
# ipchains -I input -s 127.0.0.1 -p icmp -j DENY
# ping 127.0.0.1
E.g. 2
#ipchains -A input –j DENY
#ipchains -A input –s 192.168.10.0/0 -j ACCEPT
Options in IP Chains
-i specifies the name of an interface to match.
An interface is the physical device the packet came in on,
or is going out on.
use the ifconfig command to list the interfaces which are `up'.
What is lo interface?
The lo interface is usually called the loopback interface.
If packets from a local process are destined for a local process,
they will go through the output chain with interface set to `lo', then
return through the input chain with interface also `lo'.
-p specifies the protocol
`TCP', `UDP' or `ICMP'.
Options in IP Chains
-s and –d specify the source and destination
Representing in full name, such as `localhost' or
`www.linuxhq.com'.
Representing in IP address such as `127.0.0.1'.
Representing as a group of IP addresses, such as
`199.95.207.0/24'
an extra argument indicating the TCP or UDP
port, or an (inclusive) range of ports
e.g., -p TCP -s 0.0.0.0/0 :1023
Options in IP Chains
! (inversion)
flags can have their arguments preceded by `!' to
match addresses NOT equal to the ones given.
E.g. 1, `-s ! localhost'
matches any packet not coming from localhost.
E.g. 2 -p TCP -d 0.0.0.0/0 ! www
to specify every TCP packet BUT a WWW packet,
How about the following?
-p TCP -d ! 192.168.1.1 www
-p TCP -d 192.168.1.1 ! www
-p TCP -d ! 192.168.1.1 ! www
What Not To Filter Out in ipchains
ICMP packets
ICMP packets are used to indicate failure for other
protocols (such as TCP and UDP).
Blocking these packets means that you will never get `Host
unreachable' or `No route to host' errors; any connections
will just wait for a reply that never comes.
TCP Connections to DNS (nameservers)
DNS doesn't always use UDP. If the reply from the server
exceeds 512 bytes, the client uses a TCP connection (still
going to port number 53) to get the data.
Graphical Firewall Configuration
Utilities
Linux supports several graphical tools that can be used
to set up a firewall
Red Hat Linux includes the lokkit program that walks you through
questions and establishes rules based on your security choices
Red Hat Linux also includes the firewall-config program, which
allows the set up of complex firewall rules
Graphical Firewall Configuration
Utilities – Lokkit (1)
Graphical Firewall Configuration
Utilities – Lokkit (2)
Graphical Firewall Configuration
Utilities – firewall-config (1)
Graphical Firewall Configuration
Utilities – firewall-config (2)
NetFilter / IP Tables
NetFilter
the new and improved Linux packet filtering
system and uses a different architecture than IP
Chains
provides hooks at five different points in packet
processing
A hook refers to the ability to connect another program
at that point
The list of rules associated with the hooks are similar
to IP Chains and are called IP Tables
Using NetFilter / IP Tables
NetFilter / IP Table provide:
The ability to act on packets based on their state –
stateful packets filtering
Examination and alteration of just about any header
field in a packet - packet mangling
Selection of packets to be logged based on the value
of any header field
Passing of packets to regular Linux programs for
further processing outside of the Linux kernel
Implementation of intelligent routing based on Quality
of Service (QoS) features
Index
Linux firewall
NAT and proxy
Protect network traffic through encryption
Network Address Translation and IP
masquerading
The IP Chains feature also provides a special
routing functionality -- Network Address
Translation (NAT)
NAT is a routing technique that alters address or
other header information in a packet
One popular type of NAT is IP masquerading
network address translation in which packets from
many computers on a LAN appear as if they came
from one computer.
IP masquerading
#ipchains -A forward -s 192.168.100.0/24 -j MASQ
NAT pros and cons
NAT pros: Using NAT, a single IP can permit an
entire LAN to connect to the Internet.
Behind the router, the same private IP addresses can be
reused on every LAN
A remote computer cannot connect to a client within a
masqueraded LAN. The router effectively hides the entire
LAN.
NAT cons: However, IP masquerading can make
some network services (FTP, IRC, streaming
audio) unworkable.
Q: Why?
To make these protocols work, additional kernel modules
for the specific protocols have to be installed.
Proxy Server
A proxy server is very similar to IP masquerading,
but the proxy works at the application level, not the
IP level
must configure each client on the LAN so that it use a
special port for the proxy (instead of using the default port)
E.g., “Squid” is a proxy server in Linux
Clients use 8080 or 8008 instead of the default web port 80
A proxy server provides security against outside
attacks by insulating clients.
let you control the access to the outside system
can cache the results (such as web pages) to improve
performance
Proxy server
Transparent proxy
Transparent proxy – IPchains or IPtables can
redirect packet based on the port to which the
packet is addressed
Is an alternative to using a proxy server
Do not need to configure the clients – the proxy
activity is “transparent” to the clients
All clients’ requests packets must pass through a gateway to
reach the Internet.
The router is configured to redirect some packets to a
particular port at the proxy server. The proxy server
masquerades these packets and send them out.
The proxy server also processes the received packet from
Internet and return them to a client.
Transparent Proxying
Index
Linux firewall
NAT and proxy
Protect network traffic through encryption
Encrypting Network Traffic
What we have covered:
The firewall restrict network traffic.
The special routing techniques isolates clients in a LAN
from the Internet
However, the contents of packets in LAN or through
Internet are visible to everyone.
With network analysis tool (a sniffer), the hackers can
view the packets.
The general strategy is encrypting the packets.
Some solutions:
Secure shell (SSH)
IPSec
( Note: IPsec operate at the network layer. more flexible, but more complex and
with higher overhead )
The Secure Shell (SSH)
The Secure Shell (SSH) package is a client-server
protocol similar to Telnet
A client program ssh and a server program sshd
SSH replaces Telnet and rlogin for better security
SSH use the same encryption techniques as GPG
1.
2.
3.
Exchange asymmetric keys to establish the identity of a
user requesting a connection
Pass a symmetric session key securely
Encrypt all subsequent traffic by symmetric session key.
OpenSSH
The OpenSSH implementation of the SSH is used
on most Linux distributions
OpenSSH is available to other OSs, such as UNIX,
Windows, Macintosh, PalmOS, …
A client program ssh & a server daemon sshd
$man ssh
$man sshd
SSH connections use port 22 by default
Make sure sshd daemon is running on the system to
which you want to connect. To check the status of the
sshd daemon
$/etc/rc.d/init.d/sshd
status
Make sure no firewall is blocking traffic on port 22 between
your client and server computer
SSH1 & SSH2
OpenSSH support two versions:
SSH1
uses a public key encryption system to authenticate
connections
But does NOT support strong symmetric encryption of
the subsequent traffic
SSH2
uses a more robust authentication process
supports strong encryption of all network traffic, such
as AES (128-, 192-, or 256-bit), Blowfish, CAST128.
Different Ways to Authenticate in SSH
Method 1. To rely on the r-utilites files
E.g., ~/.rhosts
Insecure not recommended
Method 2. To use passwords authentication
1.
2.
3.
4.
5.
Login a ssh server by user name and password on the server
$ ssh –l username server
Then you are prompted for the password
This method is much better than the rhost method or
unencrypted Telnet.
However, it does NOT provide public key authentication of the
session.
Use public key authentication in SSH
Method 3. To use public key authentication is a more
secure way to authenticate a connection in SSH
Must set up key pairs for your own user account
$ ssh-keygen -t rsa -b 2048
-t specify a key type (either RSA or DSA)
-b specify the key size (default is 1024 bits)
Your private key is stored in ~/.ssh/id_rsa and your public key is
stored in ~/.ssh/id_rsa.pub
Enter a passphrase to protect your ssh key pair
It is optional. You may choose to press Enter to leave the key pair
unprotected by a passphrase.
This decision depends on who else is using your computer and
how you intend to use ssh to access your account on remote
systems.
Use public key authentication in SSH (2)
Once a key pair generated on one account, you should
place the public key from that account in the
~/.ssh/authorized_keys file on each system where you
want to log in using ssh.
This can be done through scp, FTP, email or floppy
disk
e.g., copy from Alice’s PC /home/alice/.ssh/id_rsa.pub
to Bob’s PC
/home/bob/.ssh/authorized_keys
OpenSSH features
OpenSSH supports a number of useful features:
Replace telnet and rlogin
To secure connections for protocols not inherently secure
E.g., the X protocol for serving remote graphical applications
(The detailed steps on p505 are not required in this course.)
Port forwarding:
Is a routing technique that allows encryption of many other
protocols over SSH connections
E.g., SMTP, FTP, POP3, SWAT (The Samba Web
Administration Tool)
Example of Port forwarding in SSH
A system administrator wants to use SWAT to manage many
Samba servers on a large LAN from a single system client1.
However, using in SWAT in a browser, none of the traffic
(including the password you must enter) is encrypted.
Other Tunneling Protocols
The concept behind using SSH port forwarding
is that you can tunnel and insecure protocol
inside a secure protocol
The Point-to-Point Tunneling Protocol (PPTP) is
a standard for creating a virtual private network
(VPN)
Microsoft created PPTP
PPTP uses two communication channels between a
client and a server
a control channel and an encrypted data channel
Using stunnel section (P508 – 509) is NOT required in this course.
Tunneling an insecure protocol under
a secure protocol