Google


ADBRITE ads links
You are here: CodeIdol.com > Unix > Linux® Quick Fix > Windows, Linux, And Samba > How SWAT Makes Samba Simpler

SAVE
Digg
Shown on del.icio.us del.icio.us
See Whos Talking About This on Technorati Technorati
I've Reddit reddit

How SWAT Makes Samba Simpler

SWAT, Samba's Web-based configuration tool, enables you to configure your smb.conf file without needing to remember all the formatting. Each SWAT screen is actually a form that covers a separate section of the smb.conf file into which you fill in the desired parameters. For ease of use, each parameter box has its own online help. Figure 10.1 shows the main SWAT login screen.

Figure 10.1. Samba SWAT main menu.


Basic SWAT Setup

You must always remember that SWAT edits the smb.conf file but also strips out any comments you may have manually entered into it beforehand. The original Samba smb.conf file has many worthwhile comments in it, you should save a copy as a reference before proceeding with SWAT. For example, you could save the original file with the name /etc/samba/smb.conf.original, as in

     [root@bigboy tmp]# cp /etc/samba/smb.conf /etc/samba/smb.conf.original

As you can see, using SWAT requires some understanding of the smb.conf file parameters, because it eliminates these comments. Become familiar with the most important options in this file before proceeding with SWAT.

SWAT doesn't encrypt your login password. Because this could be a security concern in a corporate environment, you might want to create a Samba administrator user that has no root privileges or only enable SWAT access from the GUI console or localhost.

The enabling and disabling, starting and stopping of SWAT is controlled by xinetd, which is covered in Chapter 16, "Telnet, TFTP, and xinetd," via a configuration file named /etc/xinetd.d/swat. Here is a sample:

     service swat
     {
         port           = 901
         socket_type    = stream
         protocol       = tcp
         wait           = no
         user           = root
         server         = /usr/sbin/swat
         log_on_failure += USERID
         disable        = no
         only_from      = localhost
     }

The file's formatting is fairly easy to understand, especially as there are only two entries of interest.

  • The disable parameter must be set to no to accept connections. This can automatically be switched between yes and no, as you will see later.

  • The default configuration allows SWAT Web access from the VGA console only as user root on port 901 with the Linux root password. This means you'll have to enter http://127.0.0.0:901 in your browser to get the login screen.

You can make SWAT accessible from other servers by adding IP address entries to the only_from parameter of the SWAT configuration file. Here's an example of an entry to allow connections only from 192.168.1.3 and localhost. Notice that there are no commas between the entries.

     only_from = localhost 192.168.1.3

Therefore in this case you can also configure Samba on your Linux server bigboy IP with address 192.168.1.100 from PC 192.168.1.3 using the URL http://192.168.1.100:901.

Remember that most firewalls don't allow TCP port 901 through their filters. You may have to adjust your rules for this traffic to pass.

Controlling SWAT

As with all xinetd-controlled applications, the chkconfig command automatically modifies the disable field accordingly in the configuration file and activates the change.

To activate SWAT use

     [root@bigboy tmp] chkconfig swat on

To deactivate SWAT use

     [root@bigboy tmp] chkconfig swat off

Encrypting SWAT

By default SWAT is configured via an unencrypted Web link using the Linux root account. When running SWAT in the unsecured mode above you should take the added precaution of using it from the Linux console whenever possible.

You can configure SWAT to work only with securely encrypted HTTP (HTTPS) versus the regular HTTP method shown above. Here is how it's done. (Please refer to the VPN section of Appendix I, "Miscellaneous Linux Topics," for more details on encryption methods.)

Create an stunnel User

You can create a stunnel user via the useradd command:

     [root@smallfry tmp]# useradd stunnel

Create the Certificates

