diff --git a/core/modules/ban/ban.info.yml b/core/modules/ban/ban.info.yml
deleted file mode 100644
index 90581a7..0000000
--- a/core/modules/ban/ban.info.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-name: Ban
-type: module
-description: 'Enables banning of IP addresses.'
-package: Core
-version: VERSION
-core: 8.x
-configure: admin/config/people/ban
diff --git a/core/modules/ban/ban.install b/core/modules/ban/ban.install
deleted file mode 100644
index 7a5494f..0000000
--- a/core/modules/ban/ban.install
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/**
- * @file
- * Install, update and uninstall functions for the Ban module.
- */
-
-/**
- * Implements hook_schema().
- */
-function ban_schema() {
-  $schema['ban_ip'] = array(
-    'description' => 'Stores banned IP addresses.',
-    'fields' => array(
-      'iid' => array(
-        'description' => 'Primary Key: unique ID for IP addresses.',
-        'type' => 'serial',
-        'unsigned' => TRUE,
-        'not null' => TRUE,
-      ),
-      'ip' => array(
-        'description' => 'IP address',
-        'type' => 'varchar',
-        'length' => 40,
-        'not null' => TRUE,
-        'default' => '',
-      ),
-    ),
-    'indexes' => array(
-      'ip' => array('ip'),
-    ),
-    'primary key' => array('iid'),
-  );
-  return $schema;
-}
diff --git a/core/modules/ban/ban.module b/core/modules/ban/ban.module
deleted file mode 100644
index a703a75..0000000
--- a/core/modules/ban/ban.module
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/**
- * @file
- * Allows to ban individual IP addresses.
- */
-
-/**
- * Implements hook_help().
- */
-function ban_help($path, $arg) {
-  switch ($path) {
-    case 'admin/help#ban':
-      $output = '';
-      $output .= '<h3>' . t('About') . '</h3>';
-      $output .= '<p>' . t('The Ban module allows administrators to ban visits to their site from individual IP addresses. For more information, see <a href="@url">the online documentation for the Ban module</a>.', array('@url' => 'https://drupal.org/documentation/modules/ban')) . '</p>';
-      $output .= '<h3>' . t('Uses') . '</h3>';
-      $output .= '<dl>';
-      $output .= '<dt>' . t('Banning IP addresses') . '</dt>';
-      $output .= '<dd>' . t('Administrators can enter IP addresses to ban on the <a href="@bans">IP address bans</a> page.', array('@bans' => url('admin/config/people/ban'))) . '</dd>';
-      $output .= '</dl>';
-      return $output;
-
-    case 'admin/config/people/ban':
-      return '<p>' . t('IP addresses listed here are banned from your site. Banned addresses are completely forbidden from accessing the site and instead see a brief message explaining the situation.') . '</p>';
-  }
-}
-
-/**
- * Implements hook_permission().
- */
-function ban_permission() {
-  return array(
-    'ban IP addresses' => array(
-      'title' => t('Ban IP addresses'),
-    ),
-  );
-}
-
-/**
- * Implements hook_menu().
- */
-function ban_menu() {
-  $items['admin/config/people/ban'] = array(
-    'title' => 'IP address bans',
-    'description' => 'Manage banned IP addresses.',
-    'route_name' => 'ban_admin_page',
-    'weight' => 10,
-  );
-  $items['admin/config/people/ban/delete/%'] = array(
-    'title' => 'Delete IP address',
-    'route_name' => 'ban_delete',
-  );
-  return $items;
-}
diff --git a/core/modules/ban/ban.routing.yml b/core/modules/ban/ban.routing.yml
deleted file mode 100644
index 16c77ec..0000000
--- a/core/modules/ban/ban.routing.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-ban_admin_page:
-  pattern: '/admin/config/people/ban/{default_ip}'
-  defaults:
-    _form: '\Drupal\ban\Form\BanAdmin'
-    default_ip: ''
-  requirements:
-    _permission: 'ban IP addresses'
-
-ban_delete:
-  pattern: '/admin/config/people/ban/delete/{ban_id}'
-  defaults:
-    _form: '\Drupal\ban\Form\BanDelete'
-  requirements:
-    _permission: 'ban IP addresses'
diff --git a/core/modules/ban/ban.services.yml b/core/modules/ban/ban.services.yml
deleted file mode 100644
index 7f55ae6..0000000
--- a/core/modules/ban/ban.services.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-services:
-  ban.ip_manager:
-    class: Drupal\ban\BanIpManager
-    arguments: ['@database']
-  ban.subscriber:
-    class: Drupal\ban\EventSubscriber\BanSubscriber
-    tags:
-      - { name: event_subscriber }
-    arguments: ['@ban.ip_manager']
diff --git a/core/modules/ban/lib/Drupal/ban/BanIpManager.php b/core/modules/ban/lib/Drupal/ban/BanIpManager.php
deleted file mode 100644
index b17f1bb..0000000
--- a/core/modules/ban/lib/Drupal/ban/BanIpManager.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-
-/**
- * @file
- * Definition of Drupal\ban\BanIpManager.
- */
-
-namespace Drupal\ban;
-
-use Drupal\Core\Database\Connection;
-
-/**
- * Ban IP manager.
- */
-class BanIpManager {
-
-  /**
-   * The database connection used to check the IP against.
-   *
-   * @var \Drupal\Core\Database\Connection
-   */
-  protected $connection;
-
-  /**
-   * Construct the BanSubscriber.
-   *
-   * @param \Drupal\Core\Database\Connection $connection
-   *   The database connection which will be used to check the IP against.
-   */
-  public function __construct(Connection $connection) {
-    $this->connection = $connection;
-  }
-
-  /**
-   * Returns whether an IP address is blocked.
-   *
-   * @param string $ip
-   *   The IP address to check.
-   *
-   * @return bool
-   *   TRUE if access is denied, FALSE if access is allowed.
-   */
-  public function isDenied($ip) {
-    $denied = $this->connection
-      ->query('SELECT 1 FROM {ban_ip} WHERE ip = :ip', array(':ip' => $ip))
-      ->fetchField();
-    return (bool) $denied;
-  }
-
-  /**
-   * Returns if this IP address is banned.
-   *
-   * @param string $ip
-   *   The IP address to check.
-   *
-   * @return bool
-   *   TRUE if the IP address is banned, FALSE otherwise.
-   */
-  public function isBanned($ip) {
-    return (bool) $this->connection->query("SELECT * FROM {ban_ip} WHERE ip = :ip", array(':ip' => $ip))->fetchField();
-  }
-
-  /**
-   * Finds all banned IP addresses.
-   *
-   * @return \Drupal\Core\Database\StatementInterface
-   *   The result of the database query.
-   */
-  public function findAll() {
-    return $this->connection->query('SELECT * FROM {ban_ip}');
-  }
-
-  /**
-   * Bans an IP address.
-   *
-   * @param string $ip
-   *   The IP address to ban.
-   */
-  public function banIp($ip) {
-    $this->connection->insert('ban_ip')
-      ->fields(array('ip' => $ip))
-      ->execute();
-  }
-
-  /**
-   * Unbans an IP address.
-   *
-   * @param string $id
-   *   The IP address to unban.
-   */
-  public function unbanIp($id) {
-    $this->connection->delete('ban_ip')
-      ->condition('ip', $id)
-      ->execute();
-  }
-
-  /**
-   * Finds a banned IP address by its ID.
-   *
-   * @param int $ban_id
-   *   The ID for a banned IP address.
-   *
-   * @return string|false
-   *   Either the banned IP address or FALSE if none exist with that ID.
-   */
-  public function findById($ban_id) {
-    return $this->connection->query("SELECT ip FROM {ban_ip} WHERE iid = :iid", array(':iid' => $ban_id))->fetchField();
-  }
-
-}
diff --git a/core/modules/ban/lib/Drupal/ban/EventSubscriber/BanSubscriber.php b/core/modules/ban/lib/Drupal/ban/EventSubscriber/BanSubscriber.php
deleted file mode 100644
index 8d9f2ad..0000000
--- a/core/modules/ban/lib/Drupal/ban/EventSubscriber/BanSubscriber.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-/**
- * @file
- * Definition of Drupal\ban\EventSubscriber\BanSubscriber.
- */
-
-namespace Drupal\ban\EventSubscriber;
-
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-use Drupal\ban\BanIpManager;
-
-/**
- * Ban subscriber for controller requests.
- */
-class BanSubscriber implements EventSubscriberInterface {
-
-  /**
-   * The manager used to check the IP against.
-   *
-   * @var Drupal\ban\BanIpManager
-   */
-  protected $manager;
-
-  /**
-   * Construct the BanSubscriber.
-   *
-   * @param Drupal\ban\BanIpManager $manager
-   *   The manager used to check the IP against.
-   */
-  public function __construct(BanIpManager $manager) {
-    $this->manager = $manager;
-  }
-
-  /**
-   * Response with 403 if the visitor's IP adress is banned.
-   *
-   * @param Symfony\Component\HttpKernel\Event\GetResponseEvent $event
-   *   The Event to process.
-   */
-  public function onKernelRequestBannedIpCheck(GetResponseEvent $event) {
-    $ip = $event->getRequest()->getClientIp();
-    if ($this->manager->isDenied($ip)) {
-      $response = new Response('Sorry, ' . check_plain($ip) . ' has been banned.', 403);
-      $event->setResponse($response);
-    }
-  }
-
-  /**
-   * Registers the methods in this class that should be listeners.
-   *
-   * @return array
-   *   An array of event listener definitions.
-   */
-  static function getSubscribedEvents() {
-    $events[KernelEvents::REQUEST][] = array('onKernelRequestBannedIpCheck', 40);
-    return $events;
-  }
-
-}
diff --git a/core/modules/ban/lib/Drupal/ban/Form/BanAdmin.php b/core/modules/ban/lib/Drupal/ban/Form/BanAdmin.php
deleted file mode 100644
index 9e31af2..0000000
--- a/core/modules/ban/lib/Drupal/ban/Form/BanAdmin.php
+++ /dev/null
@@ -1,137 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\ban\Form\BanAdmin.
- */
-
-namespace Drupal\ban\Form;
-
-use Drupal\Core\Controller\ControllerInterface;
-use Drupal\Core\Form\FormInterface;
-use Drupal\ban\BanIpManager;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-
-/**
- * Displays banned IP addresses.
- */
-class BanAdmin implements FormInterface, ControllerInterface {
-
-  /**
-   * @var \Drupal\ban\BanIpManager
-   */
-  protected $ipManager;
-
-  /**
-   * The request object.
-   *
-   * @var \Symfony\Component\HttpFoundation\Request
-   */
-  protected $request;
-
-  /**
-   * Constructs a new BanAdmin object.
-   *
-   * @param \Drupal\ban\BanIpManager $ip_manager
-   */
-  public function __construct(BanIpManager $ip_manager) {
-    $this->ipManager = $ip_manager;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public static function create(ContainerInterface $container) {
-    return new static(
-      $container->get('ban.ip_manager')
-    );
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getFormID() {
-    return 'ban_ip_form';
-  }
-
-  /**
-   * {@inheritdoc}
-   *
-   * @param string $default_ip
-   *   (optional) IP address to be passed on to drupal_get_form() for use as the
-   *   default value of the IP address form field.
-   */
-  public function buildForm(array $form, array &$form_state, Request $request = NULL, $default_ip = '') {
-    $this->request = $request;
-    $rows = array();
-    $header = array(t('banned IP addresses'), t('Operations'));
-    $result = $this->ipManager->findAll();
-    foreach ($result as $ip) {
-      $row = array();
-      $row[] = $ip->ip;
-      $links = array();
-      $links['delete'] = array(
-        'title' => t('delete'),
-        'href' => "admin/config/people/ban/delete/$ip->iid",
-      );
-      $row[] = array(
-        'data' => array(
-          '#type' => 'operations',
-          '#links' => $links,
-        ),
-      );
-      $rows[] = $row;
-    }
-
-    $form['ip'] = array(
-      '#title' => t('IP address'),
-      '#type' => 'textfield',
-      '#size' => 48,
-      '#maxlength' => 40,
-      '#default_value' => $default_ip,
-      '#description' => t('Enter a valid IP address.'),
-    );
-    $form['actions'] = array('#type' => 'actions');
-    $form['actions']['submit'] = array(
-      '#type' => 'submit',
-      '#value' => t('Add'),
-    );
-
-    $form['ban_ip_banning_table'] = array(
-      '#theme' => 'table',
-      '#header' => $header,
-      '#rows' => $rows,
-      '#empty' => t('No blocked IP addresses available.'),
-      '#weight' => 120,
-    );
-    return $form;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function validateForm(array &$form, array &$form_state) {
-    $ip = trim($form_state['values']['ip']);
-    if ($this->ipManager->isBanned($ip)) {
-      form_set_error('ip', t('This IP address is already banned.'));
-    }
-    elseif ($ip == $this->request->getClientIP()) {
-      form_set_error('ip', t('You may not ban your own IP address.'));
-    }
-    elseif (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE) == FALSE) {
-      form_set_error('ip', t('Enter a valid IP address.'));
-    }
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function submitForm(array &$form, array &$form_state) {
-    $ip = trim($form_state['values']['ip']);
-    $this->ipManager->banIp($ip);
-    drupal_set_message(t('The IP address %ip has been banned.', array('%ip' => $ip)));
-    $form_state['redirect'] = 'admin/config/people/ban';
-  }
-
-}
diff --git a/core/modules/ban/lib/Drupal/ban/Form/BanDelete.php b/core/modules/ban/lib/Drupal/ban/Form/BanDelete.php
deleted file mode 100644
index ac1aa91..0000000
--- a/core/modules/ban/lib/Drupal/ban/Form/BanDelete.php
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\ban\Form\BanDelete.
- */
-
-namespace Drupal\ban\Form;
-
-use Drupal\Core\Controller\ControllerInterface;
-use Drupal\Core\Form\ConfirmFormBase;
-use Drupal\ban\BanIpManager;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
-
-/**
- * Provides a form to unban IP addresses.
- */
-class BanDelete extends ConfirmFormBase implements ControllerInterface {
-
-  /**
-   * The banned IP address.
-   *
-   * @var string
-   */
-  protected $banIp;
-
-  /**
-   * Constructs a new BanDelete object.
-   *
-   * @param \Drupal\ban\BanIpManager $ip_manager
-   */
-  public function __construct(BanIpManager $ip_manager) {
-    $this->ipManager = $ip_manager;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public static function create(ContainerInterface $container) {
-    return new static(
-      $container->get('ban.ip_manager')
-    );
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getFormID() {
-    return 'ban_ip_delete_form';
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getQuestion() {
-    return t('Are you sure you want to unblock %ip?', array('%ip' => $this->banIp));
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getConfirmText() {
-    return t('Delete');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getCancelPath() {
-    return 'admin/config/people/ban';
-  }
-
-  /**
-   * {@inheritdoc}
-   *
-   * @param string $ban_id
-   *   The IP address record ID to unban.
-   */
-  public function buildForm(array $form, array &$form_state, $ban_id = '', Request $request = NULL) {
-    if (!$this->banIp = $this->ipManager->findById($ban_id)) {
-      throw new NotFoundHttpException();
-    }
-    return parent::buildForm($form, $form_state, $request);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function submitForm(array &$form, array &$form_state) {
-    $this->ipManager->unbanIp($this->banIp);
-    watchdog('user', 'Deleted %ip', array('%ip' => $this->banIp));
-    drupal_set_message(t('The IP address %ip was deleted.', array('%ip' => $this->banIp)));
-    $form_state['redirect'] = 'admin/config/people/ban';
-  }
-
-}
diff --git a/core/modules/ban/lib/Drupal/ban/Tests/IpAddressBlockingTest.php b/core/modules/ban/lib/Drupal/ban/Tests/IpAddressBlockingTest.php
deleted file mode 100644
index 8009de3..0000000
--- a/core/modules/ban/lib/Drupal/ban/Tests/IpAddressBlockingTest.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-/**
- * @file
- * Definition of Drupal\ban\Tests\IpAddressBlockingTest.
- */
-
-namespace Drupal\ban\Tests;
-
-use Drupal\simpletest\WebTestBase;
-
-class IpAddressBlockingTest extends WebTestBase {
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = array('ban');
-
-  public static function getInfo() {
-    return array(
-      'name' => 'IP address banning',
-      'description' => 'Test IP address banning.',
-      'group' => 'Ban',
-    );
-  }
-
-  /**
-   * Tests various user input to confirm correct validation and saving of data.
-   */
-  function testIPAddressValidation() {
-    // Create user.
-    $admin_user = $this->drupalCreateUser(array('ban IP addresses'));
-    $this->drupalLogin($admin_user);
-    $this->drupalGet('admin/config/people/ban');
-
-    // Ban a valid IP address.
-    $edit = array();
-    $edit['ip'] = '192.168.1.1';
-    $this->drupalPost('admin/config/people/ban', $edit, t('Add'));
-    $ip = db_query("SELECT iid from {ban_ip} WHERE ip = :ip", array(':ip' => $edit['ip']))->fetchField();
-    $this->assertTrue($ip, 'IP address found in database.');
-    $this->assertRaw(t('The IP address %ip has been banned.', array('%ip' => $edit['ip'])), 'IP address was banned.');
-
-    // Try to block an IP address that's already blocked.
-    $edit = array();
-    $edit['ip'] = '192.168.1.1';
-    $this->drupalPost('admin/config/people/ban', $edit, t('Add'));
-    $this->assertText(t('This IP address is already banned.'));
-
-    // Try to block a reserved IP address.
-    $edit = array();
-    $edit['ip'] = '255.255.255.255';
-    $this->drupalPost('admin/config/people/ban', $edit, t('Add'));
-    $this->assertText(t('Enter a valid IP address.'));
-
-    // Try to block a reserved IP address.
-    $edit = array();
-    $edit['ip'] = 'test.example.com';
-    $this->drupalPost('admin/config/people/ban', $edit, t('Add'));
-    $this->assertText(t('Enter a valid IP address.'));
-
-    // Submit an empty form.
-    $edit = array();
-    $edit['ip'] = '';
-    $this->drupalPost('admin/config/people/ban', $edit, t('Add'));
-    $this->assertText(t('Enter a valid IP address.'));
-
-    // Pass an IP address as a URL parameter and submit it.
-    $submit_ip = '1.2.3.4';
-    $this->drupalPost('admin/config/people/ban/' . $submit_ip, NULL, t('Add'));
-    $ip = db_query("SELECT iid from {ban_ip} WHERE ip = :ip", array(':ip' => $submit_ip))->fetchField();
-    $this->assertTrue($ip, 'IP address found in database');
-    $this->assertRaw(t('The IP address %ip has been banned.', array('%ip' => $submit_ip)), 'IP address was banned.');
-
-    // Submit your own IP address. This fails, although it works when testing
-    // manually.
-    // TODO: On some systems this test fails due to a bug/inconsistency in cURL.
-    // $edit = array();
-    // $edit['ip'] = \Drupal::request()->getClientIP();
-    // $this->drupalPost('admin/config/people/ban', $edit, t('Save'));
-    // $this->assertText(t('You may not ban your own IP address.'));
-  }
-}