From the /usr/share/ssl/certs directory, you can create the encryption key certificate using the make command. Use all the defaults when prompted, but make sure you use the server's IP address when prompted for your server's Common Name or hostname.

     [root@bigboy tmp]# cd /usr/share/ssl/certs
     [root@bigboy certs]# make stunnel.pem
     ...
     Common Name (eg, your name or your server's hostname) []: 172.16.1.200
     ...
     [root@bigboy certs]#

The resulting certificate has only a 365 day lifetime. Remember to repeat this process next year.

Modify Certificate File Permissions

The certificate needs to only be read by root and the stunnel user. Use the chmod and chgrp commands to do this.

     [root@bigboy certs]# chmod 640 stunnel.pem
     [root@bigboy certs]# chgrp stunnel stunnel.pem

     [root@bigboy certs]# ll /usr/share/ssl/certs
     -rw-r----- 1 root stunnel    1991 Jul 31 21:50 stunnel.pem
     [root@bigboy certs]#

Create an /etc/stunnel/stunnel.conf Configuration File

You can configure the stunnel application to:

  • Intercept encrypted SSL traffic received on any TCP port

  • Decrypt this traffic

  • Funnel the unencrypted data to any application listening on another port.

For example, you can configure the /etc/stunnel/stunnel.conf file to intercept SSL traffic on the SWAT port 901 and funnel it decrypted to a SWAT daemon running on port 902. Here's how:

     # Configure stunnel to run as user "stunnel" placing temporary
     # files in the /home/stunnel/ directory
     chroot  = /home/stunnel/
     pid     = /stunnel.pid
     setuid  = stunnel
     setgid  = stunnel

     # Log all stunnel messages to /var/log/messages
     debug   = 7
     output  = /var/log/messages

     # Define where the SSL certificates can be found.
     Client  = no
     cert    = /usr/share/ssl/certs/stunnel.pem
     key     = /usr/share/ssl/certs/stunnel.pem

     # Accept SSL connections on port 901 and funnel it to
     # port 902 for swat.
     [swat]
     accept   = 901
     connect  = 902

Create a New /etc/xinetd.d File for Secure SWAT

To start, copy the swat file and name it swat-stunnel. Configure the new file to be enabled, listening on port 902 and accepting connections only from localhost. Also make sure that the service is set to swat-stunnel.

     [root@bigboy certs]# cd /etc/xinetd.d
     [root@bigboy xinetd.d]# cp swat swat-stunnel

Your new swat-tunnel file should look like this:

     service swat-stunnel
     {
             port            = 902
             socket_type     = stream
             wait            = no
             only_from       = 127.0.0.1
             user            = root
             server          = /usr/sbin/swat
             log_on_failure  += USERID
             disable         = no
             bind            = 127.0.0.1
     }

Edit the /etc/services File to Create a Secure SWAT Entry

The xinetd daemon searches the /etc/services file for ports and services that match those listed in each configuration file in the /etc/xinetd.d directory. If the daemon doesn't find a match, it ignores the configuration file.

You now have to edit /etc/services to include your new swat-stunnel file:

     swat-stunnel    902/tcp      # Samba Web Administration Tool (Stunnel)

Activate swat-stunnel

You can then start the new swat-stunnel application with the chkconfig command. You'll also need to shutdown regular SWAT beforehand.

     [root@bigboy xinetd.d]# chkconfig swat off
     [root@bigboy xinetd.d]# chkconfig swat-stunnel on
     Start stunnel

Now start stunnel for the encryption to take place:

     [root@bigboy xinetd.d]# stunnel

In Fedora Core 2, you may get a cryptonet error when starting stunnel, as in:

     Unable to open "/dev/cryptonet"

This is caused by an incompatibility with the hwcrypto RPM used for hardware- not software-based encryption. You need to uninstall hwcrypto to get stunnel to work correctly:

     [root@bigboy xinetd.d]# rpm -e hwcrypto

You then have to stop stunnel, restart xinetd, and start stunnel again. After this, stunnel should begin to function correctly. Unfortunately stunnel doesn't have a startup script in the /etc/init.d directory and needs to be terminated manually using the pkill command.

     [root@bigboy xinetd.d]# pkill stunnel
     [root@bigboy xinetd.d]# stunnel

Test Secure SWAT

Your Samba server should now be listening on both port 901 and 902 as shown in the netstat -an command that follows. The server will accept remote connections on port 901 only.

     [root@bigboy xinetd.d]# netstat -an
     ...
     ...
     tcp        0      0 0.0.0.0:901       0.0.0.0:*       LISTEN
     tcp        0      0 127.0.0.:902      0.0.0.0:*       LISTEN
     ...
     ...
     [root@bigboy xinetd.d]#

Test the Secure SWAT Login

Point your browser to the Samba server to make an HTTPS connection on port 901:

     https://server-ip-address:901/

You will be prompted for the Linux root user username and password. Expect a delay of about 60 to 75 seconds with each login.

Troubleshooting Secure SWAT

Sometimes you'll make mistakes in the stunnel.conf file, but changes to this file take effect only after stunnel has been restarted. Unfortunately, there is no stunnel script in the /etc/init.d directory to easily stop and restart it. You have to use the pkill command to stop it and the stunnel command to start it again:

     [root@bigboy tmp]# pkill stunnel ; stunnel

Make sure the file permissions and ownership on the stunnel.pem file are correct and that SWAT is always permanently off but swat-stunnel is permanently on.

You can also refer to Chapter 4, "Simple Network Troubleshooting," to isolate connectivity issues between the SWAT client and Samba server on TCP port 901 amongst other things.

As mentioned previously, stunnel doesn't start automatically when the system reboots because it doesn't have its own startup script. You will have to add the command stunnel in the /etc/rc.local file for this to occur.

How to Make SWAT Changes Immediate

SWAT immediately changes the functioning of Samba whenever you commit your changes through the Web GUI.

    SAVE
    Digg
    Shown on del.icio.us del.icio.us
    See Whos Talking About This on Technorati Technorati
    I've Reddit reddit

    You are here: CodeIdol.com > Unix > Linux® Quick Fix > Windows, Linux, And Samba > How SWAT Makes Samba Simpler
       
    Related tags







    Popular Categories
    Unix books and guides
    AJAX popular information
    C# language guides
    Windows books and cookbooks
    .......






    © CodeIdol Labs, 2007